diff options
author | cbateman | 2007-01-11 19:26:45 +0000 |
---|---|---|
committer | cbateman | 2007-01-11 19:26:45 +0000 |
commit | d4ba011a81d9bf8517c2b05855cbee0db128d62f (patch) | |
tree | 324173c0ad6c0fcd81a4bf68dd2a96fc4704ebf7 /jsf | |
parent | 90c05155d6e20d6b2b92680b93d449013e85606b (diff) | |
download | webtools.jsf-d4ba011a81d9bf8517c2b05855cbee0db128d62f.tar.gz webtools.jsf-d4ba011a81d9bf8517c2b05855cbee0db128d62f.tar.xz webtools.jsf-d4ba011a81d9bf8517c2b05855cbee0db128d62f.zip |
- re-organized the context menu structure vis http://wiki.eclipse.org/index.php/Canvas_Context_Menus
- enabled flyout palette on editor
- changed facet conversion to be inline div in the design mode
- switched the artificial separation padding to use padding insets instead of margin insets.
Diffstat (limited to 'jsf')
31 files changed, 756 insertions, 307 deletions
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/JSFUIPluginResources.properties b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/JSFUIPluginResources.properties index 5af178f6f..d092d0d48 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/JSFUIPluginResources.properties +++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/JSFUIPluginResources.properties @@ -27,7 +27,7 @@ ElementEdit.Submenu.PanelGrid.InsertFooter=Insert Footer ElementEdit.Submenu.PanelGird.DeleteHeader=Delete Header ElementEdit.Submenu.PanelGrid.DeleteFooter=Delete Footer -ElementEdit.Submenu.JavaNavigation=Java Navigate +ElementEdit.Submenu.JavaNavigation=Java ElementEdit.Submenu.JavaNavigation.Binding=Binding ElementEdit.Submenu.JavaNavigation.Value=Value ElementEdit.Submenu.JavaNavigation.Action=Action diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFAddActionGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFAddActionGroup.java index 1797cd282..44ebbd570 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFAddActionGroup.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFAddActionGroup.java @@ -15,6 +15,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.emf.common.util.EList; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -46,16 +47,20 @@ public class JSFAddActionGroup { */ public void fillContextMenu(IMenuManager menu, final IDOMElement element, final IJSFCoreSupport support) { - final IMenuManager submenu = new MenuManager(ActionsResources - .getString("Submenu.JSFAdd"));//$NON-NLS-1$ - submenu.add(EMPTY_ACTION); - submenu.addMenuListener(new IMenuListener() { - public void menuAboutToShow(IMenuManager manager) { - submenu.removeAll(); - addJSFAddItems(submenu, element, support); - } - }); - menu.appendToGroup(PageDesignerActionConstants.GROUP_SPECIAL, submenu); + IContributionItem item = menu.find(PageDesignerActionConstants.INSERT_SUBMENU_ID); + + if (item instanceof IMenuManager) + { + final IMenuManager submenu = (IMenuManager) item; + submenu.add(EMPTY_ACTION); + submenu.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager manager) { + submenu.removeAll(); + addJSFAddItems(submenu, element, support); + } + }); + } + //menu.appendToGroup(PageDesignerActionConstants.GROUP_SPECIAL, submenu); } /** diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFNavigationGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFNavigationGroup.java index d8fe22d7e..2e277b232 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFNavigationGroup.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/JSFNavigationGroup.java @@ -12,6 +12,7 @@ package org.eclipse.jst.pagedesigner.jsf.ui.actions; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -39,18 +40,26 @@ public class JSFNavigationGroup */ public void fillContextMenu(IMenuManager menu, final IDOMElement element, final IJSFCoreSupport support) { - final IMenuManager submenu = new MenuManager(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation"));//$NON-NLS-1$ - submenu.add(EMPTY_ACTION); - submenu.addMenuListener(new IMenuListener() + final IContributionItem item = + menu.find(PageDesignerActionConstants.NAVIGATE_SUBMENU_ID); + + if (item instanceof IMenuManager) { - public void menuAboutToShow(IMenuManager manager) + final IMenuManager submenu = (IMenuManager) item; + final IMenuManager javaMenu = new MenuManager(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation"));//$NON-NLS-1$ + javaMenu.add(EMPTY_ACTION); + javaMenu.addMenuListener(new IMenuListener() { - submenu.removeAll(); - addNavigationItems(submenu, element, support); + public void menuAboutToShow(IMenuManager manager) + { + javaMenu.removeAll(); + addNavigationItems(javaMenu, element, support); + } } + ); + + submenu.appendToGroup(PageDesignerActionConstants.GROUP_NAVIGATE, javaMenu); } - ); - menu.appendToGroup(PageDesignerActionConstants.GROUP_SPECIAL, submenu); } private void addNavigationItems(IMenuManager submenu, IDOMElement ele, IJSFCoreSupport support) diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/PageFlowContributor.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/PageFlowContributor.java index fea96380b..c175805f6 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/PageFlowContributor.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/actions/PageFlowContributor.java @@ -61,7 +61,7 @@ public class PageFlowContributor implements IContextMenuItemContributor PageFlowAction action = new PageFlowAction(); action.setId(PageFlowAction.ID); action.setModel(model); - IMenuManager viewMgr = manager.findMenuUsingPath(PageDesignerActionConstants.MENUMGR_VIEW_ID); + IMenuManager viewMgr = manager.findMenuUsingPath(PageDesignerActionConstants.SHOWVIEW_SUBMENU_ID); if (viewMgr != null) { viewMgr.add(action); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/JSFCoreConverterFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/JSFCoreConverterFactory.java index e67c25f5e..59922d4b7 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/JSFCoreConverterFactory.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/converter/jsfcore/JSFCoreConverterFactory.java @@ -17,7 +17,7 @@ import org.eclipse.jst.pagedesigner.converter.AbstractTagConverter; import org.eclipse.jst.pagedesigner.converter.HiddenTagConverter; import org.eclipse.jst.pagedesigner.converter.IConverterFactory; import org.eclipse.jst.pagedesigner.converter.ITagConverter; -import org.eclipse.jst.pagedesigner.converter.TagConverterToSpan; +import org.eclipse.jst.pagedesigner.converter.TagConverterToInlineBlock; import org.eclipse.jst.pagedesigner.jsf.ui.JSFUIPlugin; import org.eclipse.swt.graphics.Image; import org.w3c.dom.Element; @@ -53,7 +53,7 @@ public class JSFCoreConverterFactory implements IConverterFactory else if (IJSFConstants.TAG_FACET.equalsIgnoreCase(tagName) || IJSFConstants.TAG_VERBATIM.equalsIgnoreCase(tagName)) { - AbstractTagConverter toSpan = new TagConverterToSpan(element); + AbstractTagConverter toSpan = new TagConverterToInlineBlock(element, mode); toSpan.setMinWidth(10); toSpan.setMinHeight(10); toSpan.setNeedBorderDecorator(true); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfhtml/DataTableElementEdit.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfhtml/DataTableElementEdit.java index 7d0d9fe6c..e80095508 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfhtml/DataTableElementEdit.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfhtml/DataTableElementEdit.java @@ -127,7 +127,7 @@ public class DataTableElementEdit extends DefaultJSFHTMLElementEdit */ private void fillTableMenu(ElementEditPart elePart, int cellColumn, IMenuManager tableMenu) { - SelectEditPartAction action = new SelectEditPartAction(JSFUIPlugin + SelectEditPartAction action = SelectEditPartAction.create(JSFUIPlugin .getResourceString("ElementEdit.Submenu.DataTable.SelectTable"), elePart);//$NON-NLS-1$ tableMenu.add(action); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfhtml/PanelGridElementEdit.java b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfhtml/PanelGridElementEdit.java index 32b412cf8..0426f78f9 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfhtml/PanelGridElementEdit.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner.jsf.ui/src/org/eclipse/jst/pagedesigner/jsf/ui/elementedit/jsfhtml/PanelGridElementEdit.java @@ -151,7 +151,7 @@ public class PanelGridElementEdit extends DefaultJSFHTMLElementEdit */ private void fillPanelGridMenu(ElementEditPart elePart, int cellRow, int cellColumn, IMenuManager tableMenu) { - SelectEditPartAction action = new SelectEditPartAction(JSFUIPlugin + SelectEditPartAction action = SelectEditPartAction.create(JSFUIPlugin .getResourceString("ElementEdit.Submenu.PanelGrid.SelectTable"), elePart);//$NON-NLS-1$ tableMenu.add(action); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties index cb5fede34..12795e5db 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties @@ -86,6 +86,7 @@ ActionGroup.Submenu.BorderStyle=Border Style ActionGroup.Submenu.Color=Color ActionGroup.Submenu.BackgroundColor=Background Color ActionGroup.Submenu.Link=Make Link... +ActionGroup.Submenu.SelectRelative=Select Relative TableActionGroup.Submenu.SelectTable=Select Table TableActionGroup.Submenu.InsertRowBefore=Insert Row Before diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeActionGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeActionGroup.java index a1c61c40e..4203ccc27 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeActionGroup.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/range/RangeActionGroup.java @@ -12,6 +12,7 @@ package org.eclipse.jst.pagedesigner.actions.range; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -50,27 +51,35 @@ public class RangeActionGroup extends ActionGroup { * * @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager) */ - public void fillContextMenu(IMenuManager menu) { + public void fillContextMenu(IMenuManager contextMenu) + { DesignRange selection = fixUpSelection(getContext().getSelection()); if (selection == null) { return; } - if (getContext().getInput() instanceof IHTMLGraphicalViewer) { - addParagraphFormatMenu(menu, selection, - (IHTMLGraphicalViewer) getContext().getInput()); - addHorizontalAlignMenu(menu, selection, - (IHTMLGraphicalViewer) getContext().getInput()); - addTextStyleMenu(menu, (IHTMLGraphicalViewer) getContext() - .getInput()); - } - // TODO: the (commented out) copy of this method does nothing - //addListModeMenu(menu, selection); - - // TODO: the (commented out) copy of this method does nothing - //addTextFontMenu(menu, selection); - - addLinkMenu(menu, selection); - } + IContributionItem styleSubMenuItem = + contextMenu.find(PageDesignerActionConstants.STYLE_SUBMENU_ID); + + if (styleSubMenuItem instanceof IMenuManager) + { + final IMenuManager subMenu = (IMenuManager) styleSubMenuItem; + if (getContext().getInput() instanceof IHTMLGraphicalViewer) { + addParagraphFormatMenu(subMenu, selection, + (IHTMLGraphicalViewer) getContext().getInput()); + addHorizontalAlignMenu(subMenu, selection, + (IHTMLGraphicalViewer) getContext().getInput()); + addTextStyleMenu(subMenu, (IHTMLGraphicalViewer) getContext() + .getInput()); + } + // TODO: the (commented out) copy of this method does nothing + //addListModeMenu(menu, selection); + + // TODO: the (commented out) copy of this method does nothing + //addTextFontMenu(menu, selection); + + addLinkMenu(subMenu, selection); + } + } /** * @param selection diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectEditPartAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectEditPartAction.java index 42d9dc531..2cb229902 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectEditPartAction.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectEditPartAction.java @@ -11,23 +11,37 @@ *******************************************************************************/ package org.eclipse.jst.pagedesigner.actions.single; +import org.eclipse.gef.EditPart; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jst.pagedesigner.parts.ElementEditPart; /** * @author mengbo * @version 1.5 */ -public class SelectEditPartAction extends Action { - ElementEditPart _part; +public abstract class SelectEditPartAction extends Action { + + /** + * @param text + * @param forThisPart + * @return a convience object when the edit part that needs selection + * is already known when the action is constructed + */ + public static SelectEditPartAction create(final String text, final EditPart forThisPart) + { + return new SelectEditPartAction(text) + { + protected EditPart getNewSelection() { + return forThisPart; + } + }; + } /** * @param text */ - public SelectEditPartAction(String text, ElementEditPart part) { + protected SelectEditPartAction(String text) { super(text); - this._part = part; } /* @@ -36,6 +50,12 @@ public class SelectEditPartAction extends Action { * @see org.eclipse.jface.action.Action#run() */ public void run() { - _part.getViewer().setSelection(new StructuredSelection(_part)); + final EditPart newSelection = getNewSelection(); + newSelection.getViewer().setSelection(new StructuredSelection(newSelection)); } + + /** + * @return the EditPart onto which selection should be applied. + */ + protected abstract EditPart getNewSelection(); } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectNodeAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectNodeAction.java new file mode 100644 index 000000000..c2d8ba2b6 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectNodeAction.java @@ -0,0 +1,22 @@ +package org.eclipse.jst.pagedesigner.actions.single; + +import org.w3c.dom.Node; + +/** + * An edit part selection action that corresponds to a Node selection + */ +public abstract class SelectNodeAction extends SelectEditPartAction +{ + protected final Node _node; + + + /** + * @param text + * @param curNode + */ + protected SelectNodeAction(String text, Node curNode) { + super(text); + _node = curNode; + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectParentAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectParentAction.java new file mode 100644 index 000000000..fc245caae --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SelectParentAction.java @@ -0,0 +1,49 @@ +package org.eclipse.jst.pagedesigner.actions.single; + +import org.eclipse.gef.EditPart; +import org.w3c.dom.Node; + +/** + * Given a target node/edit part change selection to its parent + * + * @author cbateman + * + */ +public class SelectParentAction extends SelectNodeAction { + + private final EditPart _editPart; + + /** + * @param node + * @param editPart + * @return an action that will change focus selection to the parent + * part of node/editPart or a disabled one if there is no parent + */ + public static SelectParentAction create(Node node, EditPart editPart) + { + Node parent = node.getParentNode(); + + if (parent != null) + { + final String text = "Parent ("+parent.getNodeName()+")"; + return new SelectParentAction(text, node, editPart); + } + SelectParentAction action = new SelectParentAction("Parent", node, editPart); + action.setEnabled(false); + return action; + } + + private SelectParentAction(String text, Node node, EditPart editPart) + { + super(text, node); + _editPart = editPart; + } + + /* (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.actions.single.SelectEditPartAction#getNewSelection() + */ + protected EditPart getNewSelection() + { + return _editPart.getParent(); + } +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SingleElementActionGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SingleElementActionGroup.java index d305fd3b5..9bf37dda0 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SingleElementActionGroup.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/single/SingleElementActionGroup.java @@ -11,7 +11,13 @@ *******************************************************************************/ package org.eclipse.jst.pagedesigner.actions.single; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.gef.EditPart; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -25,8 +31,11 @@ import org.eclipse.jst.pagedesigner.elementedit.IElementEdit; import org.eclipse.jst.pagedesigner.parts.ElementEditPart; import org.eclipse.ui.actions.ActionGroup; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement; +import org.w3c.dom.Element; /** + * Group that constructs context menu items for a single selected element. + * * @author mengbo * @version 1.5 */ @@ -49,6 +58,7 @@ public class SingleElementActionGroup extends ActionGroup { return; } IDOMElement ele = (IDOMElement) part.getIDOMNode(); + addPositionRelativeMenu(menu, part, ele); addStylelMenu(menu, part, ele); // next add element special actions @@ -75,25 +85,90 @@ public class SingleElementActionGroup extends ActionGroup { return null; } + /** + * Add menu actions that select relative to the current position + * + * @param menu + * @param part + * @param ele + */ + private void addPositionRelativeMenu(IMenuManager menu, ElementEditPart part, IDOMElement ele) + { + IContributionItem subMenuItem = menu.find(PageDesignerActionConstants.SELECT_SUBMENU_ID); + + if (subMenuItem instanceof IMenuManager) + { + final IMenuManager subMenu = (IMenuManager) subMenuItem; + // final IMenuManager selectMenu = new MenuManager(PDPlugin + // .getResourceString("ActionGroup.Submenu.SelectRelative"));//$NON-NLS-1$ + SelectParentAction selectParentAction = SelectParentAction.create(ele, part); + // Eclipse UI guideline: 6.13 + // even if there is no parent, a disabled action will be returned by + // create and this should be added to the menu + subMenu.add(selectParentAction); + + List children = new ArrayList(); + for (Iterator it = part.getChildren().iterator(); it.hasNext();) + { + EditPart childPart = (EditPart) it.next(); + + // only include selectable element edit part that are modelling + // XML elements in the source doc + if (childPart instanceof ElementEditPart + && ((ElementEditPart)childPart).isSelectable() + && ((ElementEditPart)childPart).getModel() instanceof Element) + { + children.add(SelectNodeAction + .create(((Element)((ElementEditPart)childPart).getModel()).getNodeName(), childPart)); + } + } + + + // don't add the select Children menu unless there are actually children + if (children.size() > 0) + { + MenuManager selectChildMenu = new MenuManager("Children"/*PDPlugin + .getResourceString("ActionGroup.Submenu.StyleClasses")*/); + subMenu.add(selectChildMenu); + + for (final Iterator it = children.iterator(); it.hasNext();) + { + selectChildMenu.add((Action)it.next()); + } + } + else + { // Eclipse UI guideline 6.13 + // create the child actions even if no children but make it + // a disabled option if no children + Action childrenAction = new Action("Children"){/* do nothing*/}; + childrenAction.setEnabled(false); + subMenu.add(childrenAction); + } + } + } + /** * @param menu * @param part */ private void addStylelMenu(IMenuManager menu, ElementEditPart part, IDOMElement ele) { - // IMenuManager stylesub = new MenuManager("Style"); - IMenuManager stylesub = menu; - - addStyle(menu, part, ele); - addStyleClassesMenu(stylesub, part, ele); - - if (DOMStyleUtil.supportStyleAttribute(ele)) { - // addBorderStyleMenu(stylesub, part, ele); - addColorMenu(stylesub, part, ele); - addBackgroundMenu(stylesub, part, ele); - } - - // menu.add(stylesub); + IContributionItem subMenu = + menu.find(PageDesignerActionConstants.STYLE_SUBMENU_ID); + + if (subMenu instanceof IMenuManager) + { + final IMenuManager subMenuManager = + (IMenuManager) subMenu; + addStyle(subMenuManager, part, ele); + addStyleClassesMenu(subMenuManager, part, ele); + + if (DOMStyleUtil.supportStyleAttribute(ele)) { + // addBorderStyleMenu(stylesub, part, ele); + addColorMenu(subMenuManager, part, ele); + addBackgroundMenu(subMenuManager, part, ele); + } + } } /** @@ -102,57 +177,30 @@ public class SingleElementActionGroup extends ActionGroup { * @param part * @param ele */ - private void addStyle(IMenuManager menu, ElementEditPart part, + private void addStyle(IMenuManager subMenu, ElementEditPart part, IDOMElement ele) { - StyleSupport.createStyleAction(menu, part, ele); + StyleSupport.createStyleAction(subMenu, part, ele); } /** * @param stylesub * @param part */ - private void addStyleClassesMenu(IMenuManager stylesub, + private void addStyleClassesMenu(IMenuManager subMenu, ElementEditPart part, final IDOMElement ele) { final IMenuManager classmenu = new MenuManager(PDPlugin .getResourceString("ActionGroup.Submenu.StyleClasses"));//$NON-NLS-1$ StyleClassSupport.createStyleClassActions(classmenu, ele); - /* - * classmenu.add(action); classmenu.addMenuListener(new IMenuListener() { - * - * public void menuAboutToShow(IMenuManager manager) { - * classmenu.removeAll(); - * StyleClassSupport.createStyleClassActions(classmenu, ele); } } ); - */ - - stylesub.appendToGroup(PageDesignerActionConstants.GROUP_STYLE, - classmenu); - } - /** - * @param stylesub - * @param part - */ - /* - * private void addBorderStyleMenu(IMenuManager stylesub, ElementEditPart - * part, final IDOMElement ele) { final IMenuManager borderStyleSub = new - * MenuManager(PDPlugin - * .getResourceString("ActionGroup.Submenu.BorderStyle"));//$NON-NLS-1$ - * borderStyleSub.add(action); - * - * final String mode = BorderStyleSupport.getCurrentBorderStyle(ele); - * - * borderStyleSub.addMenuListener(new IMenuListener() { public void - * menuAboutToShow(IMenuManager manager) { borderStyleSub.removeAll(); - * BorderStyleSupport.createParagraphActions(borderStyleSub, ele, mode); } - * }); stylesub.appendToGroup(PageDesignerActionConstants.GROUP_STYLE, - * borderStyleSub); } - */ + subMenu.appendToGroup(PageDesignerActionConstants.GROUP_STYLE, + classmenu); + } /** * @param stylesub * @param part */ - private void addColorMenu(IMenuManager stylesub, ElementEditPart part, + private void addColorMenu(IMenuManager subMenu, ElementEditPart part, final IDOMElement ele) { final IMenuManager colorSub = new MenuManager(PDPlugin .getResourceString("ActionGroup.Submenu.Color"));//$NON-NLS-1$ @@ -164,7 +212,7 @@ public class SingleElementActionGroup extends ActionGroup { ICSSPropertyID.ATTR_COLOR); } }); - stylesub.appendToGroup(PageDesignerActionConstants.GROUP_STYLE, + subMenu.appendToGroup(PageDesignerActionConstants.GROUP_STYLE, colorSub); } @@ -173,7 +221,7 @@ public class SingleElementActionGroup extends ActionGroup { * @param stylesub * @param part */ - private void addBackgroundMenu(IMenuManager stylesub, ElementEditPart part, + private void addBackgroundMenu(IMenuManager subMenu, ElementEditPart part, final IDOMElement ele) { final IMenuManager colorSub = new MenuManager(PDPlugin .getResourceString("ActionGroup.Submenu.BackgroundColor"));//$NON-NLS-1$ @@ -187,7 +235,7 @@ public class SingleElementActionGroup extends ActionGroup { } }); - stylesub.appendToGroup(PageDesignerActionConstants.GROUP_STYLE, + subMenu.appendToGroup(PageDesignerActionConstants.GROUP_STYLE, colorSub); } } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/table/TableActionGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/table/TableActionGroup.java index ebbcc2b01..d52bb3c09 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/table/TableActionGroup.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/actions/table/TableActionGroup.java @@ -94,7 +94,7 @@ public class TableActionGroup extends ActionGroup { */ private void fillTableMenu(ElementEditPart tablePart, int cellRow, int cellColumn, IMenuManager tableMenu) { - SelectEditPartAction action1 = new SelectEditPartAction( + SelectEditPartAction action1 = SelectEditPartAction.create( PDPlugin .getResourceString("TableActionGroup.Submenu.SelectTable"), tablePart);//$NON-NLS-1$ tableMenu.add(action1); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/TagConverterToInlineBlock.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/TagConverterToInlineBlock.java index 3e4a41400..a111932a2 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/TagConverterToInlineBlock.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/converter/TagConverterToInlineBlock.java @@ -28,14 +28,15 @@ import org.w3c.dom.Element; * @see org.eclipse.jst.pagedesigner.css2.style.ITagEditInfo#getMinWidth() */ public class TagConverterToInlineBlock extends AbstractTagConverter { - private int model; + private int displayMode; /** * @param host + * @param mode */ - public TagConverterToInlineBlock(Element host, int model) { + public TagConverterToInlineBlock(Element host, int mode) { super(host); - this.model = model; + this.displayMode = mode; } /* @@ -45,7 +46,7 @@ public class TagConverterToInlineBlock extends AbstractTagConverter { */ protected Element doConvertRefresh() { Element result = null; - if (model == IConverterFactory.MODE_PREVIEW) { + if (displayMode == IConverterFactory.MODE_PREVIEW) { result = createElement("span"); copyChildren(getHostElement(), result); } else { diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java index 7b4eade10..6f774fcff 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java @@ -26,13 +26,15 @@ import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter; */ public interface ICSSStyle extends INodeAdapter, IAdaptable { - // the number of extra pixels to add to top, bottom, left and right margin insets + // the number of extra pixels to add to top, bottom, left and right padding insets // in the rendering so that separation between contained components is more // apparent at design time. These extra pixels are design mode only + // Note: margin padding would be preferred but it doesn't seem to affect + // bottom padding the way border insets do. // TODO: this should be set to a preference and probably also use an // algorithm to determine if the the current box style already has a large // enough separation offset (perhaps a threshold instead of an additive value) - public static final int ARTIFICIAL_MARGIN_OFFSET = 4; + public static final int ARTIFICIAL_BORDER_OFFSET = 4; public static final int INHERIT = Integer.MIN_VALUE; diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java index 104835c82..fd00a16de 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java @@ -346,10 +346,10 @@ public class AbstractStyle implements ICSSStyle { */ public Insets getMarginInsets() { if (_marginInsets == null) { - int top = getInsetProperty(ICSSPropertyID.ATTR_MARGIN_TOP)+ARTIFICIAL_MARGIN_OFFSET; - int left = getInsetProperty(ICSSPropertyID.ATTR_MARGIN_LEFT)+ARTIFICIAL_MARGIN_OFFSET; - int bottom = getInsetProperty(ICSSPropertyID.ATTR_MARGIN_BOTTOM)+ARTIFICIAL_MARGIN_OFFSET; - int right = getInsetProperty(ICSSPropertyID.ATTR_MARGIN_RIGHT)+ARTIFICIAL_MARGIN_OFFSET; + int top = getInsetProperty(ICSSPropertyID.ATTR_MARGIN_TOP); + int left = getInsetProperty(ICSSPropertyID.ATTR_MARGIN_LEFT); + int bottom = getInsetProperty(ICSSPropertyID.ATTR_MARGIN_BOTTOM); + int right = getInsetProperty(ICSSPropertyID.ATTR_MARGIN_RIGHT); _marginInsets = new Insets(top, left, bottom, right); } return _marginInsets; @@ -362,10 +362,10 @@ public class AbstractStyle implements ICSSStyle { */ public Insets getPaddingInsets() { if (_paddingInsets == null) { - int top = getInsetProperty(ICSSPropertyID.ATTR_PADDING_TOP); - int left = getInsetProperty(ICSSPropertyID.ATTR_PADDING_LEFT); - int bottom = getInsetProperty(ICSSPropertyID.ATTR_PADDING_BOTTOM); - int right = getInsetProperty(ICSSPropertyID.ATTR_PADDING_RIGHT); + int top = getInsetProperty(ICSSPropertyID.ATTR_PADDING_TOP)+ARTIFICIAL_BORDER_OFFSET; + int left = getInsetProperty(ICSSPropertyID.ATTR_PADDING_LEFT)+ARTIFICIAL_BORDER_OFFSET; + int bottom = getInsetProperty(ICSSPropertyID.ATTR_PADDING_BOTTOM)+ARTIFICIAL_BORDER_OFFSET; + int right = getInsetProperty(ICSSPropertyID.ATTR_PADDING_RIGHT)+ARTIFICIAL_BORDER_OFFSET; _paddingInsets = new Insets(top, left, bottom, right); } return _paddingInsets; diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java index 4ebb6fe21..8c25a45b9 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java @@ -57,8 +57,8 @@ public class DefaultStyle implements ICSSStyle { * @see org.eclipse.jst.pagedesigner.css2.ICSSStyle#getMarginInsets() */ public Insets getMarginInsets() { - //return EMPTY_INSETS; - return new Insets(ARTIFICIAL_MARGIN_OFFSET, ARTIFICIAL_MARGIN_OFFSET, ARTIFICIAL_MARGIN_OFFSET,ARTIFICIAL_MARGIN_OFFSET); + return EMPTY_INSETS; + //return new Insets(0, 0, 0, 0); } /* @@ -76,7 +76,7 @@ public class DefaultStyle implements ICSSStyle { * @see org.eclipse.jst.pagedesigner.css2.ICSSStyle#getPaddingInsets() */ public Insets getPaddingInsets() { - return EMPTY_INSETS; + return new Insets(ARTIFICIAL_BORDER_OFFSET, ARTIFICIAL_BORDER_OFFSET, ARTIFICIAL_BORDER_OFFSET, ARTIFICIAL_BORDER_OFFSET); } /* diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/HTMLEditor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/HTMLEditor.java index 3db92f16c..b20c4e71e 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/HTMLEditor.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/HTMLEditor.java @@ -24,12 +24,12 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.gef.DefaultEditDomain; +import org.eclipse.gef.palette.PaletteRoot; import org.eclipse.gef.ui.palette.PaletteViewerProvider; import org.eclipse.gef.ui.views.palette.PalettePage; import org.eclipse.gef.ui.views.palette.PaletteViewerPage; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ITextInputListener; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.viewers.IPostSelectionProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; @@ -40,8 +40,6 @@ import org.eclipse.jst.jsf.common.ui.internal.utils.ResourceUtils; import org.eclipse.jst.pagedesigner.PDPlugin; import org.eclipse.jst.pagedesigner.dnd.internal.DesignerSourceMouseTrackAdapter; import org.eclipse.jst.pagedesigner.editors.pagedesigner.PageDesignerResources; -import org.eclipse.jst.pagedesigner.editors.palette.DesignerPaletteRoot; -import org.eclipse.jst.pagedesigner.editors.palette.DesignerPaletteViewerProvider; import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemManager; import org.eclipse.jst.pagedesigner.jsp.core.pagevar.IPageVariablesProvider; import org.eclipse.jst.pagedesigner.jsp.core.pagevar.adapter.IDocumentPageVariableAdapter; @@ -863,8 +861,6 @@ public class HTMLEditor extends PostSelectionMultiPageEditorPart implements return getTextEditor().isDirty(); } - // IPropertySheetPage _propertySheetPage; - protected IPropertySheetPage getPropertySheetPage() { return new org.eclipse.jst.pagedesigner.properties.DesignerTabbedPropertySheetPage( this, this); @@ -876,11 +872,16 @@ public class HTMLEditor extends PostSelectionMultiPageEditorPart implements PaletteItemManager manager = PaletteItemManager .getInstance(getCurrentProject(getEditorInput())); manager.reset(); - editDomain.setPaletteRoot(new DesignerPaletteRoot(manager)); - - PaletteViewerProvider provider = new DesignerPaletteViewerProvider( - editDomain); - _paletteViewerPage = new PaletteViewerPage(provider); + PaletteRoot paletteRoot = _designViewer.getPaletteRoot(); + editDomain.setPaletteRoot(paletteRoot); + + _paletteViewerPage = (PaletteViewerPage) _designViewer.getAdapter(PalettePage.class); + // if possible, try to use the + if (_paletteViewerPage == null) + { + PaletteViewerProvider provider = _designViewer.getPaletteViewerProvider2(); + _paletteViewerPage = new PaletteViewerPage(provider); + } } return _paletteViewerPage; } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/PageDesignerActionConstants.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/PageDesignerActionConstants.java index 9e17f4584..6f9c12f30 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/PageDesignerActionConstants.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/PageDesignerActionConstants.java @@ -17,33 +17,126 @@ import org.eclipse.jface.action.Separator; import org.eclipse.ui.IWorkbenchActionConstants; /** + * Common constants used to id specific locations in the canvas context menu. + * + * @see SimpleGraphicalEditor.ContextMenuListener for construction order + * * @author mengbo */ -public class PageDesignerActionConstants { +public class PageDesignerActionConstants +{ + /** + * Id for the standard Edit sub-menu + */ + public static final String EDIT_SUBMENU_ID = "org.eclipse.jst.pagedesigner.context.submenu.edit"; //$NON-NLS-1$ + /** + * Id for the standard Select sub-menu + */ + public static final String SELECT_SUBMENU_ID = "org.eclipse.jst.pagedesigner.context.submenu.select"; //$NON-NLS-1$ + /** + * Id for the standard Insert sub-menu + */ + public static final String INSERT_SUBMENU_ID = "org.eclipse.jst.pagedesigner.context.submenu.insert"; //$NON-NLS-1$ + /** + * Id for the standard Navigate sub-menu + */ + public static final String NAVIGATE_SUBMENU_ID = "org.eclipse.jst.pagedesigner.context.submenu.navigate"; //$NON-NLS-1$ + /** + * Id for the standard Style sub-menu + */ + public static final String STYLE_SUBMENU_ID = "org.eclipse.jst.pagedesigner.context.submenu.style"; //$NON-NLS-1$ + /** + * Id for the standard Show(View) sub-menu + */ + public static final String SHOWVIEW_SUBMENU_ID = "org.eclipse.jst.pagedesigner.viewMenuMgr"; //$NON-NLS-1$ + + /** + * Undo action group + */ public static final String GROUP_UNDO = GEFActionConstants.GROUP_UNDO; - + /** + * Standard Edit sub-menu action group + */ public static final String GROUP_EDIT = GEFActionConstants.GROUP_EDIT; - + /** + * Group for container injected actions + */ public static final String GROUP_CONTAINER = "org.eclipse.jst.pagedesigner.container"; //$NON-NLS-1$ - + /** + * Standard Style sub-menu action group + */ public static final String GROUP_STYLE = "org.eclipse.jst.pagedesigner.style"; //$NON-NLS-1$ - + /** + * Group for third-party contributed tag-specific actions + */ public static final String GROUP_SPECIAL = "org.eclipse.jst.pagedesigner.special"; //$NON-NLS-1$ + /** + * Standard Select sub-menu action group + */ + public static final String GROUP_SELECT = "org.eclipse.jst.pagedesigner.select"; //$NON-NLS-1$ + /** + * Standard Insert sub-menu action group + */ + public static final String GROUP_INSERT = "org.eclipse.jst.pagedesigner.insert"; //$NON-NLS-1$ + /** + * Standard Navigate sub-menu action group + */ + public static final String GROUP_NAVIGATE = "org.eclipse.jst.pagedesigner.navigate"; //$NON-NLS-1$ - public static final String MENUMGR_VIEW_ID = "org.eclipse.jst.pagedesigner.viewMenuMgr"; //$NON-NLS-1$ + /** + * Add standard group separators for the Edit sub-menu + * + * @param menu + */ + public static final void addStandardEditActionGroups(IMenuManager menu) + { + menu.add(new Separator(GROUP_UNDO)); + menu.add(new Separator(GROUP_EDIT)); + } + /** * Adds standard group separators to the given MenuManager. * - * @param menu - * the MenuManager + * @param menu the MenuManager */ public static final void addStandardActionGroups(IMenuManager menu) { - menu.add(new Separator(GROUP_UNDO)); - menu.add(new Separator(GROUP_EDIT)); menu.add(new Separator(GROUP_CONTAINER)); - menu.add(new Separator(GROUP_STYLE)); menu.add(new Separator(GROUP_SPECIAL)); menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } + + /** + * Add standard group separators for the Style sub-menu + * @param styleSubmenu + */ + public static void addStandardStyleActionGroups(IMenuManager menu) + { + menu.add(new Separator(GROUP_STYLE)); + } + + /** + * Add standard group separators for the Select sub-menu + * @param menu + */ + public static void addStandardSelectActionGroups(IMenuManager menu) { + menu.add(new Separator(GROUP_SELECT)); + } + + /** + * Add standard group separators for the Insert sub-menu + * @param menu + */ + public static void addStandardInsertActionGroups(IMenuManager menu) { + menu.add(new Separator(GROUP_INSERT)); + } + + /** + * Add standard group separators for the Navigate sub-menu + * @param menu + */ + public static void addStandardNavigateActionGroups( + IMenuManager menu) { + menu.add(new Separator(GROUP_NAVIGATE)); + } } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/SimpleGraphicalEditor.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/SimpleGraphicalEditor.java index cec568571..9078263d2 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/SimpleGraphicalEditor.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/SimpleGraphicalEditor.java @@ -26,7 +26,7 @@ import org.eclipse.gef.ui.actions.UpdateAction; import org.eclipse.gef.ui.palette.PaletteViewer; import org.eclipse.gef.ui.palette.PaletteViewerProvider; import org.eclipse.gef.ui.palette.FlyoutPaletteComposite.FlyoutPreferences; -import org.eclipse.gef.ui.parts.GraphicalEditor; +import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette; import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; @@ -38,7 +38,6 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jst.pagedesigner.PDPlugin; import org.eclipse.jst.pagedesigner.actions.container.ContainerActionGroup; import org.eclipse.jst.pagedesigner.actions.menuextension.CustomedContextMenuActionGroup; -import org.eclipse.jst.pagedesigner.actions.menuextension.RunAction; import org.eclipse.jst.pagedesigner.actions.range.RangeActionGroup; import org.eclipse.jst.pagedesigner.actions.single.SingleElementActionGroup; import org.eclipse.jst.pagedesigner.commands.CopyAction; @@ -49,6 +48,7 @@ import org.eclipse.jst.pagedesigner.dnd.internal.DesignerTemplateTransferDragSou import org.eclipse.jst.pagedesigner.dnd.internal.LocalSelectionDropTargetListener; import org.eclipse.jst.pagedesigner.dnd.internal.PDTemplateTransferDropTargetListener; import org.eclipse.jst.pagedesigner.dnd.internal.ResouceDropTargetListener; +import org.eclipse.jst.pagedesigner.editors.actions.ActionsMessages; import org.eclipse.jst.pagedesigner.editors.actions.DesignerUndoRedoAction; import org.eclipse.jst.pagedesigner.editors.actions.RelatedViewActionGroup; import org.eclipse.jst.pagedesigner.editors.palette.DesignerPaletteCustomizer; @@ -89,9 +89,10 @@ import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; /** * @author mengbo */ -public class SimpleGraphicalEditor extends GraphicalEditor implements +public class SimpleGraphicalEditor extends GraphicalEditorWithFlyoutPalette implements IDesignViewer, IDocumentSelectionMediator { - private HTMLEditor _delegate; + + private HTMLEditor _delegate; private HTMLGraphicalViewer _viewer; @@ -105,6 +106,7 @@ public class SimpleGraphicalEditor extends GraphicalEditor implements private IModelStateListener _internalModelListener = new IModelStateListener() { public void modelAboutToBeChanged(IStructuredModel model) { + // do nothing } public void modelChanged(IStructuredModel model) { @@ -113,19 +115,24 @@ public class SimpleGraphicalEditor extends GraphicalEditor implements public void modelDirtyStateChanged(IStructuredModel model, boolean isDirty) { + // do nothing } public void modelResourceDeleted(IStructuredModel model) { + // do nothing } public void modelResourceMoved(IStructuredModel oldModel, IStructuredModel newModel) { + // do nothing } public void modelAboutToBeReinitialized(IStructuredModel structuredModel) { + // do nothing } public void modelReinitialized(IStructuredModel structuredModel) { + // do nothing } }; @@ -200,6 +207,8 @@ public class SimpleGraphicalEditor extends GraphicalEditor implements } } }); + + super.initializeGraphicalViewer(); } protected void initializeContextMenu() { @@ -208,79 +217,7 @@ public class SimpleGraphicalEditor extends GraphicalEditor implements menuMgr.setRemoveAllWhenShown(true); Menu menu = menuMgr.createContextMenu(gviewer); gviewer.setMenu(menu); - menuMgr.addMenuListener(new IMenuListener() { - public void menuAboutToShow(IMenuManager menuMgr1) { - PageDesignerActionConstants.addStandardActionGroups(menuMgr1); - - menuMgr1.add(new RunAction(SimpleGraphicalEditor.this._delegate, - RunAction.LAUNCH_MODE_RUN)); - menuMgr1.add(new RunAction(SimpleGraphicalEditor.this._delegate, - RunAction.LAUNCH_MODE_DEBUG)); - // FIXME: for UNDO/REDO, maybe need also wrap them in - // DesignerCommand. - // otherwise don't have validate() called after the source - // change. - menuMgr1.appendToGroup(PageDesignerActionConstants.GROUP_UNDO, - getAction(IWorkbenchActionDefinitionIds.UNDO)); - menuMgr1.appendToGroup(PageDesignerActionConstants.GROUP_UNDO, - getAction(IWorkbenchActionDefinitionIds.REDO)); - - menuMgr1.appendToGroup(PageDesignerActionConstants.GROUP_EDIT, - getAction(IWorkbenchActionDefinitionIds.CUT)); - menuMgr1.appendToGroup(PageDesignerActionConstants.GROUP_EDIT, - getAction(IWorkbenchActionDefinitionIds.COPY)); - menuMgr1.appendToGroup(PageDesignerActionConstants.GROUP_EDIT, - getAction(IWorkbenchActionDefinitionIds.PASTE)); - menuMgr1.appendToGroup(PageDesignerActionConstants.GROUP_EDIT, - getAction(IWorkbenchActionDefinitionIds.DELETE)); - - ContainerActionGroup containerActionGroup = new ContainerActionGroup(); - ActionContext context = new ActionContext(_viewer - .getSelection()); - context.setInput(_viewer); - containerActionGroup.setContext(context); - containerActionGroup.fillContextMenu(menuMgr1); - containerActionGroup.setContext(null); - - // TableActionGroup tableActionGroup = new TableActionGroup(); - // tableActionGroup.setContext(new - // ActionContext(_viewer.getSelection())); - // tableActionGroup.fillContextMenu(menuMgr); - // tableActionGroup.setContext(null); - - RangeActionGroup rangeActionGroup = new RangeActionGroup(); - context = new ActionContext(_viewer.getSelection()); - context.setInput(_viewer); - rangeActionGroup.setContext(context); - rangeActionGroup.fillContextMenu(menuMgr1); - rangeActionGroup.setContext(null); - - SingleElementActionGroup singleActionGroup = new SingleElementActionGroup(); - singleActionGroup.setContext(new ActionContext(_viewer - .getSelection())); - singleActionGroup.fillContextMenu(menuMgr1); - singleActionGroup.setContext(null); - - // IAction customize = - // graphicalActionRegistry.getAction(CustomizeJavaBeanAction.ACTION_ID); - // if (customize.isEnabled()) - // menuMgr.appendToGroup(GEFActionConstants.GROUP_EDIT, - // customize); - - RelatedViewActionGroup viewMenu = new RelatedViewActionGroup(); - viewMenu.fillContextMenu(menuMgr1); - - CustomedContextMenuActionGroup customedMenu = new CustomedContextMenuActionGroup(); - customedMenu.setContext(new ActionContext(_viewer - .getSelection())); - customedMenu.setModel(_model); - customedMenu.setParentControl(_viewer.getControl()); - customedMenu.fillContextMenu(menuMgr1); - customedMenu.setContext(null); - customedMenu.setParentControl(null); - customedMenu.setModel(null); - } - }); + menuMgr.addMenuListener(new ContextMenuListener()); getSite().registerContextMenu( "HTMLVisualEditor.contextMenu", menuMgr, _viewer); //$NON-NLS-1$ } @@ -547,6 +484,11 @@ public class SimpleGraphicalEditor extends GraphicalEditor implements }; } + PaletteViewerProvider getPaletteViewerProvider2() + { + return getPaletteViewerProvider(); + } + /* * (non-Javadoc) * @@ -663,4 +605,131 @@ public class SimpleGraphicalEditor extends GraphicalEditor implements }); } } + + private final class ContextMenuListener implements IMenuListener + { + public void menuAboutToShow(IMenuManager menuMgr1) + { + // add standarized sub-menus + addEditSubMenu(menuMgr1); + addSelectSubMenu(menuMgr1); + addInsertSubMenu(menuMgr1); + addNavigateSubMenu(menuMgr1); + addStyleSubMenu(menuMgr1); + + // add separators that mark standard append locations in the main + // context menu + PageDesignerActionConstants.addStandardActionGroups(menuMgr1); + + // TODO: Run/Debug? + + // insert ElementEdit contributed menu items + final ContainerActionGroup containerActionGroup = + new ContainerActionGroup(); + ActionContext context = new ActionContext(_viewer + .getSelection()); + context.setInput(_viewer); + containerActionGroup.setContext(context); + containerActionGroup.fillContextMenu(menuMgr1); + containerActionGroup.setContext(null); + + // TODO: TableActionGroup + + // if on a text context, (instead of a ElementEditPart), + // add text styling actions + final RangeActionGroup rangeActionGroup = new RangeActionGroup(); + context = new ActionContext(_viewer.getSelection()); + context.setInput(_viewer); + rangeActionGroup.setContext(context); + rangeActionGroup.fillContextMenu(menuMgr1); + rangeActionGroup.setContext(null); + + // Add actions for single ElementEditPart's that are common + // to all + final SingleElementActionGroup singleActionGroup = + new SingleElementActionGroup(); + singleActionGroup.setContext(new ActionContext(_viewer + .getSelection())); + singleActionGroup.fillContextMenu(menuMgr1); + singleActionGroup.setContext(null); + + // add "Show In" actions... + final RelatedViewActionGroup viewMenu = new RelatedViewActionGroup(getEditDomain()); + context = new ActionContext(_viewer.getSelection()); + viewMenu.setContext(context); + viewMenu.fillContextMenu(menuMgr1); + + // add extension point contributed menu actions + CustomedContextMenuActionGroup customedMenu = new CustomedContextMenuActionGroup(); + customedMenu.setContext(new ActionContext(_viewer + .getSelection())); + customedMenu.setModel(_model); + customedMenu.setParentControl(_viewer.getControl()); + customedMenu.fillContextMenu(menuMgr1); + customedMenu.setContext(null); + customedMenu.setParentControl(null); + customedMenu.setModel(null); + } + + private void addNavigateSubMenu(IMenuManager menu) { + final IMenuManager navigateSubmenu = + new MenuManager(ActionsMessages.getString("Navigate.Menu") //$NON-NLS-1$ + , PageDesignerActionConstants.NAVIGATE_SUBMENU_ID); + menu.add(navigateSubmenu); + PageDesignerActionConstants.addStandardNavigateActionGroups(navigateSubmenu); + } + + private void addEditSubMenu(IMenuManager menu) + { + final IMenuManager editSubmenu + = new MenuManager(ActionsMessages.getString("Edit.Menu") //$NON-NLS-1$ + , PageDesignerActionConstants.EDIT_SUBMENU_ID); + menu.add(editSubmenu); + PageDesignerActionConstants.addStandardEditActionGroups(editSubmenu); + + // FIXME: for UNDO/REDO, maybe need also wrap them in + // DesignerCommand. + // otherwise don't have validate() called after the source + // change. + editSubmenu.appendToGroup(PageDesignerActionConstants.GROUP_UNDO, + getAction(IWorkbenchActionDefinitionIds.UNDO)); + editSubmenu.appendToGroup(PageDesignerActionConstants.GROUP_UNDO, + getAction(IWorkbenchActionDefinitionIds.REDO)); + + editSubmenu.appendToGroup(PageDesignerActionConstants.GROUP_EDIT, + getAction(IWorkbenchActionDefinitionIds.CUT)); + editSubmenu.appendToGroup(PageDesignerActionConstants.GROUP_EDIT, + getAction(IWorkbenchActionDefinitionIds.COPY)); + editSubmenu.appendToGroup(PageDesignerActionConstants.GROUP_EDIT, + getAction(IWorkbenchActionDefinitionIds.PASTE)); + editSubmenu.appendToGroup(PageDesignerActionConstants.GROUP_EDIT, + getAction(IWorkbenchActionDefinitionIds.DELETE)); + + } + + private void addStyleSubMenu(IMenuManager menu) + { + final IMenuManager styleSubmenu = + new MenuManager(ActionsMessages.getString("Style.Menu") //$NON-NLS-1$ + , PageDesignerActionConstants.STYLE_SUBMENU_ID); + menu.add(styleSubmenu); + PageDesignerActionConstants.addStandardStyleActionGroups(styleSubmenu); + } + private void addInsertSubMenu(IMenuManager menu) { + final IMenuManager insertSubmenu = + new MenuManager(ActionsMessages.getString("Insert.Menu") //$NON-NLS-1$ + , PageDesignerActionConstants.INSERT_SUBMENU_ID); + menu.add(insertSubmenu); + PageDesignerActionConstants.addStandardInsertActionGroups(insertSubmenu); + } + + private void addSelectSubMenu(IMenuManager menu) + { + final IMenuManager selectSubMenu = + new MenuManager(ActionsMessages.getString("Select.Menu") //$NON-NLS-1$ + , PageDesignerActionConstants.SELECT_SUBMENU_ID); + menu.add(selectSubMenu); + PageDesignerActionConstants.addStandardSelectActionGroups(selectSubMenu); + } + } } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ActionsMessages.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ActionsMessages.properties index 9907f3935..ad1f45958 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ActionsMessages.properties +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ActionsMessages.properties @@ -10,9 +10,10 @@ DesignActionBarFactory.Bold.Text=Bold DesignActionBarFactory.Small.Text=Small DesignActionBarFactory.Big.Text=Big PaletteViewAction.Menu.PaletteView=Palette -RelatedViewActionGroup.Menu.ShowView=Show View +RelatedViewActionGroup.Menu.ShowView=Show PropertiesViewAction.Menu.Properties=Properties DataBindingViewAction.Menu.DataBinding=DataBinding +OutlineViewAction.Menu.OutlineView=Outline DesignerStyleActionGroup.CommandLabel.V=V DesignerStyleActionGroup.CommandLabel.H=H DesignerStyleActionGroup.CommandLabel.D=D @@ -24,4 +25,9 @@ DesignerStyleActionGroup.CommandLabel.S.Tooltip=Only Show Source Page DesignerUndoRedoAction.UNDO=Undo DesignerUndoRedoAction.REDO=Redo DesignerUndoRedoAction.UNDO_LABEL=Undo {0} -DesignerUndoRedoAction.REDO_LABEL=Redo {0}
\ No newline at end of file +DesignerUndoRedoAction.REDO_LABEL=Redo {0} +Select.Menu=Select +Edit.Menu=Edit +Navigate.Menu=Navigate +Style.Menu=Style +Insert.Menu=Insert diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/DataBindingViewAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/DataBindingViewAction.java index 9d55a058b..a3350c853 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/DataBindingViewAction.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/DataBindingViewAction.java @@ -47,7 +47,6 @@ public class DataBindingViewAction extends Action { } catch (PartInitException e) { _log.error("Error opening the DataBindingView"); } - } private IWorkbenchPage getPage() { diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/OutlineViewAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/OutlineViewAction.java new file mode 100644 index 000000000..813e1e23c --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/OutlineViewAction.java @@ -0,0 +1,15 @@ +package org.eclipse.jst.pagedesigner.editors.actions; + +import org.eclipse.ui.IPageLayout; + +public class OutlineViewAction extends ShowViewAction +{ + public final static String ID = "org.eclipse.jst.pagedesigner.editors.actions.OutlineViewAction"; //$NON-NLS-1$ + + public OutlineViewAction() + { + super(ActionsMessages + .getString("OutlineViewAction.Menu.OutlineView") + , IPageLayout.ID_OUTLINE); //$NON-NLS-1$ + } +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/PaletteViewAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/PaletteViewAction.java index d910ccdbc..a167800ec 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/PaletteViewAction.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/PaletteViewAction.java @@ -11,46 +11,96 @@ *******************************************************************************/ package org.eclipse.jst.pagedesigner.editors.actions; +import org.eclipse.gef.EditDomain; import org.eclipse.gef.ui.views.palette.PaletteView; -import org.eclipse.jface.action.Action; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.jst.pagedesigner.PDPlugin; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; +import org.w3c.dom.Element; /** * @author mengbo * @version 1.5 */ -public class PaletteViewAction extends Action { +public class PaletteViewAction extends ShowViewAction { public final static String ID = "org.eclipse.jst.pagedesigner.editors.actions.PaletteViewAction"; //$NON-NLS-1$ - - private static Logger _log = PDPlugin.getLogger(PaletteViewAction.class); - - public PaletteViewAction() { - setText(ActionsMessages.getString("PaletteViewAction.Menu.PaletteView")); //$NON-NLS-1$ - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.action.IAction#run() - */ - public void run() { - try { - getPage().showView(PaletteView.ID); - } catch (PartInitException e) { - _log.info("Open the Palette View", e); - } - - } - - private IWorkbenchPage getPage() { - IWorkbench workbench = PlatformUI.getWorkbench(); - IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); - return window.getActivePage(); + private final Element _element; + private final EditDomain _editDomain; + + public PaletteViewAction(Element element, EditDomain editDomain) { + super(ActionsMessages.getString("PaletteViewAction.Menu.PaletteView") + , PaletteView.ID); //$NON-NLS-1$ + _element = element; + _editDomain = editDomain; } + + /** + * Add to default behavior because pallete view doesn't automatically track + * selection to currently selected edit part + */ + public void run() + { + super.run(); + + //TODO: for some reason getting a palette item to select doesn't work +// if (_element != null && _editDomain != null) +// { +// PaletteItemManager manager = PaletteItemManager +// .getInstance(getProject(_element)); +// if (manager != null) { +// IPaletteItemCategory category = manager.findOrCreateCategory(CMUtil +// .getElementNamespaceURI(_element), null); +// +// if (category != null) { +// String name = _element.getLocalName(); +// if (category.getURI().equals(IJMTConstants.URI_JSP)) { +// name = _element.getTagName(); +// } +// IPaletteItemDescriptor descriptor = category +// .getItemByTagName(name); +// if (descriptor != null) +// { +// PaletteEntry paletteEntry = descriptor.getPaletteEntry(); +// final RootEditPart editPart = +// _editDomain.getPaletteViewer().getRootEditPart(); +// EditPart newSelection = findMatchingPart(editPart.getContents(), paletteEntry); +// +// if (newSelection != null) +// { +// _editDomain.getPaletteViewer().setSelection(new StructuredSelection(newSelection)); +// } +// } +// } +// } +// } + } + +// private EditPart findMatchingPart(EditPart curPart, PaletteEntry paletteEntry) +// { +// EditPart match = null; +// +// if (curPart.getModel() == paletteEntry) +// { +// return curPart; +// } +// +// for (final Iterator it = curPart.getChildren().iterator(); it.hasNext();) +// { +// match = findMatchingPart((EditPart)it.next(), paletteEntry); +// +// if (match != null) +// { +// break; +// } +// } +// +// return match; +// } +// private IProject getProject(Element element) { +// if (element instanceof IDOMElement) { +// IDOMModel model = ((IDOMElement) element).getModel(); +// IFile file = StructuredModelUtil.getFileFor(model); +// if (file != null) { +// return file.getProject(); +// } +// } +// return null; +// } } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/PropertiesViewAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/PropertiesViewAction.java index c6dcdd3db..77a085d9a 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/PropertiesViewAction.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/PropertiesViewAction.java @@ -11,46 +11,18 @@ *******************************************************************************/ package org.eclipse.jst.pagedesigner.editors.actions; -import org.eclipse.jface.action.Action; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.jst.pagedesigner.PDPlugin; import org.eclipse.ui.IPageLayout; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; /** * @author mengbo */ -public class PropertiesViewAction extends Action { +public class PropertiesViewAction extends ShowViewAction { public final static String ID = "org.eclipse.jst.pagedesigner.editors.actions.PropertiesViewAction"; //$NON-NLS-1$ - private static Logger _log = PDPlugin.getLogger(PropertiesViewAction.class); - - public PropertiesViewAction() { - setText(ActionsMessages - .getString("PropertiesViewAction.Menu.Properties")); //$NON-NLS-1$ - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.action.IAction#run() - */ - public void run() { - try { - getPage().showView(IPageLayout.ID_PROP_SHEET); - } catch (PartInitException e) { - _log.info("Open the Properties View", e); - } - - } - - private IWorkbenchPage getPage() { - IWorkbench workbench = PlatformUI.getWorkbench(); - IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); - return window.getActivePage(); + public PropertiesViewAction() + { + super(ActionsMessages + .getString("PropertiesViewAction.Menu.Properties") + , IPageLayout.ID_PROP_SHEET); //$NON-NLS-1$ } } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/RelatedViewActionGroup.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/RelatedViewActionGroup.java index 4fd500745..dfdf38589 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/RelatedViewActionGroup.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/RelatedViewActionGroup.java @@ -18,21 +18,35 @@ import java.util.Map; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; +import org.eclipse.gef.EditDomain; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jst.pagedesigner.editors.PageDesignerActionConstants; +import org.eclipse.jst.pagedesigner.parts.ElementEditPart; import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.actions.ActionContext; import org.eclipse.ui.actions.ActionGroup; import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.w3c.dom.Element; /** * @author mengbo * @version 1.5 */ -public class RelatedViewActionGroup extends ActionGroup { +public class RelatedViewActionGroup extends ActionGroup +{ + private final EditDomain _editDomain; + + public RelatedViewActionGroup(EditDomain editDomain) + { + _editDomain = editDomain; + } + /* * (non-Javadoc) * @@ -43,17 +57,20 @@ public class RelatedViewActionGroup extends ActionGroup { final IMenuManager viewMgr = new MenuManager(ActionsMessages .getString("RelatedViewActionGroup.Menu.ShowView"),//$NON-NLS-1$ - PageDesignerActionConstants.MENUMGR_VIEW_ID); + PageDesignerActionConstants.SHOWVIEW_SUBMENU_ID); viewMgr.add(new Action() { // add noop action; TODO: why? }); viewMgr.setRemoveAllWhenShown(true); + final ActionContext context = getContext(); viewMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { + // TODO: don't like this at all String[] views = { "org.eclipse.ui.views.PropertySheet", - "org.eclipse.gef.ui.palette_view"}; -// "org.eclipse.jst.pagedesigner.databinding.ui.views.DataBindingsView" }; - Map icons = getIconForView(views); + "org.eclipse.gef.ui.palette_view", "org.eclipse.ui.views.ContentOutline"}; + + Map icons = getIconForView(views); + // TODO: is this the best way to do this? if (manager.find(PropertiesViewAction.ID) == null) { Action action = new PropertiesViewAction(); action.setId(PropertiesViewAction.ID); @@ -62,21 +79,39 @@ public class RelatedViewActionGroup extends ActionGroup { manager.add(action); } if (manager.find(PaletteViewAction.ID) == null) { - Action action = new PaletteViewAction(); - action.setId(PaletteViewAction.ID); - action.setImageDescriptor((ImageDescriptor) icons - .get(views[1])); - manager.add(action); - } - /* - if (manager.find(DataBindingViewAction.ID) == null) { - Action action = new DataBindingViewAction(); - action.setId(DataBindingViewAction.ID); - action.setImageDescriptor((ImageDescriptor) icons - .get(views[2])); - manager.add(action); + ISelection selection = context.getSelection(); + if (selection instanceof IStructuredSelection) + { + IStructuredSelection strucSelection = + (IStructuredSelection) selection; + Action action = null; + + if (strucSelection.getFirstElement() instanceof ElementEditPart) + { + Element selectedElem = (Element) + ((ElementEditPart) strucSelection.getFirstElement()).getModel(); + action = new PaletteViewAction(selectedElem, _editDomain); + } + else + { + // if can't determine, just default open the palette + action = new PaletteViewAction(null, null); + } + action.setId(PaletteViewAction.ID); + action.setImageDescriptor((ImageDescriptor) icons + .get(views[1])); + manager.add(action); + } } - */ + if (manager.find(OutlineViewAction.ID) == null) + { + Action action = new OutlineViewAction(); + action.setId(OutlineViewAction.ID); + action.setImageDescriptor((ImageDescriptor) icons + .get(views[2])); + manager.add(action); + } + } }); menu.appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, viewMgr); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ShowViewAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ShowViewAction.java new file mode 100644 index 000000000..8db2a83f1 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/actions/ShowViewAction.java @@ -0,0 +1,46 @@ +package org.eclipse.jst.pagedesigner.editors.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; +import org.eclipse.jst.pagedesigner.PDPlugin; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; + +/** + * TODO: isn't there a workbench registry action for this? + * @author cbateman + * + */ +public class ShowViewAction extends Action { + private static Logger _log = PDPlugin.getLogger(PropertiesViewAction.class); + private final String _viewId; + + public ShowViewAction(String text, String viewId) + { + _viewId = viewId; + setText(text); //$NON-NLS-1$ + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.action.IAction#run() + */ + public void run() { + try { + getPage().showView(_viewId); + } catch (PartInitException e) { + _log.info("Open the view: "+_viewId, e); + } + + } + + private IWorkbenchPage getPage() { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); + return window.getActivePage(); + } +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewer.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewer.java index f2edb7489..aee88e115 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewer.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewer.java @@ -184,7 +184,6 @@ public class DesignerPaletteViewer extends PaletteViewer { } public void setPaletteRoot(PaletteRoot root) { - // TODO Auto-generated method stub super.setPaletteRoot(root); // add palette model change listener // PaletteRoot root = getPaletteRoot(); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/TableElementEdit.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/TableElementEdit.java index a0ad741ae..1febdd232 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/TableElementEdit.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/TableElementEdit.java @@ -133,7 +133,7 @@ public class TableElementEdit extends AbstractElementEdit { */ private void fillTableMenu(ElementEditPart tablePart, int cellRow, int cellColumn, IMenuManager tableMenu) { - SelectEditPartAction action1 = new SelectEditPartAction( + SelectEditPartAction action1 = SelectEditPartAction.create( PDPlugin.getResourceString("ElementEdit.Submenu.SelectTable"), tablePart);//$NON-NLS-1$ tableMenu.add(action1); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignPosition.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignPosition.java index 5111dac4c..3e10f3213 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignPosition.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/DesignPosition.java @@ -36,8 +36,6 @@ public class DesignPosition { public DesignPosition(EditPart part, int offset) { _containerPart = part; _offset = offset; - - // TODO: ?? int[] a = new int[] { 0, 0 }; } /** |