do not reveal the DOMController to the outside
Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/DOMController.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/DOMController.java
index 04e68d6..aaaef98 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/DOMController.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/DOMController.java
@@ -18,6 +18,7 @@
import org.eclipse.vex.core.internal.visualization.IBoxModelBuilder;
import org.eclipse.vex.core.provisional.dom.AttributeChangeEvent;
import org.eclipse.vex.core.provisional.dom.ContentChangeEvent;
+import org.eclipse.vex.core.provisional.dom.DocumentValidationException;
import org.eclipse.vex.core.provisional.dom.IComment;
import org.eclipse.vex.core.provisional.dom.IDocument;
import org.eclipse.vex.core.provisional.dom.IDocumentListener;
@@ -121,19 +122,22 @@
moveCursor(toOffset(cursor.getOffset() + 1));
}
- public void insertElement(final QualifiedName elementName) {
+ public IElement insertElement(final QualifiedName elementName) throws DocumentValidationException {
final IElement element = document.insertElement(cursor.getOffset(), elementName);
moveCursor(toOffset(element.getEndOffset()));
+ return element;
}
- public void insertComment() {
+ public IComment insertComment() throws DocumentValidationException {
final IComment comment = document.insertComment(cursor.getOffset());
moveCursor(toOffset(comment.getEndOffset()));
+ return comment;
}
- public void insertProcessingInstruction(final String target) {
+ public IProcessingInstruction insertProcessingInstruction(final String target) {
final IProcessingInstruction pi = document.insertProcessingInstruction(cursor.getOffset(), target);
moveCursor(toOffset(pi.getEndOffset()));
+ return pi;
}
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/BoxWidget.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/BoxWidget.java
index 4ee642c..b0e95ef 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/BoxWidget.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/BoxWidget.java
@@ -19,6 +19,7 @@
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
@@ -41,13 +42,19 @@
import org.eclipse.vex.core.internal.cursor.Cursor;
import org.eclipse.vex.core.internal.cursor.ICursorMove;
import org.eclipse.vex.core.internal.cursor.ICursorPositionListener;
+import org.eclipse.vex.core.internal.undo.CannotRedoException;
import org.eclipse.vex.core.internal.visualization.IBoxModelBuilder;
import org.eclipse.vex.core.internal.widget.BalancingSelector;
import org.eclipse.vex.core.internal.widget.BoxView;
import org.eclipse.vex.core.internal.widget.DOMController;
import org.eclipse.vex.core.internal.widget.IRenderer;
import org.eclipse.vex.core.internal.widget.IViewPort;
+import org.eclipse.vex.core.internal.widget.ReadOnlyException;
+import org.eclipse.vex.core.provisional.dom.DocumentValidationException;
+import org.eclipse.vex.core.provisional.dom.IComment;
import org.eclipse.vex.core.provisional.dom.IDocument;
+import org.eclipse.vex.core.provisional.dom.IElement;
+import org.eclipse.vex.core.provisional.dom.IProcessingInstruction;
/**
* A widget to display the new box model.
@@ -97,10 +104,6 @@
controller.setBoxModelBuilder(visualizationChain);
}
- public DOMController getDOMController() {
- return controller;
- }
-
private void connectDispose() {
addDisposeListener(new DisposeListener() {
@Override
@@ -276,6 +279,22 @@
};
}
+ public void refresh() {
+ controller.rebuildBoxModel();
+ }
+
+ public IElement insertElement(final QualifiedName elementName) throws DocumentValidationException {
+ return controller.insertElement(elementName);
+ }
+
+ public IComment insertComment() throws DocumentValidationException {
+ return controller.insertComment();
+ }
+
+ public IProcessingInstruction insertProcessingInstruction(final String target) throws CannotRedoException, ReadOnlyException {
+ return controller.insertProcessingInstruction(target);
+ }
+
private final class ViewPort implements IViewPort {
@Override
public void reconcile(final int maximumHeight) {
@@ -299,4 +318,5 @@
return new Rectangle(0, getVerticalBar().getSelection(), getSize().x, getSize().y);
}
}
+
}
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 decddb7..729da7a 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
@@ -14,6 +14,9 @@
import static org.eclipse.vex.core.internal.core.TextUtils.CURRENCY_SIGN;
import static org.eclipse.vex.core.internal.core.TextUtils.PARAGRAPH_SIGN;
import static org.eclipse.vex.core.internal.core.TextUtils.RAQUO;
+import static org.eclipse.vex.core.internal.io.UniversalTestDocument.ANCHOR;
+import static org.eclipse.vex.core.internal.io.UniversalTestDocument.B;
+import static org.eclipse.vex.core.internal.io.UniversalTestDocument.I;
import java.io.IOException;
import java.io.InputStream;
@@ -29,7 +32,6 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
@@ -48,7 +50,6 @@
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.DOMController;
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;
@@ -223,33 +224,27 @@
}
public void rebuildBoxModel() {
- final DOMController controller = boxWidget.getDOMController();
- controller.rebuildBoxModel();
+ boxWidget.refresh();
}
public void insertBold() {
- final DOMController controller = boxWidget.getDOMController();
- controller.insertElement(new QualifiedName(null, "b"));
+ boxWidget.insertElement(B);
}
public void insertItalic() {
- final DOMController controller = boxWidget.getDOMController();
- controller.insertElement(new QualifiedName(null, "i"));
+ boxWidget.insertElement(I);
}
public void insertAnchor() {
- final DOMController controller = boxWidget.getDOMController();
- controller.insertElement(new QualifiedName(null, "anchor"));
+ boxWidget.insertElement(ANCHOR);
}
public void insertComment() {
- final DOMController controller = boxWidget.getDOMController();
- controller.insertComment();
+ boxWidget.insertComment();
}
public void insertProcessingInstruction(final String target) {
- final DOMController controller = boxWidget.getDOMController();
- controller.insertProcessingInstruction(target);
+ boxWidget.insertProcessingInstruction(target);
}
}