diff options
6 files changed, 23 insertions, 22 deletions
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFactoryRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFactoryRegistry.java index 65abf05ad..40e419164 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFactoryRegistry.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/ConverterFactoryRegistry.java @@ -109,7 +109,7 @@ public class ConverterFactoryRegistry { } ); } - return new DefaultUnknownTagConverter(ele); + return new DefaultUnknownTagConverter(ele, mode); } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DefaultUnknownTagConverter.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DefaultUnknownTagConverter.java index d09a2fe11..397fcf7fb 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DefaultUnknownTagConverter.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/DefaultUnknownTagConverter.java @@ -26,8 +26,9 @@ public class DefaultUnknownTagConverter extends AbstractTagConverter { /** * @param host */ - public DefaultUnknownTagConverter(Element host) { + public DefaultUnknownTagConverter(Element host, int mode) { super(host); + setMode(mode); } /* @@ -48,7 +49,8 @@ public class DefaultUnknownTagConverter extends AbstractTagConverter { style += "border: none; padding: 0; margin: 0"; divEle.setAttribute("style", style); Element div2 = createElement("span"); - div2.setAttribute("style", "background-color: cyan; border: none;"); + String border = isPreviewMode() ? "border-style: solid;border-width: 1px" : "border:none"; + div2.setAttribute("style", "background-color: white;"+border+";color:gray"); Text txt = createText(hostEle.getTagName()); div2.appendChild(txt); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/ElementMenuBar.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/ElementMenuBar.java index 9471782ad..bfb74a2ae 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/ElementMenuBar.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/ElementMenuBar.java @@ -76,17 +76,18 @@ public class ElementMenuBar extends Figure implements ISelectionProvider, ISelec * Removes editpart from the list of non-visual edit parts that this menu * bar is managing the visuals for. * @param editpart - * @throws IllegalArgumentException if editpart is not currently managed - * by the menu bar */ public void removeNonVisualChild(final NonVisualComponentEditPart editpart) { - if (!getChildParts().remove(editpart)) + // TODO: I have relaxed the checking to see if editpart is valid + // child because of the way ElementEditPart refreshes itself + // when the model changes. It's possible this will get called more + // than once for the same editpart argument + getChildParts().remove(editpart); + if (editpart.getFigure().getParent() == this) { - throw new IllegalArgumentException("editpart is not a child: "+editpart); + remove(editpart.getFigure()); } - - remove(editpart.getFigure()); } public boolean hasEditPartFocus() diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/ElementEditPart.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/ElementEditPart.java index 216d187f5..8b4129b01 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/ElementEditPart.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/ElementEditPart.java @@ -520,7 +520,6 @@ public class ElementEditPart extends SubNodeEditPart { parent.remove(childFigure); } - if (childEditPart instanceof NonVisualComponentEditPart) { _nonVisualElementBar.removeNonVisualChild((NonVisualComponentEditPart) childEditPart); @@ -561,6 +560,8 @@ public class ElementEditPart extends SubNodeEditPart { */ public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) { + // XXX: this can cause multiple refreshes on the same edit part for the + // same change. I can also cause incorrect child refreshes... refresh(); } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/HTMLEditPartsFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/HTMLEditPartsFactory.java index fe680195c..ec44b37cc 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/HTMLEditPartsFactory.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/HTMLEditPartsFactory.java @@ -54,18 +54,11 @@ public class HTMLEditPartsFactory implements EditPartFactory { part = new TextEditPart(); } } + // XXX: we need to create wrapper that allows us to know when + // a model object represents a non-visual decorator else if (model instanceof ITagConverter) { - ITagConverter converter = (ITagConverter) model; - if (!converter.isVisualByHTML()) - { - part = new NonVisualComponentEditPart(); - } - else - { - part = new ElementEditPart(); - } - + part = new NonVisualComponentEditPart(); } if (part != null) { diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DefaultDropLocationStrategy.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DefaultDropLocationStrategy.java index c547ba5a1..dea33f45a 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DefaultDropLocationStrategy.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DefaultDropLocationStrategy.java @@ -106,8 +106,12 @@ public class DefaultDropLocationStrategy extends AbstractDropLocationStrategy Rectangle hintRect = new Rectangle(hintLocation, hintSize); - // to avoid enlarge feedback pane. - //hintRect = hintRect.intersect(getFeedbackLayer().getBounds()); + // we need to intersect the rectangle with the feedback pane, otherwise, when the mouse + // is dragged near the edge of the viewport with the drop hint active, the canvas will expand + // away from the mouse. In future a more ideal solution will be to relocate the tooltip + // so that is is completely inside the viewport. + hintRect = hintRect.intersect(getFeedbackLayer().getBounds()); + dropHintLabel.translateToRelative(hintRect); dropHintLabel.setBounds(hintRect); |