diff options
author | Florian Thienel | 2016-03-25 12:58:26 +0000 |
---|---|---|
committer | Florian Thienel | 2016-03-25 12:59:51 +0000 |
commit | 49389d99f3f06683861590faaf65a2c4b472855d (patch) | |
tree | 4a690fffedd7dbc7d3f1f8febaf08076c4ac4ad6 /org.eclipse.vex.ui/src | |
parent | 972ba3311f1bd3c7f07a4015b2b03a02b2ced119 (diff) | |
download | org.eclipse.mylyn.docs.vex-49389d99f3f06683861590faaf65a2c4b472855d.tar.gz org.eclipse.mylyn.docs.vex-49389d99f3f06683861590faaf65a2c4b472855d.tar.xz org.eclipse.mylyn.docs.vex-49389d99f3f06683861590faaf65a2c4b472855d.zip |
introduce a feature toggle preference to activate the new box model
Signed-off-by: Florian Thienel <florian@thienel.org>
Diffstat (limited to 'org.eclipse.vex.ui/src')
7 files changed, 49 insertions, 12 deletions
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java index 4253f81d..717ab8b2 100644 --- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java +++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java @@ -53,7 +53,7 @@ import org.eclipse.vex.core.internal.css.StyleSheetReader; import org.eclipse.vex.core.internal.io.UniversalTestDocument; import org.eclipse.vex.core.internal.visualization.CssBasedBoxModelBuilder; import org.eclipse.vex.core.internal.widget.CssTableModel; -import org.eclipse.vex.core.internal.widget.swt.BoxWidget; +import org.eclipse.vex.core.internal.widget.swt.XmlDocumentEditor; import org.eclipse.vex.core.internal.widget.swt.IVexSelection; import org.eclipse.vex.core.provisional.dom.ContentRange; import org.eclipse.vex.core.provisional.dom.IContent; @@ -74,7 +74,7 @@ public class BoxDemoView extends ViewPart { private static final IPath CSS_WORKSPACE_FILE = new Path("/test/box-demo.css"); private Composite boxWidgetParent; - private BoxWidget boxWidget; + private XmlDocumentEditor boxWidget; private IDocument document; private Label offsetLabel; @@ -156,7 +156,7 @@ public class BoxDemoView extends ViewPart { boxWidget = null; cleanStaleReferenceInShell(); } - boxWidget = new BoxWidget(boxWidgetParent, SWT.V_SCROLL); + boxWidget = new XmlDocumentEditor(boxWidgetParent, SWT.V_SCROLL); document = UniversalTestDocument.createTestDocumentWithAllFeatures(SAMPLE_COUNT); boxWidget.setDocument(document); diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/VexPreferences.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/VexPreferences.java index 643184ac..addd3a4c 100644 --- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/VexPreferences.java +++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/VexPreferences.java @@ -40,6 +40,8 @@ public class VexPreferences implements IStyleSheetProvider { public static final String LINE_WIDTH = "lineWidth";
+ public static final String EXPERIMENTAL_USE_NEW_BOX_MODEL = "useNewBoxmodel";
+
private static final String PREFERRED_STYLE_SUFFIX = ".style";
private final IPreferenceStore preferenceStore;
@@ -88,6 +90,10 @@ public class VexPreferences implements IStyleSheetProvider { return preferenceStore.getInt(LINE_WIDTH);
}
+ public boolean getUseNewBoxModel() {
+ return preferenceStore.getBoolean(EXPERIMENTAL_USE_NEW_BOX_MODEL);
+ }
+
@Override
public StyleSheet getStyleSheet(final DocumentContentModel documentContentModel) {
Style style = null;
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/VexEditor.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/VexEditor.java index 343fd12f..5dfbce86 100644 --- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/VexEditor.java +++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/VexEditor.java @@ -102,8 +102,10 @@ import org.eclipse.vex.core.internal.validator.WTPVEXValidator; import org.eclipse.vex.core.internal.visualization.CssBasedBoxModelBuilder; import org.eclipse.vex.core.internal.widget.CssTableModel; import org.eclipse.vex.core.internal.widget.IDocumentEditor; -import org.eclipse.vex.core.internal.widget.swt.BoxWidget; +import org.eclipse.vex.core.internal.widget.swt.BaseXmlDocumentEditor; +import org.eclipse.vex.core.internal.widget.swt.XmlDocumentEditor; import org.eclipse.vex.core.internal.widget.swt.IVexSelection; +import org.eclipse.vex.core.internal.widget.swt.VexWidget; import org.eclipse.vex.core.provisional.dom.AttributeChangeEvent; import org.eclipse.vex.core.provisional.dom.BaseNodeVisitorWithResult; import org.eclipse.vex.core.provisional.dom.ContentChangeEvent; @@ -161,6 +163,8 @@ public class VexEditor extends EditorPart { */ public static final String ID = "org.eclipse.vex.ui.internal.editor.VexEditor"; //$NON-NLS-1$ + private boolean useNewBoxModel; + private final boolean debugging; private final ConfigurationRegistry configurationRegistry; private final VexPreferences preferences; @@ -173,7 +177,7 @@ public class VexEditor extends EditorPart { private IDocument document; private Style style; - private BoxWidget editorWidget; + private BaseXmlDocumentEditor editorWidget; private boolean dirty; @@ -814,6 +818,9 @@ public class VexEditor extends EditorPart { document.addDocumentListener(documentListener); editorWidget.setBoxModelBuilder(new CssBasedBoxModelBuilder(style.getStyleSheet())); + if (!useNewBoxModel) { + ((VexWidget) editorWidget).setStyleSheet(style.getStyleSheet()); + } editorWidget.setWhitespacePolicy(reader.getWhitespacePolicy()); editorWidget.setTableModel(new CssTableModel(style.getStyleSheet())); editorWidget.setDocument(document); @@ -886,6 +893,9 @@ public class VexEditor extends EditorPart { this.style = style; if (editorWidget != null) { editorWidget.setBoxModelBuilder(new CssBasedBoxModelBuilder(style.getStyleSheet())); + if (!useNewBoxModel) { + ((VexWidget) editorWidget).setStyleSheet(style.getStyleSheet()); + } editorWidget.setWhitespacePolicy(new CssWhitespacePolicy(style.getStyleSheet())); editorWidget.setTableModel(new CssTableModel(style.getStyleSheet())); preferences.setPreferredStyleId(doctype, style.getUniqueId()); @@ -983,7 +993,12 @@ public class VexEditor extends EditorPart { gd.horizontalAlignment = GridData.FILL; gd.verticalAlignment = GridData.FILL; - editorWidget = new BoxWidget(parentControl, SWT.V_SCROLL); + useNewBoxModel = preferences.getUseNewBoxModel(); + if (useNewBoxModel) { + editorWidget = new XmlDocumentEditor(parentControl, SWT.V_SCROLL); + } else { + editorWidget = new VexWidget(parentControl, SWT.V_SCROLL); + } gd = new GridData(); gd.grabExcessHorizontalSpace = true; gd.grabExcessVerticalSpace = true; @@ -1025,6 +1040,9 @@ public class VexEditor extends EditorPart { // Let's just hold on to it in case it comes back later } else { editorWidget.setBoxModelBuilder(new CssBasedBoxModelBuilder(style.getStyleSheet())); + if (!useNewBoxModel) { + ((VexWidget) editorWidget).setStyleSheet(style.getStyleSheet()); + } editorWidget.setWhitespacePolicy(new CssWhitespacePolicy(style.getStyleSheet())); editorWidget.setTableModel(new CssTableModel(style.getStyleSheet())); style = newStyle; diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/DocumentOutlinePage.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/DocumentOutlinePage.java index ab64d90c..5169cc03 100644 --- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/DocumentOutlinePage.java +++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/DocumentOutlinePage.java @@ -38,7 +38,7 @@ import org.eclipse.ui.part.Page; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import org.eclipse.vex.core.internal.css.StyleSheet; import org.eclipse.vex.core.internal.widget.IDocumentEditor; -import org.eclipse.vex.core.internal.widget.swt.BoxWidget; +import org.eclipse.vex.core.internal.widget.swt.BaseXmlDocumentEditor; import org.eclipse.vex.core.provisional.dom.AttributeChangeEvent; import org.eclipse.vex.core.provisional.dom.ContentChangeEvent; import org.eclipse.vex.core.provisional.dom.IAttribute; @@ -271,8 +271,8 @@ public class DocumentOutlinePage extends Page implements IContentOutlinePage { @Override public void selectionChanged(final SelectionChangedEvent event) { - if (event.getSource() instanceof BoxWidget) { - final BoxWidget vexWidget = (BoxWidget) event.getSource(); + if (event.getSource() instanceof BaseXmlDocumentEditor) { + final BaseXmlDocumentEditor vexWidget = (BaseXmlDocumentEditor) event.getSource(); if (vexWidget.isFocusControl() && getTreeViewer() != null) { final INode element = vexWidget.getCurrentNode(); diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/preferences/PreferenceInitializer.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/preferences/PreferenceInitializer.java index 61d23184..62c4d013 100644 --- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/preferences/PreferenceInitializer.java +++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/preferences/PreferenceInitializer.java @@ -1,3 +1,13 @@ +/******************************************************************************* + * Copyright (c) 2012 Florian Thienel and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Thienel - initial API and implementation + *******************************************************************************/ package org.eclipse.vex.ui.internal.preferences; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; @@ -13,6 +23,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer { store.setDefault(VexPreferences.INDENTATION_CHAR_CHOICE, "\t"); store.setDefault(VexPreferences.INDENTATION_SIZE, 1); store.setDefault(VexPreferences.LINE_WIDTH, 72); + store.setDefault(VexPreferences.EXPERIMENTAL_USE_NEW_BOX_MODEL, false); } } diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/preferences/RootPreferencePage.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/preferences/RootPreferencePage.java index 30ef7583..c6528c9a 100644 --- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/preferences/RootPreferencePage.java +++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/preferences/RootPreferencePage.java @@ -1,5 +1,6 @@ package org.eclipse.vex.ui.internal.preferences; +import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.IntegerFieldEditor; import org.eclipse.jface.preference.RadioGroupFieldEditor; @@ -21,6 +22,7 @@ public class RootPreferencePage extends FieldEditorPreferencePage implements IWo addField(new RadioGroupFieldEditor(VexPreferences.INDENTATION_CHAR_CHOICE, "Indentation", 1, new String[][] { { "Indent using tabs", VexPreferences.INDENTATION_CHAR_TAB }, { "Indent using spaces", VexPreferences.INDENTATION_CHAR_SPACE } }, getFieldEditorParent())); addField(new IntegerFieldEditor(VexPreferences.INDENTATION_SIZE, "Indentation size:", getFieldEditorParent())); + addField(new BooleanFieldEditor(VexPreferences.EXPERIMENTAL_USE_NEW_BOX_MODEL, "Use new box model (EXPERIMENTAL)", getFieldEditorParent())); } @Override diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/views/DebugViewPage.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/views/DebugViewPage.java index 8d8adc6e..e3648e9c 100644 --- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/views/DebugViewPage.java +++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/views/DebugViewPage.java @@ -39,7 +39,7 @@ import org.eclipse.ui.part.IPageBookViewPage; import org.eclipse.ui.part.IPageSite; import org.eclipse.vex.core.internal.core.Rectangle; import org.eclipse.vex.core.internal.layout.Box; -import org.eclipse.vex.core.internal.widget.swt.BoxWidget; +import org.eclipse.vex.core.internal.widget.swt.BaseXmlDocumentEditor; import org.eclipse.vex.core.provisional.dom.ContentPosition; import org.eclipse.vex.core.provisional.dom.ContentRange; import org.eclipse.vex.core.provisional.dom.IDocument; @@ -135,7 +135,7 @@ class DebugViewPage implements IPageBookViewPage { private IPageSite site; private final VexEditor editorPart; - private BoxWidget documentEditor; + private BaseXmlDocumentEditor documentEditor; private Composite composite; private Label loadingLabel; @@ -160,7 +160,7 @@ class DebugViewPage implements IPageBookViewPage { loadingLabel = null; } - documentEditor = (BoxWidget) editorPart.getVexWidget(); + documentEditor = (BaseXmlDocumentEditor) editorPart.getVexWidget(); final GridLayout layout = new GridLayout(); layout.numColumns = 1; |