diff options
author | kchong | 2007-03-14 02:45:59 +0000 |
---|---|---|
committer | kchong | 2007-03-14 02:45:59 +0000 |
commit | 199f5d758bac502b7e2486b2ec2b94ce91121510 (patch) | |
tree | 4fdd07add5f9e4b734d3573888492c1a32fd4952 | |
parent | c3036f93083658a7dff6d1d6bc7a5ffe6f474163 (diff) | |
download | webtools.sourceediting-199f5d758bac502b7e2486b2ec2b94ce91121510.tar.gz webtools.sourceediting-199f5d758bac502b7e2486b2ec2b94ce91121510.tar.xz webtools.sourceediting-199f5d758bac502b7e2486b2ec2b94ce91121510.zip |
[176565] Enhancements to XML Schema Editor. Refactor the toolbar.
11 files changed, 351 insertions, 158 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/InternalXSDMultiPageEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/InternalXSDMultiPageEditor.java index 15dc4c9f5d..f20eadbcb7 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/InternalXSDMultiPageEditor.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/InternalXSDMultiPageEditor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2001, 2006 IBM Corporation and others. + * Copyright (c) 2001, 2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,6 +21,7 @@ import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPartFactory; +import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.KeyStroke; import org.eclipse.gef.RootEditPart; import org.eclipse.gef.ui.actions.ActionRegistry; @@ -28,6 +29,8 @@ import org.eclipse.gef.ui.actions.GEFActionConstants; import org.eclipse.gef.ui.actions.PrintAction; import org.eclipse.jface.action.IAction; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.IDoubleClickListener; @@ -40,6 +43,8 @@ import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.INavigationLocation; @@ -116,7 +121,7 @@ public class InternalXSDMultiPageEditor extends ADTMultiPageEditor implements IT private XSDSelectionManagerSelectionListener fXSDSelectionListener; private InternalDocumentChangedNotifier internalDocumentChangedNotifier = new InternalDocumentChangedNotifier(); private static final String XSD_EDITOR_MODE_EXTENSION_ID = "org.eclipse.wst.xsd.ui.editorModes"; //$NON-NLS-N$ - + private XSDPreferenceStoreListener xsdPreferenceStoreListener; class InternalDocumentChangedNotifier implements IDocumentChangedNotifier { @@ -268,6 +273,8 @@ public class InternalXSDMultiPageEditor extends ADTMultiPageEditor implements IT } } getSelectionManager().removeSelectionChangedListener(fXSDSelectionListener); + XSDEditorPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(xsdPreferenceStoreListener); + xsdPreferenceStoreListener = null; super.dispose(); } @@ -473,6 +480,22 @@ public class InternalXSDMultiPageEditor extends ADTMultiPageEditor implements IT // Select the schema to show the properties getSelectionManager().setSelection(new StructuredSelection(getModel())); + + xsdPreferenceStoreListener = new XSDPreferenceStoreListener(); + XSDEditorPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(xsdPreferenceStoreListener); + } + + protected class XSDPreferenceStoreListener implements IPropertyChangeListener + { + public void propertyChange(PropertyChangeEvent evt) + { + String property = evt.getProperty(); + if (XSDEditorPlugin.CONST_SHOW_EXTERNALS.equals(property)) + { + ((GraphicalEditPart) graphicalViewer.getContents()).getFigure().invalidateTree(); + graphicalViewer.getContents().refresh(); + } + } } protected void createActions() @@ -985,6 +1008,17 @@ public class InternalXSDMultiPageEditor extends ADTMultiPageEditor implements IT //viewer.getRootEditPart().refresh(); // viewer.getRootEditPart().getContents().refresh(); viewer.setInput(input); + + floatingToolbar.setEditPartFactory(editPartFactory); + floatingToolbar.setModel(getModel()); + floatingToolbar.refresh(!(input instanceof IModel)); + + Control control = graphicalViewer.getControl(); + if (control instanceof Composite) + { + Composite parent = ((Composite)control).getParent(); + parent.layout(); + } } } IContentProvider provider = newEditorMode.getOutlineProvider(); diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDEditorPlugin.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDEditorPlugin.java index 2dc4ca13bd..76d7a91d17 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDEditorPlugin.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDEditorPlugin.java @@ -54,6 +54,7 @@ public class XSDEditorPlugin extends AbstractUIPlugin public static final String CONST_XSD_LANGUAGE_QUALIFY = "org.eclipse.wst.xmlschema.xsdQualify"; //$NON-NLS-1$ public static final String CONST_DEFAULT_TARGET_NAMESPACE = "org.eclipse.wst.xmlschema.defaultTargetnamespaceText"; //$NON-NLS-1$ + public static final String CONST_SHOW_EXTERNALS = PLUGIN_ID + ".showExternals"; //$NON-NLS-1$ public static String DEFAULT_PAGE = "org.eclipse.wst.xsd.ui.internal.defaultPage"; public static String DESIGN_PAGE = "org.eclipse.wst.xsd.ui.internal.designPage"; @@ -234,6 +235,7 @@ public class XSDEditorPlugin extends AbstractUIPlugin store.setDefault(CONST_XSD_LANGUAGE_QUALIFY, false); store.setDefault(DEFAULT_PAGE, DESIGN_PAGE); store.setDefault(CONST_DEFAULT_TARGET_NAMESPACE, DEFAULT_TARGET_NAMESPACE); + store.setDefault(CONST_SHOW_EXTERNALS, false); //Even the last item in the list must contain a trailing List separator store.setDefault(CONST_PREFERED_BUILT_IN_TYPES, @@ -277,14 +279,15 @@ public class XSDEditorPlugin extends AbstractUIPlugin return getPreferenceStore().getString(CONST_XSD_DEFAULT_PREFIX_TEXT); } + public boolean getShowExternals() + { + return getPreferenceStore().getBoolean(CONST_SHOW_EXTERNALS); + } - - - - - - - + public void setShowExternals(boolean doShow) + { + getPreferenceStore().setValue(CONST_SHOW_EXTERNALS, doShow); + } /** * Get the xml schema default target namespace diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/ADTFloatingToolbar.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/ADTFloatingToolbar.java index 9a75fc1d23..190bc0531c 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/ADTFloatingToolbar.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/ADTFloatingToolbar.java @@ -11,50 +11,35 @@ package org.eclipse.wst.xsd.ui.internal.adt.design; import org.eclipse.draw2d.ColorConstants; -import org.eclipse.draw2d.Figure; -import org.eclipse.draw2d.IFigure; -import org.eclipse.draw2d.MouseEvent; -import org.eclipse.draw2d.MouseListener; -import org.eclipse.draw2d.MouseMotionListener; -import org.eclipse.draw2d.ToolbarLayout; -import org.eclipse.draw2d.geometry.Dimension; -import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.ui.parts.GraphicalViewerImpl; import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.xsd.ui.internal.adt.actions.SetInputToGraphView; -import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.BaseEditPart; -import org.eclipse.wst.xsd.ui.internal.adt.editor.Messages; +import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.ADTFloatingToolbarEditPart; import org.eclipse.wst.xsd.ui.internal.adt.facade.IModel; -import org.eclipse.wst.xsd.ui.internal.design.figures.CenteredIconFigure; -import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin; public class ADTFloatingToolbar extends GraphicalViewerImpl { protected IModel model; protected boolean isDrilledDown; - protected ADTToolbarButton backToSchema; protected ADTFloatingToolbarEditPart editPart; public ADTFloatingToolbar(IModel model) { this.model = model; - editPart = new ADTFloatingToolbarEditPart(); - editPart.setModel(model); - setContents(editPart); } public void setModel(IModel model) { this.model = model; + editPart = (ADTFloatingToolbarEditPart)getEditPartFactory().createEditPart(null, new ADTFloatingToolbarModel(model)); + if (editPart == null) + { + editPart = new ADTFloatingToolbarEditPart(model); + } editPart.setModel(model); + setContents(editPart); } public Control createControl(Composite composite) @@ -68,125 +53,21 @@ public class ADTFloatingToolbar extends GraphicalViewerImpl public void refresh(boolean isDrilledDown) { this.isDrilledDown = isDrilledDown; + editPart.setIsDrilledDown(isDrilledDown); getContents().refresh(); } - - protected void addToToolbar(IFigure figure) - { - - } - - protected class ADTFloatingToolbarEditPart extends BaseEditPart + + public class ADTFloatingToolbarModel { - protected IFigure createFigure() + IModel model; + public ADTFloatingToolbarModel(IModel model) { - Figure figure = new Figure(); - ToolbarLayout tb = new ToolbarLayout(true); - tb.setStretchMinorAxis(false); - tb.setSpacing(3); - figure.setLayoutManager(tb); - - backToSchema = new ADTToolbarButton(XSDEditorPlugin.getPlugin().getIcon("elcl16/schemaview_co.gif")); - backToSchema.setToolTipText(Messages._UI_HOVER_BACK_TO_SCHEMA); - backToSchema.setBackgroundColor(ColorConstants.white); - figure.add(backToSchema); - - addToToolbar(figure); - - return figure; + this.model = model; } - protected void refreshVisuals() - { - super.refreshVisuals(); - backToSchema.isEnabled = isDrilledDown; - if (isDrilledDown) - { - backToSchema.image = XSDEditorPlugin.getPlugin().getIcon("elcl16/schemaview_co.gif"); - } - else - { - backToSchema.image = XSDEditorPlugin.getPlugin().getIcon("dlcl16/schemaview_co.gif"); - } - backToSchema.refresh(); - } - } - - protected void doAction(MouseEvent me) - { - IWorkbench workbench = PlatformUI.getWorkbench(); - IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); - IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor(); - - if (backToSchema.getBounds().contains(me.getLocation())) - { - SetInputToGraphView action = new SetInputToGraphView(editorPart, model); - action.run(); - } - } - - protected class ADTToolbarButton extends CenteredIconFigure - { - protected MouseListener mouseListener; - public boolean isEnabled; - - public ADTToolbarButton(Image img) - { - super(); - this.image = img; - - mouseListener = new MouseListener.Stub() - { - public void mousePressed(org.eclipse.draw2d.MouseEvent me) - { - if (isEnabled) - { - addFeedback(); - } - } - - public void mouseReleased(org.eclipse.draw2d.MouseEvent me) - { - if (isEnabled) - { - removeFeedback(); - doAction(me); - } - } - }; - addMouseListener(mouseListener); - addMouseMotionListener(new MouseMotionListener.Stub() - { - public void mouseExited(MouseEvent me) - { - removeFeedback(); - } - }); - } - - public void addFeedback() - { - setMode(CenteredIconFigure.SELECTED); - refresh(); - } - - public void removeFeedback() - { - setMode(CenteredIconFigure.NORMAL); - refresh(); - } - - public Rectangle getBounds() - { - Rectangle r = super.getBounds(); - org.eclipse.swt.graphics.Rectangle rect = image.getBounds(); - return new Rectangle(r.x, r.y, rect.width + 8, rect.height + 8); - } - - public Dimension getPreferredSize(int hint, int hint2) + public IModel getModel() { - org.eclipse.swt.graphics.Rectangle rect = image.getBounds(); - return new Dimension(rect.width + 8, rect.height + 8); + return model; } } } diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/DesignViewGraphicalViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/DesignViewGraphicalViewer.java index 40b8be5dc0..a2289e4301 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/DesignViewGraphicalViewer.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/DesignViewGraphicalViewer.java @@ -22,6 +22,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IEditorPart; +import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.IHolderEditPart; import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.RootContentEditPart; import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IGraphElement; import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IModelProxy; @@ -199,7 +200,7 @@ public class DesignViewGraphicalViewer extends ScrollingGraphicalViewer implemen for (Iterator i = parent.getChildren().iterator(); i.hasNext(); ) { EditPart editPart = (EditPart)i.next(); - if (editPart.getModel() == object) + if (editPart.getModel() == object && !(editPart instanceof IHolderEditPart)) { result = editPart; break; @@ -224,10 +225,9 @@ public class DesignViewGraphicalViewer extends ScrollingGraphicalViewer implemen public void setInput(IADTObject object) { - // Force refresh of all edit parts - RootContentEditPart rootContentEditPart = new RootContentEditPart(); + RootContentEditPart rootContentEditPart = (RootContentEditPart)getRootEditPart().getContents(); rootContentEditPart.setModel(object); - setContents(rootContentEditPart); + rootContentEditPart.refresh(); if (object != null) { diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTEditPartFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTEditPartFactory.java index e89271e4ae..26426048ab 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTEditPartFactory.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTEditPartFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2001, 2006 IBM Corporation and others. + * Copyright (c) 2001, 2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,9 +14,11 @@ import org.eclipse.draw2d.ToolbarLayout; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPartFactory; import org.eclipse.jface.util.Assert; +import org.eclipse.wst.xsd.ui.internal.adt.design.ADTFloatingToolbar.ADTFloatingToolbarModel; import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.AbstractModelCollection; import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.Compartment; import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.FocusTypeColumn; +import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.RootHolder; import org.eclipse.wst.xsd.ui.internal.adt.facade.IComplexType; import org.eclipse.wst.xsd.ui.internal.adt.facade.IField; import org.eclipse.wst.xsd.ui.internal.adt.facade.IModel; @@ -37,7 +39,15 @@ public class ADTEditPartFactory implements EditPartFactory if (model instanceof Compartment) { child = new CompartmentEditPart(); - } + } + else if (model instanceof RootHolder) + { + child = new RootHolderEditPart(); + } + else if (model instanceof ADTFloatingToolbarModel) + { + child = new ADTFloatingToolbarEditPart(((ADTFloatingToolbarModel)model).getModel()); + } else if (model instanceof AbstractModelCollection) { child = new ColumnEditPart(); diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTFloatingToolbarEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTFloatingToolbarEditPart.java new file mode 100644 index 0000000000..adbdab2314 --- /dev/null +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTFloatingToolbarEditPart.java @@ -0,0 +1,166 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.wst.xsd.ui.internal.adt.design.editparts; + +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.Figure; +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.MouseEvent; +import org.eclipse.draw2d.MouseListener; +import org.eclipse.draw2d.MouseMotionListener; +import org.eclipse.draw2d.ToolbarLayout; +import org.eclipse.draw2d.geometry.Dimension; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.wst.xsd.ui.internal.adt.actions.SetInputToGraphView; +import org.eclipse.wst.xsd.ui.internal.adt.editor.Messages; +import org.eclipse.wst.xsd.ui.internal.adt.facade.IModel; +import org.eclipse.wst.xsd.ui.internal.design.figures.CenteredIconFigure; +import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin; + +public class ADTFloatingToolbarEditPart extends BaseEditPart +{ + protected IModel model; + protected boolean isDrilledDown; + protected ADTToolbarButton backToSchema; + + public ADTFloatingToolbarEditPart(IModel model) + { + this.model = model; + } + + protected IFigure createFigure() + { + Figure figure = new Figure(); + ToolbarLayout tb = new ToolbarLayout(true); + tb.setStretchMinorAxis(false); + tb.setSpacing(3); + figure.setLayoutManager(tb); + + backToSchema = new ADTToolbarButton(XSDEditorPlugin.getPlugin().getIcon("elcl16/schemaview_co.gif")); + backToSchema.setToolTipText(Messages._UI_HOVER_BACK_TO_SCHEMA); + backToSchema.setBackgroundColor(ColorConstants.white); +// backToSchema.setBounds(new Rectangle(0, 0, 24, 24)); + figure.add(backToSchema); + figure.setBounds(new Rectangle(0,0,24,24)); + + addToToolbar(figure); + return figure; + } + + protected void addToToolbar(IFigure figure) + { + + } + + public void setIsDrilledDown(boolean isDrilledDown) + { + this.isDrilledDown = isDrilledDown; + } + + protected void refreshVisuals() + { + super.refreshVisuals(); + backToSchema.isEnabled = isDrilledDown; + if (isDrilledDown) + { + backToSchema.image = XSDEditorPlugin.getPlugin().getIcon("elcl16/schemaview_co.gif"); + } + else + { + backToSchema.image = XSDEditorPlugin.getPlugin().getIcon("dlcl16/schemaview_co.gif"); + } + backToSchema.refresh(); + } + + protected void doAction(MouseEvent me) + { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor(); + + if (backToSchema.getBounds().contains(me.getLocation())) + { + SetInputToGraphView action = new SetInputToGraphView(editorPart, model); + action.run(); + } + } + + protected class ADTToolbarButton extends CenteredIconFigure + { + protected MouseListener mouseListener; + public boolean isEnabled; + + public ADTToolbarButton(Image img) + { + super(); + this.image = img; + + mouseListener = new MouseListener.Stub() + { + public void mousePressed(org.eclipse.draw2d.MouseEvent me) + { + if (isEnabled) + { + addFeedback(); + } + } + + public void mouseReleased(org.eclipse.draw2d.MouseEvent me) + { + if (isEnabled) + { + removeFeedback(); + doAction(me); + } + } + }; + addMouseListener(mouseListener); + addMouseMotionListener(new MouseMotionListener.Stub() + { + public void mouseExited(MouseEvent me) + { + removeFeedback(); + } + }); + } + + public void addFeedback() + { + setMode(CenteredIconFigure.SELECTED); + refresh(); + } + + public void removeFeedback() + { + setMode(CenteredIconFigure.NORMAL); + refresh(); + } + + public Rectangle getBounds() + { + Rectangle r = super.getBounds(); + org.eclipse.swt.graphics.Rectangle rect = image.getBounds(); + return new Rectangle(r.x, r.y, rect.width + 8, rect.height + 8); + } + + public Dimension getPreferredSize(int hint, int hint2) + { + org.eclipse.swt.graphics.Rectangle rect = image.getBounds(); + return new Dimension(rect.width + 8, rect.height + 8); + } + } + +} diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/IHolderEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/IHolderEditPart.java new file mode 100644 index 0000000000..7f7a5ae74c --- /dev/null +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/IHolderEditPart.java @@ -0,0 +1,16 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.wst.xsd.ui.internal.adt.design.editparts; + +public interface IHolderEditPart +{ + +} diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootContentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootContentEditPart.java index ebd30fd7a8..e43e85e99c 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootContentEditPart.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootContentEditPart.java @@ -19,9 +19,8 @@ import org.eclipse.draw2d.MarginBorder; import org.eclipse.draw2d.Panel; import org.eclipse.draw2d.ToolbarLayout; import org.eclipse.gef.editparts.AbstractGraphicalEditPart; -import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.FocusTypeColumn; import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IGraphElement; -import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.ReferencedTypeColumn; +import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.RootHolder; import org.eclipse.wst.xsd.ui.internal.adt.facade.IADTObject; import org.eclipse.wst.xsd.ui.internal.adt.facade.IComplexType; import org.eclipse.wst.xsd.ui.internal.adt.facade.IField; @@ -116,13 +115,9 @@ public class RootContentEditPart extends AbstractGraphicalEditPart } if (focusObject != null) { - collections.add(new FocusTypeColumn(focusObject)); - collections.add(new ReferencedTypeColumn(focusObject)); - - ToolbarLayout layout = new ToolbarLayout(true); - layout.setStretchMinorAxis(false); - layout.setSpacing(100); - contentPane.setLayoutManager(layout); + RootHolder holder = new RootHolder(focusObject); + collections.add(holder); + return collections; } } return collections; diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootHolderEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootHolderEditPart.java new file mode 100644 index 0000000000..48432836f2 --- /dev/null +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootHolderEditPart.java @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.wst.xsd.ui.internal.adt.design.editparts; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Panel; +import org.eclipse.draw2d.ToolbarLayout; +import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.FocusTypeColumn; +import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.ReferencedTypeColumn; +import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.RootHolder; +import org.eclipse.wst.xsd.ui.internal.adt.facade.IADTObject; + +public class RootHolderEditPart extends BaseEditPart implements IHolderEditPart +{ + protected Panel panel; + + public RootHolderEditPart() + { + } + + protected IFigure createFigure() + { + panel = new Panel(); + ToolbarLayout layout = new ToolbarLayout(true); + layout.setStretchMinorAxis(false); + layout.setSpacing(100); + panel.setLayoutManager(layout); + + return panel; + } + + protected List getModelChildren() + { + List collections = new ArrayList(); + RootHolder holder = (RootHolder)getModel(); + IADTObject focusObject = holder.getModel(); + collections.add(new FocusTypeColumn(focusObject)); + collections.add(new ReferencedTypeColumn(focusObject)); + return collections; + } + + protected void createEditPolicies() + { + super.createEditPolicies(); + } + +} diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/model/RootHolder.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/model/RootHolder.java new file mode 100644 index 0000000000..ca7b3a6225 --- /dev/null +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/model/RootHolder.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 22007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model; + +import org.eclipse.wst.xsd.ui.internal.adt.facade.IADTObject; + +public class RootHolder +{ + IADTObject model; + + public RootHolder(IADTObject model) + { + this.model = model; + } + + public IADTObject getModel() + { + return model; + } +} diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/editor/ADTMultiPageEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/editor/ADTMultiPageEditor.java index 9aba411725..3270c78390 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/editor/ADTMultiPageEditor.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/editor/ADTMultiPageEditor.java @@ -101,6 +101,8 @@ public abstract class ADTMultiPageEditor extends CommonMultiPageEditor floatingToolbar = new ADTFloatingToolbar(getModel()); floatingToolbar.createControl(parent); floatingToolbar.getControl().setVisible(true); + EditPartFactory editPartFactory = getEditorModeManager().getCurrentMode().getEditPartFactory(); + floatingToolbar.setEditPartFactory(editPartFactory); createViewModeToolbar(parent); |