Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkchong2007-03-14 02:45:59 +0000
committerkchong2007-03-14 02:45:59 +0000
commit199f5d758bac502b7e2486b2ec2b94ce91121510 (patch)
tree4fdd07add5f9e4b734d3573888492c1a32fd4952
parentc3036f93083658a7dff6d1d6bc7a5ffe6f474163 (diff)
downloadwebtools.sourceediting-199f5d758bac502b7e2486b2ec2b94ce91121510.tar.gz
webtools.sourceediting-199f5d758bac502b7e2486b2ec2b94ce91121510.tar.xz
webtools.sourceediting-199f5d758bac502b7e2486b2ec2b94ce91121510.zip
[176565] Enhancements to XML Schema Editor. Refactor the toolbar.
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/InternalXSDMultiPageEditor.java38
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDEditorPlugin.java17
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/ADTFloatingToolbar.java149
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/DesignViewGraphicalViewer.java8
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTEditPartFactory.java14
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/ADTFloatingToolbarEditPart.java166
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/IHolderEditPart.java16
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootContentEditPart.java13
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/RootHolderEditPart.java58
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/editparts/model/RootHolder.java28
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/editor/ADTMultiPageEditor.java2
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);

Back to the top