Author: achabatar
Date: 2007-12-12 08:14:01 -0500 (Wed, 12 Dec 2007)
New Revision: 5256
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/icons/
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/icons/outline.gif
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/icons/overview.gif
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/DiagramTreeEditPart.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/ExpandeableShapeTreeEditPart.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/ShapeTreeEditPart.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/TreePartFactory.java
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/DiagramContentOutlinePage.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/VisualEditor.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/model/ModelElement.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/model/Shape.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-1417
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/DiagramContentOutlinePage.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/DiagramContentOutlinePage.java 2007-12-12
13:03:43 UTC (rev 5255)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/DiagramContentOutlinePage.java 2007-12-12
13:14:01 UTC (rev 5256)
@@ -21,26 +21,41 @@
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.editparts.ZoomManager;
import org.eclipse.gef.ui.parts.*;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.part.PageBook;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.OrmDiagram;
+import org.jboss.tools.hibernate.ui.veditor.editors.parts.TreePartFactory;
public class DiagramContentOutlinePage extends ContentOutlinePage implements
IAdaptable {
+
private GraphicalViewer graphicalViewer;
+
+ private VisualEditor editor;
+
+ private OrmDiagram ormDiagram;
private SelectionSynchronizer selectionSynchronizer;
private PageBook pageBook;
+ private Control outline;
/*
* surface for drawing
*/
private Canvas overview;
+ private IAction showOutlineAction, showOverviewAction;
+
static final int ID_OUTLINE = 0;
static final int ID_OVERVIEW = 1;
@@ -118,7 +133,26 @@
*
*/
protected void configureOutlineViewer() {
- showPage(ID_OUTLINE);
+ getViewer().setEditDomain(editor.getDefaultEditDomain());
+ getViewer().setEditPartFactory(new TreePartFactory());
+ IToolBarManager tbm = getSite().getActionBars().getToolBarManager();
+ showOutlineAction = new Action() {
+ public void run() {
+ showPage(ID_OUTLINE);
+ }
+ };
+ showOutlineAction.setImageDescriptor(ImageDescriptor.createFromFile(
+ VisualEditor.class,"icons/outline.gif")); //$NON-NLS-1$
+ tbm.add(showOutlineAction);
+ showOverviewAction = new Action() {
+ public void run() {
+ showPage(ID_OVERVIEW);
+ }
+ };
+ showOverviewAction.setImageDescriptor(ImageDescriptor.createFromFile(
+ VisualEditor.class,"icons/overview.gif")); //$NON-NLS-1$
+ tbm.add(showOverviewAction);
+ showPage(ID_OVERVIEW);
}
@@ -127,9 +161,9 @@
*/
public void createControl(Composite parent) {
pageBook = new PageBook(parent, SWT.NONE);
-
+ outline = getViewer().createControl(pageBook);
overview = new Canvas(pageBook, SWT.NONE);
- pageBook.showPage(overview);
+ pageBook.showPage(outline);
configureOutlineViewer();
hookOutlineViewer();
initializeOutlineViewer();
@@ -141,8 +175,10 @@
*/
public void dispose() {
unhookOutlineViewer();
- if (thumbnail != null)
+ if (thumbnail != null) {
thumbnail.deactivate();
+ thumbnail = null;
+ }
super.dispose();
}
@@ -177,9 +213,12 @@
*
*/
protected void initializeOutlineViewer() {
+ setContents(getOrmDiagram());
}
+ private DisposeListener disposeListener;
+
/**
*
*/
@@ -199,15 +238,29 @@
}
}
+ public void setContents(Object contents) {
+ getViewer().setContents(contents);
+ }
+
/**
* @param id
*/
protected void showPage(int id) {
- if (thumbnail == null)
- initializeOverview();
- pageBook.showPage(overview);
- thumbnail.setVisible(true);
+ if (id == ID_OUTLINE) {
+ showOutlineAction.setChecked(true);
+ showOverviewAction.setChecked(false);
+ pageBook.showPage(outline);
+ if (thumbnail != null)
+ thumbnail.setVisible(false);
+ } else if (id == ID_OVERVIEW) {
+ if (thumbnail == null)
+ initializeOverview();
+ showOutlineAction.setChecked(false);
+ showOverviewAction.setChecked(true);
+ pageBook.showPage(overview);
+ thumbnail.setVisible(true);
+ }
}
@@ -238,4 +291,26 @@
}
}
+ /**
+ * @return the ormDiagram
+ */
+ public OrmDiagram getOrmDiagram() {
+ return ormDiagram;
+ }
+
+ /**
+ * @param ormDiagram the ormDiagram to set
+ */
+ public void setOrmDiagram(OrmDiagram ormDiagram) {
+ this.ormDiagram = ormDiagram;
+ }
+
+ public VisualEditor getEditor() {
+ return editor;
+ }
+
+ public void setEditor(VisualEditor editor) {
+ this.editor = editor;
+ }
+
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/VisualEditor.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/VisualEditor.java 2007-12-12
13:03:43 UTC (rev 5255)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/VisualEditor.java 2007-12-12
13:14:01 UTC (rev 5256)
@@ -138,6 +138,8 @@
new TreeViewer());
outline.setGraphicalViewer(getGraphicalViewer());
outline.setSelectionSynchronizer(getSelectionSynchronizer());
+ outline.setOrmDiagram(ormDiagram);
+ outline.setEditor(this);
return outline;
}
@@ -165,4 +167,9 @@
public OrmDiagram getViewerContents() {
return ormDiagram;
}
+
+ public DefaultEditDomain getDefaultEditDomain() {
+ return getEditDomain();
+ }
+
}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/icons/outline.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/icons/outline.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/icons/overview.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/icons/overview.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/model/ModelElement.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/model/ModelElement.java 2007-12-12
13:03:43 UTC (rev 5255)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/model/ModelElement.java 2007-12-12
13:14:01 UTC (rev 5256)
@@ -15,8 +15,14 @@
import java.util.ArrayList;
import java.util.List;
-public abstract class ModelElement{
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.IPropertySource;
+public abstract class ModelElement implements IPropertySource {
+
+ /** An empty property descriptor. */
+ private static final IPropertyDescriptor[] EMPTY_ARRAY = new IPropertyDescriptor[0];
+
private transient PropertyChangeSupport pcsDelegate = new PropertyChangeSupport(this);
public synchronized void addPropertyChangeListener(PropertyChangeListener l) {
@@ -84,6 +90,45 @@
return null;
}
+ public Object getEditableValue() {
+ return this;
+ }
+
+ /**
+ * Children should override this. The default implementation returns an empty array.
+ */
+ public IPropertyDescriptor[] getPropertyDescriptors() {
+ return EMPTY_ARRAY;
+ }
+
+ /**
+ * Children should override this. The default implementation returns null.
+ */
+ public Object getPropertyValue(Object id) {
+ return null;
+ }
+
+ /**
+ * Children should override this. The default implementation returns false.
+ */
+ public boolean isPropertySet(Object id) {
+ return false;
+ }
+
+ /**
+ * Children should override this. The default implementation does nothing.
+ */
+ public void resetPropertyValue(Object id) {
+ // do nothing
+ }
+
+ /**
+ * Children should override this. The default implementation does nothing.
+ */
+ public void setPropertyValue(Object id, Object value) {
+ // do nothing
+ }
+
class OList extends ArrayList{
public OList(){
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/model/Shape.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/model/Shape.java 2007-12-12
13:03:43 UTC (rev 5255)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/model/Shape.java 2007-12-12
13:14:01 UTC (rev 5256)
@@ -13,6 +13,13 @@
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+import org.hibernate.mapping.Column;
+import org.hibernate.mapping.Property;
+import org.jboss.tools.hibernate.ui.view.views.HibernateUtils;
+import org.jboss.tools.hibernate.ui.view.views.OrmModelNameVisitor;
+
public class Shape extends ModelElement {
private int indent = 0;
@@ -25,7 +32,62 @@
public static final String SET_FOCUS = "set focus";
private Object ormElement;
+
+ static OrmModelNameVisitor ormModelNameVisitor;
+ private static IPropertyDescriptor[] descriptors_property;
+ private static IPropertyDescriptor[] descriptors_column;
+
+ /**
+ * Property set
+ */
+ private static final String PROPERTY_NAME = "name";
+ private static final String PROPERTY_TYPE = "type";
+ private static final String PROPERTY_CLASS = "persistanceClass";
+ private static final String PROPERTY_VALUE = "value";
+ private static final String PROPERTY_SELECT = "selectable";
+ private static final String PROPERTY_INSERT = "insertable";
+ private static final String PROPERTY_UPDATE = "updateable";
+ private static final String PROPERTY_CASCADE = "cascade";
+ private static final String PROPERTY_LAZY = "lazy";
+ private static final String PROPERTY_OPTIONAL = "optional";
+ private static final String PROPERTY_NATURAL_IDENTIFIER =
"naturalIdentifier";
+ private static final String PROPERTY_NODE_NAME = "nodeName";
+ private static final String PROPERTY_OPTIMISTIC_LOCKED = "optimisticLocked";
+ private static final String PROPERTY_NULLABLE = "nullable";
+ private static final String PROPERTY_UNIQUE = "unique";
+
+ static {
+
+ ormModelNameVisitor = new OrmModelNameVisitor();
+
+ descriptors_property = new IPropertyDescriptor[] {
+ new TextPropertyDescriptor(PROPERTY_NAME, PROPERTY_NAME),
+ new TextPropertyDescriptor(PROPERTY_TYPE, PROPERTY_TYPE),
+ new TextPropertyDescriptor(PROPERTY_VALUE, PROPERTY_VALUE),
+ new TextPropertyDescriptor(PROPERTY_CLASS, PROPERTY_CLASS),
+ new TextPropertyDescriptor(PROPERTY_SELECT, PROPERTY_SELECT),
+ new TextPropertyDescriptor(PROPERTY_INSERT, PROPERTY_INSERT),
+ new TextPropertyDescriptor(PROPERTY_UPDATE, PROPERTY_UPDATE),
+ new TextPropertyDescriptor(PROPERTY_CASCADE, PROPERTY_CASCADE),
+ new TextPropertyDescriptor(PROPERTY_LAZY, PROPERTY_LAZY),
+ new TextPropertyDescriptor(PROPERTY_OPTIONAL, PROPERTY_OPTIONAL),
+ new TextPropertyDescriptor(PROPERTY_NATURAL_IDENTIFIER,
PROPERTY_NATURAL_IDENTIFIER),
+ new TextPropertyDescriptor(PROPERTY_NODE_NAME, PROPERTY_NODE_NAME),
+ new TextPropertyDescriptor(PROPERTY_OPTIMISTIC_LOCKED, PROPERTY_OPTIMISTIC_LOCKED),
+ };
+
+
+ descriptors_column = new IPropertyDescriptor[] {
+ new TextPropertyDescriptor(PROPERTY_NAME, PROPERTY_NAME),
+ new TextPropertyDescriptor(PROPERTY_TYPE, PROPERTY_TYPE),
+ new TextPropertyDescriptor(PROPERTY_VALUE, PROPERTY_VALUE),
+ new TextPropertyDescriptor(PROPERTY_NULLABLE, PROPERTY_NULLABLE),
+ new TextPropertyDescriptor(PROPERTY_UNIQUE, PROPERTY_UNIQUE),
+ };
+
+ } // static
+
protected Shape(Object ioe) {
ormElement = ioe;
}
@@ -80,4 +142,131 @@
for (int i = 0; i < targetConnections.size(); i++)
((Connection)targetConnections.get(i)).setHidden(hiden);
}
+
+ /**
+ * Returns an array of IPropertyDescriptors for this shape.
+ * <p>The returned array is used to fill the property view, when the edit-part
corresponding
+ * to this model element is selected.</p>
+ * @see #descriptors
+ * @see #getPropertyValue(Object)
+ * @see #setPropertyValue(Object, Object)
+ */
+ public IPropertyDescriptor[] getPropertyDescriptors() {
+ if (getOrmElement() instanceof Property) {
+ return descriptors_property;
+ }
+ else if (getOrmElement() instanceof Column) {
+ return descriptors_column;
+ }
+ return super.getPropertyDescriptors();
+ }
+
+ /**
+ * Return the property value for the given propertyId, or null.
+ * <p>The property view uses the IDs from the IPropertyDescriptors array
+ * to obtain the value of the corresponding properties.</p>
+ * @see #descriptors
+ * @see #getPropertyDescriptors()
+ */
+ public Object getPropertyValue(Object propertyId) {
+ if (PROPERTY_NAME.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return ((Property) getOrmElement()).getName();
+ }
+ else if (getOrmElement() instanceof Column) {
+ return ((Column) getOrmElement()).getName();
+ }
+ }
+ else if (PROPERTY_TYPE.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return ((Property) getOrmElement()).getType().getReturnedClass().getName();
+ }
+ else if (getOrmElement() instanceof Column) {
+ String type = ormModelNameVisitor.getColumnSqlType((Column) getOrmElement(),
getOrmDiagram().getConfiguration());
+ Column column = (Column) getOrmElement();
+
+ StringBuffer name = new StringBuffer();
+
+ if (type != null) {
+ name.append(type != null ? type.toUpperCase() : "");
+ name.append(HibernateUtils.getTable(column) != null
+ && HibernateUtils.isPrimaryKey(column) ? " PK" : "");
+ name.append(HibernateUtils.getTable(column) != null
+ && HibernateUtils.isForeignKey(column) ? " FK" : "");
+ }
+
+ return name.toString();
+ }
+ }
+ else if (PROPERTY_VALUE.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return ((Property) getOrmElement()).getValue().toString();
+ }
+ else if (getOrmElement() instanceof Column) {
+ return ((Column) getOrmElement()).getValue().toString();
+ }
+ }
+ else if (PROPERTY_CLASS.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return ((Property) getOrmElement()).getPersistentClass().getClassName();
+ }
+ }
+ else if (PROPERTY_SELECT.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return Boolean.valueOf(((Property) getOrmElement()).isSelectable()).toString();
+ }
+ }
+ else if (PROPERTY_INSERT.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return Boolean.valueOf(((Property) getOrmElement()).isInsertable()).toString();
+ }
+ }
+ else if (PROPERTY_UPDATE.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return Boolean.valueOf(((Property) getOrmElement()).isUpdateable()).toString();
+ }
+ }
+ else if (PROPERTY_CASCADE.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return ((Property) getOrmElement()).getCascade();
+ }
+ }
+ else if (PROPERTY_LAZY.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return Boolean.valueOf(((Property) getOrmElement()).isLazy()).toString();
+ }
+ }
+ else if (PROPERTY_OPTIONAL.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return Boolean.valueOf(((Property) getOrmElement()).isOptional()).toString();
+ }
+ }
+ else if (PROPERTY_NATURAL_IDENTIFIER.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return Boolean.valueOf(((Property)
getOrmElement()).isNaturalIdentifier()).toString();
+ }
+ }
+ else if (PROPERTY_NODE_NAME.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return ((Property) getOrmElement()).getNodeName();
+ }
+ }
+ else if (PROPERTY_OPTIMISTIC_LOCKED.equals(propertyId)) {
+ if (getOrmElement() instanceof Property) {
+ return Boolean.valueOf(((Property) getOrmElement()).isOptimisticLocked()).toString();
+ }
+ }
+ else if (PROPERTY_NULLABLE.equals(propertyId)) {
+ if (getOrmElement() instanceof Column) {
+ return Boolean.valueOf(((Column) getOrmElement()).isNullable()).toString();
+ }
+ }
+ else if (PROPERTY_UNIQUE.equals(propertyId)) {
+ if (getOrmElement() instanceof Column) {
+ return Boolean.valueOf(((Column) getOrmElement()).isUnique()).toString();
+ }
+ }
+ return super.getPropertyValue(propertyId);
+ }
+
}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/DiagramTreeEditPart.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/DiagramTreeEditPart.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/DiagramTreeEditPart.java 2007-12-12
13:14:01 UTC (rev 5256)
@@ -0,0 +1,54 @@
+package org.jboss.tools.hibernate.ui.veditor.editors.parts;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import org.eclipse.swt.widgets.Tree;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.OrmDiagram;
+
+public class DiagramTreeEditPart extends org.eclipse.gef.editparts.AbstractTreeEditPart
+ implements PropertyChangeListener
+{
+
+ /**
+ * Constructor initializes this with the given model.
+ *
+ * @param model Model for this.
+ */
+ public DiagramTreeEditPart(Object model) {
+ super (model);
+ }
+
+ /**
+ * Returns the model of this as a OrmDiagram.
+ *
+ * @return Model of this.
+ */
+ protected OrmDiagram getOrmDiagram() {
+ return (OrmDiagram)getModel();
+ }
+
+ /**
+ * Returns <code>null</code> as a Tree EditPart holds
+ * no children under it.
+ *
+ * @return <code>null</code>
+ */
+ protected List getModelChildren() {
+ return getOrmDiagram().getChildren();
+ }
+
+ public void propertyChange(PropertyChangeEvent change){
+ refreshVisuals();
+ }
+
+ /**
+ * Refreshes the visual properties of the TreeItem for this part.
+ */
+ protected void refreshVisuals(){
+ if (getWidget() instanceof Tree)
+ return;
+ }
+
+}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/ExpandeableShapeTreeEditPart.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/ExpandeableShapeTreeEditPart.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/ExpandeableShapeTreeEditPart.java 2007-12-12
13:14:01 UTC (rev 5256)
@@ -0,0 +1,72 @@
+package org.jboss.tools.hibernate.ui.veditor.editors.parts;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import org.eclipse.swt.widgets.Tree;
+import org.hibernate.cfg.Configuration;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.ExpandeableShape;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.Shape;
+import org.jboss.tools.hibernate.ui.view.views.OrmLabelProvider;
+import org.jboss.tools.hibernate.ui.view.views.OrmModelImageVisitor;
+import org.jboss.tools.hibernate.ui.view.views.OrmModelNameVisitor;
+
+public class ExpandeableShapeTreeEditPart extends
+ org.eclipse.gef.editparts.AbstractTreeEditPart implements
+ PropertyChangeListener {
+
+ static protected OrmLabelProvider ormLabelProvider = new OrmLabelProvider(
+ new OrmModelImageVisitor(), new OrmModelNameVisitor());
+
+ /**
+ * Constructor initializes this with the given model.
+ *
+ * @param model
+ * Model for this.
+ */
+ public ExpandeableShapeTreeEditPart(Object model) {
+ super(model);
+ }
+
+ /**
+ * Returns the model of this as a ExpandeableShape.
+ *
+ * @return Model of this.
+ */
+ protected ExpandeableShape getExpandeableShape() {
+ return (ExpandeableShape) getModel();
+ }
+
+ /**
+ * Returns <code>null</code> as a Tree EditPart holds no children under
+ * it.
+ *
+ * @return <code>null</code>
+ */
+ protected List getModelChildren() {
+ return getExpandeableShape().getChildren();
+ }
+
+ public void propertyChange(PropertyChangeEvent change) {
+ refreshVisuals();
+ }
+
+ /**
+ * Refreshes the visual properties of the TreeItem for this part.
+ */
+ protected void refreshVisuals() {
+ if (getWidget() instanceof Tree)
+ return;
+
+ Shape model = (Shape) getModel();
+
+ Object element = model.getOrmElement();
+ Configuration cfg = model.getOrmDiagram().getConsoleConfiguration()
+ .getConfiguration();
+
+ setWidgetImage(ormLabelProvider.getImage(element));
+ setWidgetText(ormLabelProvider.getText(element, cfg));
+ }
+
+}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/ShapeTreeEditPart.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/ShapeTreeEditPart.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/ShapeTreeEditPart.java 2007-12-12
13:14:01 UTC (rev 5256)
@@ -0,0 +1,72 @@
+package org.jboss.tools.hibernate.ui.veditor.editors.parts;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.swt.widgets.Tree;
+import org.hibernate.cfg.Configuration;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.ExpandeableShape;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.Shape;
+import org.jboss.tools.hibernate.ui.view.views.OrmLabelProvider;
+import org.jboss.tools.hibernate.ui.view.views.OrmModelImageVisitor;
+import org.jboss.tools.hibernate.ui.view.views.OrmModelNameVisitor;
+
+public class ShapeTreeEditPart extends
+ org.eclipse.gef.editparts.AbstractTreeEditPart implements
+ PropertyChangeListener {
+
+ static protected OrmLabelProvider ormLabelProvider = new OrmLabelProvider(
+ new OrmModelImageVisitor(), new OrmModelNameVisitor());
+
+ /**
+ * Constructor initializes this with the given model.
+ *
+ * @param model
+ * Model for this.
+ */
+ public ShapeTreeEditPart(Object model) {
+ super(model);
+ }
+
+ /**
+ * Returns the model of this as a ExpandeableShape.
+ *
+ * @return Model of this.
+ */
+ protected ExpandeableShape getExpandeableShape() {
+ return (ExpandeableShape) getModel();
+ }
+
+ /**
+ * Returns <code>null</code> as a Tree EditPart holds no children under
+ * it.
+ *
+ * @return <code>null</code>
+ */
+ protected List getModelChildren() {
+ return Collections.EMPTY_LIST;
+ }
+
+ public void propertyChange(PropertyChangeEvent arg0) {
+ }
+
+ /**
+ * Refreshes the visual properties of the TreeItem for this part.
+ */
+ protected void refreshVisuals() {
+ if (getWidget() instanceof Tree)
+ return;
+
+ Shape model = (Shape) getModel();
+
+ Object element = model.getOrmElement();
+ Configuration cfg = model.getOrmDiagram().getConsoleConfiguration()
+ .getConfiguration();
+
+ setWidgetImage(ormLabelProvider.getImage(element));
+ setWidgetText(ormLabelProvider.getText(element, cfg));
+ }
+
+}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/TreePartFactory.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/TreePartFactory.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.veditor/src/org/jboss/tools/hibernate/ui/veditor/editors/parts/TreePartFactory.java 2007-12-12
13:14:01 UTC (rev 5256)
@@ -0,0 +1,26 @@
+package org.jboss.tools.hibernate.ui.veditor.editors.parts;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartFactory;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.ExpandeableShape;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.OrmDiagram;
+import org.jboss.tools.hibernate.ui.veditor.editors.model.Shape;
+
+public class TreePartFactory implements EditPartFactory {
+
+ public EditPart createEditPart(EditPart context, Object modelElement) {
+ if (modelElement instanceof OrmDiagram) {
+ return new DiagramTreeEditPart(modelElement);
+ }
+ if (modelElement instanceof ExpandeableShape) {
+ return new ExpandeableShapeTreeEditPart(modelElement);
+ }
+ if (modelElement instanceof Shape) {
+ return new ShapeTreeEditPart(modelElement);
+ }
+ throw new RuntimeException("Can't create part for model element: "
+ + ((modelElement != null) ? modelElement.getClass().getName()
+ : "null"));
+ }
+
+}