Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Thienel2016-01-14 19:46:55 +0000
committerFlorian Thienel2016-01-14 19:46:55 +0000
commitc5b9324f39f79e690041a021daebb2a3d5857be4 (patch)
treef43a15c5cfac24950e261b075ed3d55c9579263a /org.eclipse.vex.ui/src
parent847efaf4326d19d415a2b3c8985046e7ccb71a26 (diff)
downloadorg.eclipse.mylyn.docs.vex-c5b9324f39f79e690041a021daebb2a3d5857be4.tar.gz
org.eclipse.mylyn.docs.vex-c5b9324f39f79e690041a021daebb2a3d5857be4.tar.xz
org.eclipse.mylyn.docs.vex-c5b9324f39f79e690041a021daebb2a3d5857be4.zip
use BoxWidget instead of VexWidget in VexEditor
Signed-off-by: Florian Thienel <florian@thienel.org>
Diffstat (limited to 'org.eclipse.vex.ui/src')
-rw-r--r--org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java2
-rw-r--r--org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/DocumentContextSourceProvider.java11
-rw-r--r--org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/VexEditor.java79
3 files changed, 52 insertions, 40 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 6876cda3..cbfaf726 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
@@ -51,6 +51,7 @@ import org.eclipse.vex.core.internal.css.StyleSheet;
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.IVexSelection;
import org.eclipse.vex.core.provisional.dom.ContentRange;
@@ -160,6 +161,7 @@ public class BoxDemoView extends ViewPart {
final StyleSheet styleSheet = readStyleSheet();
boxWidget.setBoxModelBuilder(new CssBasedBoxModelBuilder(styleSheet));
boxWidget.setWhitespacePolicy(new CssWhitespacePolicy(styleSheet));
+ boxWidget.setTableModel(new CssTableModel(styleSheet));
boxWidgetParent.layout();
boxWidget.addSelectionChangedListener(selectionChangedListener);
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/DocumentContextSourceProvider.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/DocumentContextSourceProvider.java
index 8ba251a5..dfc0abe7 100644
--- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/DocumentContextSourceProvider.java
+++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/editor/DocumentContextSourceProvider.java
@@ -16,6 +16,7 @@ import java.util.Map;
import org.eclipse.ui.AbstractSourceProvider;
import org.eclipse.ui.ISources;
import org.eclipse.vex.core.internal.core.Rectangle;
+import org.eclipse.vex.core.internal.widget.IDocumentEditor;
import org.eclipse.vex.core.internal.widget.swt.VexWidget;
import org.eclipse.vex.core.provisional.dom.BaseNodeVisitorWithResult;
import org.eclipse.vex.core.provisional.dom.IComment;
@@ -110,17 +111,17 @@ public class DocumentContextSourceProvider extends AbstractSourceProvider {
/**
* Synchronizes the variable values which will be exposed by this service with the specified {@link VexWidget}.
*
- * @param widget
+ * @param editor
* the Vex widget containing the actual states
* @param caretArea
* TODO
*/
- public void fireUpdate(final VexWidget widget, final Rectangle caretArea) {
+ public void fireUpdate(final IDocumentEditor editor, final Rectangle caretArea) {
final Map<String, Object> changes = new HashMap<String, Object>();
- final RowColumnInfo rowColumnInfo = VexHandlerUtil.getRowColumnInfo(widget);
+ final RowColumnInfo rowColumnInfo = VexHandlerUtil.getRowColumnInfo(editor);
// column
- final int columnIndex = VexHandlerUtil.getCurrentColumnIndex(widget);
+ final int columnIndex = VexHandlerUtil.getCurrentColumnIndex(editor);
final int columnCount = rowColumnInfo == null ? -1 : rowColumnInfo.maxColumnCount;
isColumn = update(changes, isColumn, columnIndex != -1, IS_COLUMN);
isFirstColumn = update(changes, isFirstColumn, columnIndex == 0, IS_FIRST_COLUMN);
@@ -134,7 +135,7 @@ public class DocumentContextSourceProvider extends AbstractSourceProvider {
isLastRow = update(changes, isLastRow, rowIndex == rowCount - 1, IS_LAST_ROW);
// nodes
- final INode selectedNode = widget.getCurrentNode();
+ final INode selectedNode = editor.getCurrentNode();
if (!selectedNode.equals(currentNode)) {
// No need to evaluate if the node has not changed
currentNode = selectedNode;
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 22a42047..f6c2e7dc 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
@@ -100,9 +100,10 @@ import org.eclipse.vex.core.internal.dom.DocumentTextPosition;
import org.eclipse.vex.core.internal.io.DocumentReader;
import org.eclipse.vex.core.internal.io.DocumentWriter;
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.VexWidget;
+import org.eclipse.vex.core.internal.widget.swt.BoxWidget;
import org.eclipse.vex.core.provisional.dom.AttributeChangeEvent;
import org.eclipse.vex.core.provisional.dom.BaseNodeVisitorWithResult;
import org.eclipse.vex.core.provisional.dom.ContentChangeEvent;
@@ -172,7 +173,7 @@ public class VexEditor extends EditorPart {
private IDocument document;
private Style style;
- private VexWidget vexWidget;
+ private BoxWidget editorWidget;
private boolean dirty;
@@ -467,8 +468,8 @@ public class VexEditor extends EditorPart {
jFaceDoc.removePosition(positionOfCurrentNode);
}
- positionOfCurrentNode = createDocumentWriter().write(document, doc, vexWidget.getCurrentNode());
- positionOfCurrentNode.setOffsetInNode(vexWidget.getCaretPosition().getOffset() - vexWidget.getCurrentNode().getStartPosition().getOffset());
+ positionOfCurrentNode = createDocumentWriter().write(document, doc, editorWidget.getCurrentNode());
+ positionOfCurrentNode.setOffsetInNode(editorWidget.getCaretPosition().getOffset() - editorWidget.getCurrentNode().getStartPosition().getOffset());
try {
jFaceDoc.addPosition(positionOfCurrentNode);
@@ -485,7 +486,7 @@ public class VexEditor extends EditorPart {
private DocumentWriter createDocumentWriter() {
final DocumentWriter result = new DocumentWriter();
- result.setWhitespacePolicy(vexWidget.getWhitespacePolicy());
+ result.setWhitespacePolicy(editorWidget.getWhitespacePolicy());
result.setIndent(preferences.getIndentationPattern());
result.setWrapColumn(preferences.getLineWidth());
return result;
@@ -529,7 +530,7 @@ public class VexEditor extends EditorPart {
* Returns the VexWidget that implements this editor.
*/
public IDocumentEditor getVexWidget() {
- return vexWidget;
+ return editorWidget;
}
public void gotoMarker(final IMarker marker) {
@@ -649,8 +650,8 @@ public class VexEditor extends EditorPart {
@Override
public void setFocus() {
- if (vexWidget != null) {
- vexWidget.setFocus();
+ if (editorWidget != null) {
+ editorWidget.setFocus();
setStatus(getLocationPath());
}
}
@@ -704,7 +705,7 @@ public class VexEditor extends EditorPart {
VexDocumentContentModel documentContentModel;
try {
- if (vexWidget != null) {
+ if (editorWidget != null) {
vexEditorListeners.fireEvent("documentUnloaded", new VexEditorEvent(this)); //$NON-NLS-1$
}
if (document != null) {
@@ -801,16 +802,16 @@ public class VexEditor extends EditorPart {
document.addDocumentListener(documentListener);
- vexWidget.setDebugging(debugging);
- vexWidget.setWhitespacePolicy(reader.getWhitespacePolicy());
- vexWidget.setTableModel(new CssTableModel(style.getStyleSheet()));
- vexWidget.setDocument(document, style.getStyleSheet());
- vexWidget.setReadOnly(isEditorInputReadOnly());
+ editorWidget.setBoxModelBuilder(new CssBasedBoxModelBuilder(style.getStyleSheet()));
+ editorWidget.setWhitespacePolicy(reader.getWhitespacePolicy());
+ editorWidget.setTableModel(new CssTableModel(style.getStyleSheet()));
+ editorWidget.setDocument(document);
+ editorWidget.setReadOnly(isEditorInputReadOnly());
final INode nodeAtCaret = reader.getNodeAtCaret();
if (nodeAtCaret != null) {
final int offsetInNode = Math.min(nodeAtCaret.getStartOffset() + positionOfCurrentNode.getOffsetInNode(), nodeAtCaret.getEndOffset());
- vexWidget.moveTo(new ContentPosition(document, offsetInNode));
+ editorWidget.moveTo(new ContentPosition(document, offsetInNode));
}
loaded = true;
@@ -872,8 +873,10 @@ public class VexEditor extends EditorPart {
*/
public void setStyle(final Style style) {
this.style = style;
- if (vexWidget != null) {
- vexWidget.setStyleSheet(style.getStyleSheet());
+ if (editorWidget != null) {
+ editorWidget.setBoxModelBuilder(new CssBasedBoxModelBuilder(style.getStyleSheet()));
+ editorWidget.setWhitespacePolicy(new CssWhitespacePolicy(style.getStyleSheet()));
+ editorWidget.setTableModel(new CssTableModel(style.getStyleSheet()));
preferences.setPreferredStyleId(doctype, style.getUniqueId());
}
vexEditorListeners.fireEvent("styleChanged", new VexEditorEvent(this)); //$NON-NLS-1$
@@ -889,9 +892,9 @@ public class VexEditor extends EditorPart {
*/
private void showLabel(final String message, final Exception ex) {
if (loadingLabel == null) {
- if (vexWidget != null) {
- vexWidget.dispose();
- vexWidget = null;
+ if (editorWidget != null) {
+ editorWidget.dispose();
+ editorWidget = null;
}
final GridLayout layout = new GridLayout();
layout.numColumns = 1;
@@ -931,7 +934,7 @@ public class VexEditor extends EditorPart {
private void showVexWidget() {
- if (vexWidget != null) {
+ if (editorWidget != null) {
return;
}
@@ -969,17 +972,17 @@ public class VexEditor extends EditorPart {
gd.horizontalAlignment = GridData.FILL;
gd.verticalAlignment = GridData.FILL;
- vexWidget = new VexWidget(parentControl, SWT.V_SCROLL);
+ editorWidget = new BoxWidget(parentControl, SWT.V_SCROLL);
gd = new GridData();
gd.grabExcessHorizontalSpace = true;
gd.grabExcessVerticalSpace = true;
gd.horizontalAlignment = GridData.FILL;
gd.verticalAlignment = GridData.FILL;
- vexWidget.setLayoutData(gd);
+ editorWidget.setLayoutData(gd);
final MenuManager menuManager = new MenuManager();
- getSite().registerContextMenu("org.eclipse.vex.ui.popup", menuManager, vexWidget);
- vexWidget.setMenu(menuManager.createContextMenu(vexWidget));
+ getSite().registerContextMenu("org.eclipse.vex.ui.popup", menuManager, editorWidget);
+ editorWidget.setMenu(menuManager.createContextMenu(editorWidget));
setClean();
@@ -987,7 +990,7 @@ public class VexEditor extends EditorPart {
final IContextService cs = (IContextService) getSite().getService(IContextService.class);
cs.activateContext("org.eclipse.vex.ui.VexEditorContext");
- vexWidget.addSelectionChangedListener(selectionProvider);
+ editorWidget.addSelectionChangedListener(selectionProvider);
parentControl.layout(true);
@@ -1010,7 +1013,9 @@ public class VexEditor extends EditorPart {
// Oops, style went bye-bye
// Let's just hold on to it in case it comes back later
} else {
- vexWidget.setStyleSheet(newStyle.getStyleSheet());
+ editorWidget.setBoxModelBuilder(new CssBasedBoxModelBuilder(style.getStyleSheet()));
+ editorWidget.setWhitespacePolicy(new CssWhitespacePolicy(style.getStyleSheet()));
+ editorWidget.setTableModel(new CssTableModel(style.getStyleSheet()));
style = newStyle;
}
}
@@ -1046,12 +1051,16 @@ public class VexEditor extends EditorPart {
// update context service
final ISourceProviderService service = (ISourceProviderService) window.getService(ISourceProviderService.class);
final DocumentContextSourceProvider contextProvider = (DocumentContextSourceProvider) service.getSourceProvider(DocumentContextSourceProvider.IS_COLUMN);
- final Point caretLocation = vexWidget.toDisplay(vexWidget.getLocationForContentAssist());
- final Rectangle caretArea = new Rectangle(caretLocation.x, caretLocation.y, 1, 1); // TODO get the real caret area form the BoxWidget
- contextProvider.fireUpdate(vexWidget, caretArea);
+ contextProvider.fireUpdate(editorWidget, getCaretArea());
}
};
+ private Rectangle getCaretArea() {
+ final Rectangle relativeArea = editorWidget.getCaretArea();
+ final Point caretLocation = editorWidget.toDisplay(new Point(relativeArea.getX(), relativeArea.getY()));
+ return new Rectangle(caretLocation.x, caretLocation.y, relativeArea.getWidth(), relativeArea.getHeight());
+ }
+
private final IDocumentListener documentListener = new IDocumentListener() {
@Override
@@ -1115,7 +1124,7 @@ public class VexEditor extends EditorPart {
private String getLocationPath() {
final List<String> path = new ArrayList<String>();
- INode node = vexWidget.getCurrentNode();
+ INode node = editorWidget.getCurrentNode();
while (node != null) {
path.add(node.accept(nodePathVisitor));
node = node.getParent();
@@ -1146,15 +1155,15 @@ public class VexEditor extends EditorPart {
@Override
public IPropertySource getPropertySource(final Object object) {
if (object instanceof IElement) {
- final IStructuredSelection selection = (IStructuredSelection) vexWidget.getSelection();
+ final IStructuredSelection selection = (IStructuredSelection) editorWidget.getSelection();
final boolean multipleElementsSelected = selection != null && selection.size() > 1;
- final IValidator validator = vexWidget.getDocument().getValidator();
+ final IValidator validator = editorWidget.getDocument().getValidator();
return new ElementPropertySource((IElement) object, validator, multipleElementsSelected);
}
if (object instanceof IIncludeNode) {
- final IStructuredSelection selection = (IStructuredSelection) vexWidget.getSelection();
+ final IStructuredSelection selection = (IStructuredSelection) editorWidget.getSelection();
final boolean multipleElementsSelected = selection != null && selection.size() > 1;
- final IValidator validator = vexWidget.getDocument().getValidator();
+ final IValidator validator = editorWidget.getDocument().getValidator();
return new ElementPropertySource(((IIncludeNode) object).getReference(), validator, multipleElementsSelected);
}
if (object instanceof IDocument) {

Back to the top