You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2010/08/24 15:34:39 UTC
svn commit: r988538 [3/4] - in /cayenne/main/trunk:
framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/
framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/
framework/cayenne-modeler/src/main/java/org/apache/cayenn...
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java Tue Aug 24 13:34:35 2010
@@ -17,7 +17,6 @@
* under the License.
****************************************************************/
-
package org.apache.cayenne.modeler.editor;
import java.awt.BorderLayout;
@@ -50,6 +49,7 @@ import org.apache.cayenne.map.ProcedureP
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.action.ActionManager;
import org.apache.cayenne.modeler.action.CopyProcedureParameterAction;
import org.apache.cayenne.modeler.action.CreateProcedureParameterAction;
import org.apache.cayenne.modeler.action.CutProcedureParameterAction;
@@ -70,14 +70,9 @@ import org.apache.cayenne.modeler.util.c
/**
*/
-public class ProcedureParameterTab
- extends JPanel
- implements
- ProcedureParameterListener,
- ProcedureDisplayListener,
- ExistingSelectionProcessor,
- ActionListener {
-
+public class ProcedureParameterTab extends JPanel implements ProcedureParameterListener,
+ ProcedureDisplayListener, ExistingSelectionProcessor, ActionListener {
+
protected ProjectController eventController;
protected CayenneTable table;
@@ -85,11 +80,10 @@ public class ProcedureParameterTab
protected JButton removeParameterButton;
protected JButton moveUp;
protected JButton moveDown;
-
+
/**
- * By now popup menu items are made similiar to toolbar button.
- * (i.e. all functionality is here)
- * This should be probably refactored as Action.
+ * By now popup menu items are made similiar to toolbar button. (i.e. all
+ * functionality is here) This should be probably refactored as Action.
*/
protected JMenuItem removeParameterMenu;
protected JMenuItem moveUpMenu;
@@ -104,14 +98,15 @@ public class ProcedureParameterTab
eventController.addProcedureParameterListener(this);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+
public void valueChanged(ListSelectionEvent e) {
processExistingSelection(e);
}
});
-
+
moveDown.addActionListener(this);
moveUp.addActionListener(this);
-
+
moveDownMenu.addActionListener(this);
moveUpMenu.addActionListener(this);
}
@@ -121,12 +116,14 @@ public class ProcedureParameterTab
JToolBar toolBar = new JToolBar();
- Application app = Application.getInstance();
- toolBar.add(app.getAction(CreateProcedureParameterAction.getActionName()).buildButton());
- removeParameterButton = app.getAction(RemoveProcedureParameterAction.getActionName()).buildButton();
+ ActionManager actionManager = Application.getInstance().getActionManager();
+ toolBar.add(actionManager.getAction(
+ CreateProcedureParameterAction.class).buildButton());
+ removeParameterButton = actionManager.getAction(
+ RemoveProcedureParameterAction.class).buildButton();
toolBar.add(removeParameterButton);
toolBar.addSeparator();
-
+
Icon up = ModelerUtil.buildIcon("icon-move_up.gif");
Icon down = ModelerUtil.buildIcon("icon-move_down.gif");
@@ -134,58 +131,66 @@ public class ProcedureParameterTab
moveUp.setIcon(up);
moveUp.setToolTipText("Move Parameter Up");
toolBar.add(moveUp);
-
+
moveDown = new JButton();
moveDown.setIcon(down);
moveDown.setToolTipText("Move Parameter Down");
toolBar.add(moveDown);
-
+
toolBar.addSeparator();
- toolBar.add(app.getAction(CutProcedureParameterAction.getActionName()).buildButton());
- toolBar.add(app.getAction(CopyProcedureParameterAction.getActionName()).buildButton());
- toolBar.add(app.getAction(PasteAction.getActionName()).buildButton());
-
+ toolBar.add(actionManager
+ .getAction(CutProcedureParameterAction.class)
+ .buildButton());
+ toolBar.add(actionManager
+ .getAction(CopyProcedureParameterAction.class)
+ .buildButton());
+ toolBar.add(actionManager.getAction(PasteAction.class).buildButton());
+
add(toolBar, BorderLayout.NORTH);
// Create table with two columns and no rows.
table = new CayenneTable();
-
- tablePreferences = new TableColumnPreferences(this.getClass(),"procedure/parameterTable");
-
- /**
- * Create and install a popup
- */
+
+ tablePreferences = new TableColumnPreferences(
+ this.getClass(),
+ "procedure/parameterTable");
+
+ // Create and install a popup
JPopupMenu popup = new JPopupMenu();
-
- removeParameterMenu = app.getAction(RemoveProcedureParameterAction.getActionName()).buildMenu();
-
+
+ removeParameterMenu = actionManager.getAction(
+ RemoveProcedureParameterAction.class).buildMenu();
+
popup.add(removeParameterMenu);
popup.addSeparator();
-
+
moveUpMenu = new JMenuItem("Move Parameter Up", up);
moveDownMenu = new JMenuItem("Move Parameter Down", down);
-
+
popup.add(moveUpMenu);
popup.add(moveDownMenu);
-
+
popup.addSeparator();
- popup.add(app.getAction(CutProcedureParameterAction.getActionName()).buildMenu());
- popup.add(app.getAction(CopyProcedureParameterAction.getActionName()).buildMenu());
- popup.add(app.getAction(PasteAction.getActionName()).buildMenu());
-
+ popup.add(actionManager
+ .getAction(CutProcedureParameterAction.class)
+ .buildMenu());
+ popup.add(actionManager
+ .getAction(CopyProcedureParameterAction.class)
+ .buildMenu());
+ popup.add(actionManager.getAction(PasteAction.class).buildMenu());
+
TablePopupHandler.install(table, popup);
-
+
add(PanelFactory.createTablePanel(table, null), BorderLayout.CENTER);
-
- eventController.getApplication().getActionManager().setupCCP(table,
- CutProcedureParameterAction.getActionName(),
- CopyProcedureParameterAction
-
- .getActionName());
+
+ actionManager.setupCutCopyPaste(
+ table,
+ CutProcedureParameterAction.class,
+ CopyProcedureParameterAction.class);
}
-
+
public void processExistingSelection(EventObject e) {
- if (e instanceof ChangeEvent){
+ if (e instanceof ChangeEvent) {
table.clearSelection();
}
@@ -197,12 +202,12 @@ public class ProcedureParameterTab
int selectedRow = table.getSelectedRow();
if (selectedRow >= 0) {
enableRemoveButton = true;
- ProcedureParameterTableModel model =
- (ProcedureParameterTableModel) table.getModel();
-
+ ProcedureParameterTableModel model = (ProcedureParameterTableModel) table
+ .getModel();
+
int[] sel = table.getSelectedRows();
parameters = new ProcedureParameter[sel.length];
-
+
for (int i = 0; i < sel.length; i++) {
parameters[i] = model.getParameter(sel[i]);
}
@@ -213,7 +218,7 @@ public class ProcedureParameterTab
int rowCount = table.getRowCount();
if (rowCount > 1) {
- if (selectedRow >0) {
+ if (selectedRow > 0) {
enableUp = true;
}
if (selectedRow < (rowCount - 1)) {
@@ -226,22 +231,21 @@ public class ProcedureParameterTab
removeParameterButton.setEnabled(enableRemoveButton);
moveUp.setEnabled(enableUp);
moveDown.setEnabled(enableDown);
-
+
syncButtons();
- ProcedureParameterDisplayEvent ppde =
- new ProcedureParameterDisplayEvent(
+ ProcedureParameterDisplayEvent ppde = new ProcedureParameterDisplayEvent(
this,
parameters,
eventController.getCurrentProcedure(),
eventController.getCurrentDataMap(),
- (DataChannelDescriptor)eventController.getProject().getRootNode());
+ (DataChannelDescriptor) eventController.getProject().getRootNode());
eventController.fireProcedureParameterDisplayEvent(ppde);
}
/**
- * Invoked when currently selected Procedure object is changed.
- */
+ * Invoked when currently selected Procedure object is changed.
+ */
public void currentProcedureChanged(ProcedureDisplayEvent e) {
Procedure procedure = e.getProcedure();
if (procedure != null && e.isProcedureChanged()) {
@@ -253,53 +257,53 @@ public class ProcedureParameterTab
* Selects a specified parameters.
*/
public void selectParameters(ProcedureParameter[] parameters) {
- ModelerUtil.updateActions(parameters.length,
- RemoveProcedureParameterAction.getActionName(),
- CutProcedureParameterAction.getActionName(),
- CopyProcedureParameterAction.getActionName());
-
- ProcedureParameterTableModel model =
- (ProcedureParameterTableModel) table.getModel();
-
+ ModelerUtil.updateActions(
+ parameters.length,
+ RemoveProcedureParameterAction.class,
+ CutProcedureParameterAction.class,
+ CopyProcedureParameterAction.class);
+
+ ProcedureParameterTableModel model = (ProcedureParameterTableModel) table
+ .getModel();
+
List listAttrs = model.getObjectList();
int[] newSel = new int[parameters.length];
-
+
for (int i = 0; i < parameters.length; i++) {
newSel[i] = listAttrs.indexOf(parameters[i]);
}
-
+
table.select(newSel);
}
protected void rebuildTable(Procedure procedure) {
- ProcedureParameterTableModel model =
- new ProcedureParameterTableModel(procedure, eventController, this);
+ ProcedureParameterTableModel model = new ProcedureParameterTableModel(
+ procedure,
+ eventController,
+ this);
table.setModel(model);
table.setRowHeight(25);
table.setRowMargin(3);
// number column tweaking
- TableColumn numberColumn =
- table.getColumnModel().getColumn(
+ TableColumn numberColumn = table.getColumnModel().getColumn(
ProcedureParameterTableModel.PARAMETER_NUMBER);
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setHorizontalAlignment(SwingConstants.CENTER);
numberColumn.setCellRenderer(renderer);
- TableColumn typesColumn =
- table.getColumnModel().getColumn(ProcedureParameterTableModel.PARAMETER_TYPE);
- JComboBox typesEditor =
- CayenneWidgetFactory.createComboBox(TypesMapping.getDatabaseTypes(), true);
+ TableColumn typesColumn = table.getColumnModel().getColumn(
+ ProcedureParameterTableModel.PARAMETER_TYPE);
+ JComboBox typesEditor = CayenneWidgetFactory.createComboBox(TypesMapping
+ .getDatabaseTypes(), true);
AutoCompletion.enable(typesEditor);
typesColumn.setCellEditor(CayenneWidgetFactory.createCellEditor(typesEditor));
// direction column tweaking
- TableColumn directionColumn =
- table.getColumnModel().getColumn(
+ TableColumn directionColumn = table.getColumnModel().getColumn(
ProcedureParameterTableModel.PARAMETER_DIRECTION);
- JComboBox directionEditor =
- CayenneWidgetFactory.createComboBox(
+ JComboBox directionEditor = CayenneWidgetFactory.createComboBox(
ProcedureParameterTableModel.PARAMETER_DIRECTION_NAMES,
false);
directionEditor.setEditable(false);
@@ -307,7 +311,7 @@ public class ProcedureParameterTab
moveUp.setEnabled(false);
moveDown.setEnabled(false);
-
+
tablePreferences.bind(table, null, null, null);
}
@@ -321,18 +325,18 @@ public class ProcedureParameterTab
}
public void procedureParameterRemoved(ProcedureParameterEvent e) {
- ProcedureParameterTableModel model =
- (ProcedureParameterTableModel) table.getModel();
+ ProcedureParameterTableModel model = (ProcedureParameterTableModel) table
+ .getModel();
int ind = model.getObjectList().indexOf(e.getParameter());
model.removeRow(e.getParameter());
table.select(ind);
}
public void actionPerformed(ActionEvent e) {
- ProcedureParameterTableModel model =
- (ProcedureParameterTableModel) table.getModel();
+ ProcedureParameterTableModel model = (ProcedureParameterTableModel) table
+ .getModel();
ProcedureParameter parameter = model.getParameter(table.getSelectedRow());
-
+
int index = -1;
if (e.getSource() == moveUp || e.getSource() == moveUpMenu) {
@@ -344,20 +348,20 @@ public class ProcedureParameterTab
if (index >= 0) {
table.select(index);
-
+
// note that 'setCallParameters' is donw by copy internally
parameter.getProcedure().setCallParameters(model.getObjectList());
- eventController.fireProcedureEvent(
- new ProcedureEvent(this, parameter.getProcedure(), MapEvent.CHANGE));
+ eventController.fireProcedureEvent(new ProcedureEvent(this, parameter
+ .getProcedure(), MapEvent.CHANGE));
}
}
-
+
/**
* Synchronizes state of toolbar and popup menu buttons
*/
private void syncButtons() {
removeParameterMenu.setEnabled(removeParameterButton.isEnabled());
moveUpMenu.setEnabled(moveUp.isEnabled());
- moveDownMenu.setEnabled(moveDown.isEnabled());
+ moveDownMenu.setEnabled(moveDown.isEnabled());
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureTabbedView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureTabbedView.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureTabbedView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureTabbedView.java Tue Aug 24 13:34:35 2010
@@ -17,7 +17,6 @@
* under the License.
****************************************************************/
-
package org.apache.cayenne.modeler.editor;
import java.awt.Component;
@@ -40,9 +39,8 @@ import org.apache.cayenne.modeler.event.
* Tabbed panel for stored procedure editing.
*
*/
-public class ProcedureTabbedView
- extends JTabbedPane
- implements ProcedureDisplayListener, ProcedureParameterDisplayListener {
+public class ProcedureTabbedView extends JTabbedPane implements ProcedureDisplayListener,
+ ProcedureParameterDisplayListener {
protected ProjectController eventController;
protected ProcedureTab procedurePanel;
@@ -62,6 +60,7 @@ public class ProcedureTabbedView
eventController.addProcedureDisplayListener(this);
eventController.addProcedureParameterDisplayListener(this);
this.addChangeListener(new ChangeListener() {
+
public void stateChanged(ChangeEvent e) {
// find source view
Component selected = ProcedureTabbedView.this.getSelectedComponent();
@@ -78,8 +77,9 @@ public class ProcedureTabbedView
* Invoked when currently selected Procedure object is changed.
*/
public void currentProcedureChanged(ProcedureDisplayEvent e) {
- Application.getInstance().getAction(RemoveProcedureParameterAction.getActionName()).setEnabled(false);
-
+ Application.getInstance().getActionManager().getAction(
+ RemoveProcedureParameterAction.class).setEnabled(false);
+
if (e.getProcedure() == null)
setVisible(false);
else {
@@ -92,8 +92,8 @@ public class ProcedureTabbedView
public void currentProcedureParameterChanged(ProcedureParameterDisplayEvent e) {
ProcedureParameter[] parameters = e.getProcedureParameters();
-
- if(parameters.length > 0) {
+
+ if (parameters.length > 0) {
procedureParameterPanel.selectParameters(parameters);
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeTab.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributeTab.java Tue Aug 24 13:34:35 2010
@@ -70,7 +70,7 @@ public class DbEntityAttributeTab extend
protected ProjectController mediator;
protected CayenneTable table;
private TableColumnPreferences tablePreferences;
-
+
public DbEntityAttributeTab(ProjectController temp_mediator) {
super();
mediator = temp_mediator;
@@ -86,44 +86,48 @@ public class DbEntityAttributeTab extend
JToolBar toolBar = new JToolBar();
Application app = Application.getInstance();
- toolBar.add(app.getAction(CreateObjEntityAction.getActionName()).buildButton());
- toolBar.add(app.getAction(CreateAttributeAction.getActionName()).buildButton());
- toolBar.add(app.getAction(DbEntitySyncAction.getActionName()).buildButton());
+ toolBar.add(app.getActionManager().getAction(CreateObjEntityAction.class).buildButton());
+ toolBar.add(app.getActionManager().getAction(CreateAttributeAction.class).buildButton());
+ toolBar.add(app.getActionManager().getAction(DbEntitySyncAction.class).buildButton());
toolBar.addSeparator();
toolBar.addSeparator();
- toolBar.add(app.getAction(RemoveAttributeAction.getActionName()).buildButton());
-
+ toolBar.add(app.getActionManager().getAction(RemoveAttributeAction.class).buildButton());
+
toolBar.addSeparator();
- toolBar.add(app.getAction(CutAttributeAction.getActionName()).buildButton());
- toolBar.add(app.getAction(CopyAttributeAction.getActionName()).buildButton());
- toolBar.add(app.getAction(PasteAction.getActionName()).buildButton());
+ toolBar.add(app.getActionManager().getAction(CutAttributeAction.class).buildButton());
+ toolBar.add(app.getActionManager().getAction(CopyAttributeAction.class).buildButton());
+ toolBar.add(app.getActionManager().getAction(PasteAction.class).buildButton());
add(toolBar, BorderLayout.NORTH);
-
+
// Create table with two columns and no rows.
table = new CayenneTable();
-
- tablePreferences = new TableColumnPreferences(DbAttributeTableModel.class, "attributeTable");
-
+
+ tablePreferences = new TableColumnPreferences(
+ DbAttributeTableModel.class,
+ "attributeTable");
+
/**
* Create and install a popup
*/
JPopupMenu popup = new JPopupMenu();
- popup.add(app.getAction(RemoveAttributeAction.getActionName()).buildMenu());
-
+ popup.add(app.getActionManager().getAction(RemoveAttributeAction.class).buildMenu());
+
popup.addSeparator();
- popup.add(app.getAction(CutAttributeAction.getActionName()).buildMenu());
- popup.add(app.getAction(CopyAttributeAction.getActionName()).buildMenu());
- popup.add(app.getAction(PasteAction.getActionName()).buildMenu());
-
+ popup.add(app.getActionManager().getAction(CutAttributeAction.class).buildMenu());
+ popup.add(app.getActionManager().getAction(CopyAttributeAction.class).buildMenu());
+ popup.add(app.getActionManager().getAction(PasteAction.class).buildMenu());
+
TablePopupHandler.install(table, popup);
-
+
add(PanelFactory.createTablePanel(table, null), BorderLayout.CENTER);
-
- mediator.getApplication().getActionManager().setupCCP(table,
- CutAttributeAction.getActionName(), CopyAttributeAction.getActionName());
+
+ mediator.getApplication().getActionManager().setupCutCopyPaste(
+ table,
+ CutAttributeAction.class,
+ CopyAttributeAction.class);
}
public void valueChanged(ListSelectionEvent e) {
@@ -134,20 +138,21 @@ public class DbEntityAttributeTab extend
* Selects specified attributes.
*/
public void selectAttributes(DbAttribute[] attrs) {
- ModelerUtil.updateActions(attrs.length,
- RemoveAttributeAction.getActionName(),
- CutAttributeAction.getActionName(),
- CopyAttributeAction.getActionName());
+ ModelerUtil.updateActions(
+ attrs.length,
+ RemoveAttributeAction.class,
+ CutAttributeAction.class,
+ CopyAttributeAction.class);
DbAttributeTableModel model = (DbAttributeTableModel) table.getModel();
-
+
List<?> listAttrs = model.getObjectList();
int[] newSel = new int[attrs.length];
-
+
for (int i = 0; i < attrs.length; i++) {
newSel[i] = listAttrs.indexOf(attrs[i]);
}
-
+
table.select(newSel);
}
@@ -155,29 +160,29 @@ public class DbEntityAttributeTab extend
if (e instanceof ChangeEvent) {
table.clearSelection();
}
-
+
DbAttribute[] attrs = new DbAttribute[0];
if (table.getSelectedRow() >= 0) {
- DbAttributeTableModel model = (DbAttributeTableModel) table.getModel();
-
- int[] sel = table.getSelectedRows();
- attrs = new DbAttribute[sel.length];
-
- for (int i = 0; i < sel.length; i++) {
- attrs[i] = model.getAttribute(sel[i]);
- }
-
- if (sel.length == 1) {
- // scroll table
- UIUtil.scrollToSelectedRow(table);
- }
+ DbAttributeTableModel model = (DbAttributeTableModel) table.getModel();
+
+ int[] sel = table.getSelectedRows();
+ attrs = new DbAttribute[sel.length];
+
+ for (int i = 0; i < sel.length; i++) {
+ attrs[i] = model.getAttribute(sel[i]);
+ }
+
+ if (sel.length == 1) {
+ // scroll table
+ UIUtil.scrollToSelectedRow(table);
+ }
}
mediator.fireDbAttributeDisplayEvent(new AttributeDisplayEvent(
- this,
- attrs,
- mediator.getCurrentDbEntity(),
- mediator.getCurrentDataMap(),
- (DataChannelDescriptor)mediator.getProject().getRootNode()));
+ this,
+ attrs,
+ mediator.getCurrentDbEntity(),
+ mediator.getCurrentDataMap(),
+ (DataChannelDescriptor) mediator.getProject().getRootNode()));
}
public void dbAttributeChanged(AttributeEvent e) {
@@ -197,13 +202,12 @@ public class DbEntityAttributeTab extend
}
public void currentDbEntityChanged(EntityDisplayEvent e) {
-
+
DbEntity entity = (DbEntity) e.getEntity();
if (entity != null && e.isEntityChanged()) {
rebuildTable(entity);
}
-
-
+
// if an entity was selected on a tree,
// unselect currently selected row
if (e.isUnselectAttributes()) {
@@ -217,21 +221,21 @@ public class DbEntityAttributeTab extend
table.setModel(model);
table.setRowHeight(25);
table.setRowMargin(3);
-
+
TableColumn col = table.getColumnModel().getColumn(model.typeColumnInd());
-
+
String[] types = TypesMapping.getDatabaseTypes();
JComboBox comboBox = CayenneWidgetFactory.createComboBox(types, true);
-
+
// Types.NULL makes no sense as a column type
comboBox.removeItem("NULL");
-
+
AutoCompletion.enable(comboBox);
-
+
col.setCellEditor(CayenneWidgetFactory.createCellEditor(comboBox));
table.getSelectionModel().addListSelectionListener(this);
-
+
tablePreferences.bind(table, null, null, null, model.nameColumnInd(), true);
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipTab.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipTab.java Tue Aug 24 13:34:35 2010
@@ -52,6 +52,7 @@ import org.apache.cayenne.map.event.Enti
import org.apache.cayenne.map.event.RelationshipEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.action.ActionManager;
import org.apache.cayenne.modeler.action.CopyRelationshipAction;
import org.apache.cayenne.modeler.action.CreateObjEntityAction;
import org.apache.cayenne.modeler.action.CreateRelationshipAction;
@@ -86,14 +87,13 @@ public class DbEntityRelationshipTab ext
protected CayenneTable table;
protected JButton resolve;
private TableColumnPreferences tablePreferences;
-
+
/**
- * By now popup menu item is made similiar to toolbar button.
- * (i.e. all functionality is here)
- * This should be probably refactored as Action.
+ * By now popup menu item is made similiar to toolbar button. (i.e. all functionality
+ * is here) This should be probably refactored as Action.
*/
protected JMenuItem resolveMenu;
-
+
/**
* Combo to edit 'target' field
*/
@@ -107,14 +107,14 @@ public class DbEntityRelationshipTab ext
this.mediator.addDbRelationshipListener(this);
init();
-
+
ActionListener resolver = new ActionListener() {
public void actionPerformed(ActionEvent e) {
resolveRelationship();
}
};
-
+
resolve.addActionListener(resolver);
resolveMenu.addActionListener(resolver);
}
@@ -123,60 +123,68 @@ public class DbEntityRelationshipTab ext
this.setLayout(new BorderLayout());
JToolBar toolBar = new JToolBar();
- Application app = Application.getInstance();
- toolBar.add(app.getAction(CreateObjEntityAction.getActionName()).buildButton());
+ ActionManager actionManager = Application.getInstance().getActionManager();
+ toolBar.add(actionManager.getAction(CreateObjEntityAction.class).buildButton());
toolBar
- .add(app
- .getAction(CreateRelationshipAction.getActionName())
+ .add(actionManager
+ .getAction(CreateRelationshipAction.class)
.buildButton());
- toolBar.add(app.getAction(DbEntitySyncAction.getActionName()).buildButton());
+ toolBar.add(actionManager.getAction(DbEntitySyncAction.class).buildButton());
toolBar.addSeparator();
resolve = new JButton();
-
+
Icon ico = ModelerUtil.buildIcon("icon-info.gif");
-
+
resolve.setIcon(ico);
resolve.setToolTipText("Database Mapping");
toolBar.add(resolve);
toolBar.addSeparator();
- toolBar.add(app.getAction(RemoveRelationshipAction.getActionName()).buildButton());
-
+ toolBar
+ .add(actionManager
+ .getAction(RemoveRelationshipAction.class)
+ .buildButton());
+
toolBar.addSeparator();
- toolBar.add(app.getAction(CutRelationshipAction.getActionName()).buildButton());
- toolBar.add(app.getAction(CopyRelationshipAction.getActionName()).buildButton());
- toolBar.add(app.getAction(PasteAction.getActionName()).buildButton());
-
+ toolBar.add(actionManager.getAction(CutRelationshipAction.class).buildButton());
+ toolBar.add(actionManager.getAction(CopyRelationshipAction.class).buildButton());
+ toolBar.add(actionManager.getAction(PasteAction.class).buildButton());
+
add(toolBar, BorderLayout.NORTH);
table = new CayenneTable();
- table.setDefaultRenderer(DbEntity.class, CellRenderers.entityTableRendererWithIcons(mediator));
-
- tablePreferences = new TableColumnPreferences(DbRelationshipTableModel.class, "relationshipTable");
-
+ table.setDefaultRenderer(DbEntity.class, CellRenderers
+ .entityTableRendererWithIcons(mediator));
+
+ tablePreferences = new TableColumnPreferences(
+ DbRelationshipTableModel.class,
+ "relationshipTable");
+
/**
* Create and install a popup
*/
resolveMenu = new JMenuItem("Database Mapping", ico);
-
+
JPopupMenu popup = new JPopupMenu();
popup.add(resolveMenu);
- popup.add(app.getAction(RemoveRelationshipAction.getActionName()).buildMenu());
-
+ popup.add(actionManager.getAction(RemoveRelationshipAction.class).buildMenu());
+
popup.addSeparator();
- popup.add(app.getAction(CutRelationshipAction.getActionName()).buildMenu());
- popup.add(app.getAction(CopyRelationshipAction.getActionName()).buildMenu());
- popup.add(app.getAction(PasteAction.getActionName()).buildMenu());
-
+ popup.add(actionManager.getAction(CutRelationshipAction.class).buildMenu());
+ popup.add(actionManager.getAction(CopyRelationshipAction.class).buildMenu());
+ popup.add(actionManager.getAction(PasteAction.class).buildMenu());
+
TablePopupHandler.install(table, popup);
add(PanelFactory.createTablePanel(table, null), BorderLayout.CENTER);
-
- mediator.getApplication().getActionManager().setupCCP(table,
- CutRelationshipAction.getActionName(), CopyRelationshipAction.getActionName());
+
+ actionManager.setupCutCopyPaste(
+ table,
+ CutRelationshipAction.class,
+ CopyRelationshipAction.class);
}
public void valueChanged(ListSelectionEvent e) {
@@ -197,20 +205,21 @@ public class DbEntityRelationshipTab ext
* Selects a specified relationship in the relationships table.
*/
public void selectRelationships(DbRelationship[] rels) {
- ModelerUtil.updateActions(rels.length,
- RemoveRelationshipAction.getActionName(),
- CutRelationshipAction.getActionName(),
- CopyRelationshipAction.getActionName());
+ ModelerUtil.updateActions(
+ rels.length,
+ RemoveRelationshipAction.class,
+ CutRelationshipAction.class,
+ CopyRelationshipAction.class);
DbRelationshipTableModel model = (DbRelationshipTableModel) table.getModel();
-
+
List listAttrs = model.getObjectList();
int[] newSel = new int[rels.length];
-
+
for (int i = 0; i < rels.length; i++) {
newSel[i] = listAttrs.indexOf(rels[i]);
}
-
+
table.select(newSel);
}
@@ -218,18 +227,18 @@ public class DbEntityRelationshipTab ext
if (e instanceof ChangeEvent) {
table.clearSelection();
}
-
+
DbRelationship[] rels = new DbRelationship[0];
if (table.getSelectedRow() >= 0) {
DbRelationshipTableModel model = (DbRelationshipTableModel) table.getModel();
-
+
int[] sel = table.getSelectedRows();
rels = new DbRelationship[sel.length];
-
+
for (int i = 0; i < sel.length; i++) {
rels[i] = model.getRelationship(sel[i]);
}
-
+
resolve.setEnabled(rels.length == 1 && rels[0].getTargetEntity() != null);
if (sel.length == 1) {
@@ -239,11 +248,15 @@ public class DbEntityRelationshipTab ext
}
else
resolve.setEnabled(false);
-
+
resolveMenu.setEnabled(resolve.isEnabled());
- RelationshipDisplayEvent ev = new RelationshipDisplayEvent(this, rels, mediator
- .getCurrentDbEntity(), mediator.getCurrentDataMap(), (DataChannelDescriptor)mediator.getProject().getRootNode());
+ RelationshipDisplayEvent ev = new RelationshipDisplayEvent(
+ this,
+ rels,
+ mediator.getCurrentDbEntity(),
+ mediator.getCurrentDataMap(),
+ (DataChannelDescriptor) mediator.getProject().getRootNode());
mediator.fireDbRelationshipDisplayEvent(ev);
}
@@ -289,18 +302,26 @@ public class DbEntityRelationshipTab ext
table.setModel(model);
table.setRowHeight(25);
table.setRowMargin(3);
-
- TableColumn col = table.getColumnModel().getColumn(DbRelationshipTableModel.TARGET);
-
+
+ TableColumn col = table.getColumnModel().getColumn(
+ DbRelationshipTableModel.TARGET);
+
targetCombo = CayenneWidgetFactory.createComboBox();
AutoCompletion.enable(targetCombo);
-
- targetCombo.setRenderer(CellRenderers.entityListRendererWithIcons(entity.getDataMap()));
+
+ targetCombo.setRenderer(CellRenderers.entityListRendererWithIcons(entity
+ .getDataMap()));
targetCombo.setModel(createComboModel(entity));
col.setCellEditor(CayenneWidgetFactory.createCellEditor(targetCombo));
table.getSelectionModel().addListSelectionListener(this);
-
- tablePreferences.bind(table, null, null, null, DbRelationshipTableModel.NAME, true);
+
+ tablePreferences.bind(
+ table,
+ null,
+ null,
+ null,
+ DbRelationshipTableModel.NAME,
+ true);
}
public void dbEntityChanged(EntityEvent e) {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityTab.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityTab.java Tue Aug 24 13:34:35 2010
@@ -39,6 +39,7 @@ import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.action.ActionManager;
import org.apache.cayenne.modeler.action.CreateAttributeAction;
import org.apache.cayenne.modeler.action.CreateObjEntityAction;
import org.apache.cayenne.modeler.action.CreateRelationshipAction;
@@ -92,18 +93,18 @@ public class DbEntityTab extends JPanel
private void initView() {
JToolBar toolBar = new JToolBar();
- Application app = Application.getInstance();
- toolBar.add(app.getAction(CreateObjEntityAction.getActionName()).buildButton());
- toolBar.add(app.getAction(DbEntitySyncAction.getActionName()).buildButton());
+ ActionManager actionManager = Application.getInstance().getActionManager();
+ toolBar.add(actionManager.getAction(CreateObjEntityAction.class).buildButton());
+ toolBar.add(actionManager.getAction(DbEntitySyncAction.class).buildButton());
toolBar.addSeparator();
- toolBar.add(app.getAction(CreateAttributeAction.getActionName()).buildButton());
+ toolBar.add(actionManager.getAction(CreateAttributeAction.class).buildButton());
toolBar
- .add(app
- .getAction(CreateRelationshipAction.getActionName())
+ .add(actionManager
+ .getAction(CreateRelationshipAction.class)
.buildButton());
toolBar.addSeparator();
- toolBar.add(app.getAction(ShowGraphEntityAction.getActionName()).buildButton());
+ toolBar.add(actionManager.getAction(ShowGraphEntityAction.class).buildButton());
// create widgets
name = new TextAdapter(new JTextField()) {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityTabbedView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityTabbedView.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityTabbedView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityTabbedView.java Tue Aug 24 13:34:35 2010
@@ -34,6 +34,7 @@ import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.action.ActionManager;
import org.apache.cayenne.modeler.action.RemoveAttributeAction;
import org.apache.cayenne.modeler.action.RemoveRelationshipAction;
import org.apache.cayenne.modeler.editor.ExistingSelectionProcessor;
@@ -78,16 +79,17 @@ public class DbEntityTabbedView extends
}
/** Reset the remove buttons */
- private void resetRemoveButtons(){
- Application app = Application.getInstance();
- app.getAction(RemoveAttributeAction.getActionName()).setEnabled(false);
- app.getAction(RemoveRelationshipAction.getActionName()).setEnabled(false);
+ private void resetRemoveButtons() {
+ ActionManager actionManager = Application.getInstance().getActionManager();
+
+ actionManager.getAction(RemoveAttributeAction.class).setEnabled(false);
+ actionManager.getAction(RemoveRelationshipAction.class).setEnabled(false);
}
-
+
/** Handle focus when tab changes. */
public void stateChanged(ChangeEvent e) {
resetRemoveButtons();
-
+
// find source view
Component selected = getSelectedComponent();
while (selected instanceof JScrollPane) {
@@ -107,7 +109,7 @@ public class DbEntityTabbedView extends
entityPanel.setVisible(true);
}
}
-
+
resetRemoveButtons();
setVisible(e.getEntity() != null);
}
@@ -116,19 +118,19 @@ public class DbEntityTabbedView extends
if (e.getEntity() == null) {
return;
}
-
+
// update relationship selection
Relationship[] rels = e.getRelationships();
DbRelationship[] dbRels = new DbRelationship[rels.length];
-
+
System.arraycopy(rels, 0, dbRels, 0, rels.length);
-
+
// reset tab to relationship
if (getSelectedComponent() != relationshipsPanel && dbRels.length > 0) {
setSelectedComponent(relationshipsPanel);
relationshipsPanel.setVisible(true);
}
-
+
relationshipsPanel.selectRelationships(dbRels);
}
@@ -139,14 +141,14 @@ public class DbEntityTabbedView extends
// update relationship selection
Attribute[] attrs = e.getAttributes();
DbAttribute[] dbAttrs = new DbAttribute[attrs.length];
-
+
System.arraycopy(attrs, 0, dbAttrs, 0, attrs.length);
-
+
if (getSelectedComponent() != attributesPanel && dbAttrs.length > 0) {
setSelectedComponent(attributesPanel);
attributesPanel.setVisible(true);
}
-
+
attributesPanel.selectAttributes(dbAttrs);
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java Tue Aug 24 13:34:35 2010
@@ -47,11 +47,11 @@ import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.RelationshipEvent;
-import org.apache.cayenne.modeler.ActionManager;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.action.CreateAttributeAction;
import org.apache.cayenne.modeler.action.CreateRelationshipAction;
+import org.apache.cayenne.modeler.action.ActionManager;
import org.apache.cayenne.modeler.graph.action.EntityDisplayAction;
import org.apache.cayenne.modeler.graph.action.RemoveEntityAction;
import org.apache.cayenne.util.XMLEncoder;
@@ -71,171 +71,183 @@ import com.jgraph.layout.organic.JGraphO
* Base class for building graphs of entities
*/
abstract class BaseGraphBuilder implements GraphBuilder, DataMapListener {
+
static final Font EDGE_FONT = new Font("Verdana", 0, 10);
-
+
/**
* Graph
*/
protected JGraph graph;
-
+
/**
* Domain
*/
protected transient DataChannelDescriptor domain;
-
+
/**
- * Created entity cells.
- * Maps to entity name, since GraphBuilder can be serialized
+ * Created entity cells. Maps to entity name, since GraphBuilder can be serialized
*/
protected Map<String, DefaultGraphCell> entityCells;
-
+
/**
- * Created relationship cells
- * Maps to relationship qualified name, since GraphBuilder can be serialized
+ * Created relationship cells Maps to relationship qualified name, since GraphBuilder
+ * can be serialized
*/
protected Map<String, DefaultEdge> relCells;
-
+
/**
* Created non-isolated objects
*/
protected List<DefaultGraphCell> createdObjects;
-
+
/**
* Current project controller
*/
protected transient ProjectController mediator;
-
+
protected transient Entity selectedEntity;
-
+
transient JPopupMenu popup;
-
+
boolean undoEventsDisabled;
-
- public synchronized void buildGraph(ProjectController mediator, DataChannelDescriptor domain, boolean doLayout) {
+
+ public synchronized void buildGraph(
+ ProjectController mediator,
+ DataChannelDescriptor domain,
+ boolean doLayout) {
if (graph != null) {
- //graph already built, exiting silently
+ // graph already built, exiting silently
return;
}
-
+
graph = new JGraph();
GraphModel model = new DefaultGraphModel();
graph.setModel(model);
-
+
setProjectController(mediator);
setDataDomain(domain);
-
+
GraphLayoutCache view = new GraphLayoutCache(model, new DefaultCellViewFactory());
graph.setGraphLayoutCache(view);
-
+
graph.addMouseListener(new MouseAdapter() {
+
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
Object selected = graph.getSelectionCell();
if (selected != null && selected instanceof DefaultGraphCell) {
Object userObject = ((DefaultGraphCell) selected).getUserObject();
if (userObject instanceof EntityCellMetadata) {
- showPopup(e.getPoint(),
- ((EntityCellMetadata) userObject).fetchEntity());
+ showPopup(e.getPoint(), ((EntityCellMetadata) userObject)
+ .fetchEntity());
}
}
}
}
});
-
+
graph.addMouseWheelListener(new MouseWheelListener() {
+
public void mouseWheelMoved(MouseWheelEvent e) {
- graph.setScale(graph.getScale() / Math.pow(ZOOM_FACTOR, e.getWheelRotation()));
+ graph.setScale(graph.getScale()
+ / Math.pow(ZOOM_FACTOR, e.getWheelRotation()));
}
});
-
+
entityCells = new HashMap<String, DefaultGraphCell>();
createdObjects = new ArrayList<DefaultGraphCell>();
relCells = new HashMap<String, DefaultEdge>();
-
+
/**
- * an array for entities that are not connected to anyone.
- * We add them separately so that layout doesn't touch them
+ * an array for entities that are not connected to anyone. We add them separately
+ * so that layout doesn't touch them
*/
List<DefaultGraphCell> isolatedObjects = new ArrayList<DefaultGraphCell>();
-
+
/**
* 1. Add all entities
*/
for (DataMap map : domain.getDataMaps()) {
DefaultGraphCell mapCell = new DefaultGraphCell();
createdObjects.add(mapCell);
-
+
for (Entity entity : getEntities(map)) {
DefaultGraphCell cell = createEntityCell(entity);
-
-// mapCell.add(cell);
-// cell.setParent(mapCell);
-
- List<DefaultGraphCell> array = !isIsolated(domain, entity) ?
- createdObjects : isolatedObjects;
+
+ // mapCell.add(cell);
+ // cell.setParent(mapCell);
+
+ List<DefaultGraphCell> array = !isIsolated(domain, entity)
+ ? createdObjects
+ : isolatedObjects;
array.add(cell);
- array.add((DefaultGraphCell) cell.getChildAt(0)); //port
+ array.add((DefaultGraphCell) cell.getChildAt(0)); // port
}
}
-
+
/**
* 2. Add all relationships
- */
+ */
for (DataMap map : domain.getDataMaps()) {
for (Entity entity : getEntities(map)) {
DefaultGraphCell sourceCell = entityCells.get(entity.getName());
-
- postProcessEntity(entity, sourceCell);
+
+ postProcessEntity(entity, sourceCell);
}
}
view.insert(createdObjects.toArray());
-
+
if (doLayout) {
JGraphFacade facade = new JGraphFacade(graph);
-
+
JGraphOrganicLayout layout = new JGraphOrganicLayout();
layout.setNodeDistributionCostFactor(5000000000000.0);
layout.setEdgeLengthCostFactor(1000);
layout.setEdgeCrossingCostFactor(1000000);
layout.setOptimizeBorderLine(false);
layout.setOptimizeEdgeDistance(false);
-
- // JGraphSimpleLayout layout = new JGraphSimpleLayout(JGraphSimpleLayout.TYPE_TILT, 4000, 2000);
+
+ // JGraphSimpleLayout layout = new
+ // JGraphSimpleLayout(JGraphSimpleLayout.TYPE_TILT, 4000, 2000);
layout.run(facade);
- Map nested = facade.createNestedMap(true, true); // Obtain a map of the resulting attribute changes from the facade
-
+ Map nested = facade.createNestedMap(true, true); // Obtain a map of the
+ // resulting attribute
+ // changes from the facade
+
edit(nested); // Apply the results to the actual graph
}
-
+
/**
* Adding isolated objects
*
- * We're placing them so that they will take maximum space in left top corner.
- * The sample order is below:
+ * We're placing them so that they will take maximum space in left top corner. The
+ * sample order is below:
*
- * 1 2 6 7...
- * 3 5 8 ...
- * 4 9...
- * 10 ...
+ * 1 2 6 7... 3 5 8 ... 4 9... 10 ...
*/
if (isolatedObjects.size() > 0) {
- int n = isolatedObjects.size() / 2; //number of isolated entities
- int x = (int) Math.ceil((Math.sqrt(1 + 8*n) - 1) / 2); //side of triangle
-
+ int n = isolatedObjects.size() / 2; // number of isolated entities
+ int x = (int) Math.ceil((Math.sqrt(1 + 8 * n) - 1) / 2); // side of triangle
+
Dimension pref = graph.getPreferredSize();
- int dx = pref.width / 2 / x; //x-distance between entities
- int dy = pref.height / 2 / x; //y-distance between entities
-
+ int dx = pref.width / 2 / x; // x-distance between entities
+ int dy = pref.height / 2 / x; // y-distance between entities
+
int posX = dx / 2;
int posY = dy / 2;
-
+
int row = 0;
-
+
for (int isolatedIndex = 0; isolatedIndex < isolatedObjects.size();) {
for (int i = 0; isolatedIndex < isolatedObjects.size() && i < x - row; i++) {
- GraphConstants.setBounds(isolatedObjects.get(isolatedIndex).getAttributes(),
- new Rectangle2D.Double(pref.width - posX, pref.height - 3 * posY / 2, 10, 10));
- isolatedIndex += 2; //because every 2nd object is port
+ GraphConstants.setBounds(isolatedObjects
+ .get(isolatedIndex)
+ .getAttributes(), new Rectangle2D.Double(
+ pref.width - posX,
+ pref.height - 3 * posY / 2,
+ 10,
+ 10));
+ isolatedIndex += 2; // because every 2nd object is port
posX += dx;
}
posX = dx / 2;
@@ -243,30 +255,30 @@ abstract class BaseGraphBuilder implemen
row++;
}
}
-
+
view.insert(isolatedObjects.toArray());
graph.getModel().addUndoableEditListener(this);
}
protected DefaultGraphCell createEntityCell(Entity entity) {
DefaultGraphCell cell = new DefaultGraphCell(getCellMetadata(entity));
-
+
GraphConstants.setResize(cell.getAttributes(), true);
GraphConstants.setBorder(cell.getAttributes(), new LineBorder(Color.BLACK));
-
+
GraphConstants.setEditable(cell.getAttributes(), false);
entityCells.put(entity.getName(), cell);
cell.addPort();
return cell;
}
-
+
public DefaultGraphCell getEntityCell(String entityName) {
return entityCells.get(entityName);
}
-
+
/**
- * Post (i.e. after creation on entity cell) process of the entity
+ * Post (i.e. after creation on entity cell) process of the entity
*/
protected void postProcessEntity(Entity entity, DefaultGraphCell cell) {
for (Relationship rel : entity.getRelationships()) {
@@ -278,15 +290,15 @@ abstract class BaseGraphBuilder implemen
}
}
}
-
+
/**
- * Returns whether an entity is not connected to any other
- * TODO: not fine algorithm, it iterates through all entities and all rels
+ * Returns whether an entity is not connected to any other TODO: not fine algorithm,
+ * it iterates through all entities and all rels
*/
protected boolean isIsolated(DataChannelDescriptor domain, Entity entity) {
if (entity.getRelationships().size() == 0) {
- //searching for rels that have a target="entity"
-
+ // searching for rels that have a target="entity"
+
for (DataMap map : domain.getDataMaps()) {
for (Entity source : getEntities(map)) {
if (source.getAnyRelationship(entity) != null) {
@@ -298,29 +310,29 @@ abstract class BaseGraphBuilder implemen
}
return false;
}
-
+
protected abstract Collection<? extends Entity> getEntities(DataMap map);
-
+
/**
- * Returns label for relationship on the graph, considering its "mandatory" and "to-many"
- * properties
+ * Returns label for relationship on the graph, considering its "mandatory" and
+ * "to-many" properties
*/
private static String getRelationshipLabel(Relationship rel) {
if (rel == null) {
return null;
}
-
+
if (rel.isToMany()) {
return "0..*";
}
return rel.isMandatory() ? "1" : "0..1";
}
-
+
/**
* Returns metadata (user object) for this cell
*/
protected abstract EntityCellMetadata getCellMetadata(Entity e);
-
+
protected void showPopup(Point p, Entity entity) {
selectedEntity = entity;
if (popup == null) {
@@ -328,30 +340,30 @@ abstract class BaseGraphBuilder implemen
}
popup.show(graph, p.x, p.y);
}
-
+
public Entity getSelectedEntity() {
return selectedEntity;
}
-
+
/**
* Creates popup menu
*/
protected JPopupMenu createPopupMenu() {
ActionManager actionManager = Application.getInstance().getActionManager();
-
+
JPopupMenu menu = new JPopupMenu();
menu.add(new EntityDisplayAction(this).buildMenu());
menu.addSeparator();
- menu.add(new EntityDisplayAction(this,
- actionManager.getAction(CreateAttributeAction.getActionName())).buildMenu());
- menu.add(new EntityDisplayAction(this,
- actionManager.getAction(CreateRelationshipAction.getActionName())).buildMenu());
+ menu.add(new EntityDisplayAction(this, actionManager
+ .getAction(CreateAttributeAction.class)).buildMenu());
+ menu.add(new EntityDisplayAction(this, actionManager
+ .getAction(CreateRelationshipAction.class)).buildMenu());
menu.addSeparator();
menu.add(new RemoveEntityAction(this));
-
+
return menu;
}
-
+
/**
* Updates specified entity on the graph
*/
@@ -360,20 +372,20 @@ abstract class BaseGraphBuilder implemen
if (cell != null) {
GraphConstants.setValue(cell.getAttributes(), getCellMetadata(e));
GraphConstants.setResize(cell.getAttributes(), true);
-
+
Map nested = new HashMap();
nested.put(cell, cell.getAttributes());
-
+
edit(nested);
}
}
-
+
protected void updateRelationshipCell(Relationship rel) {
if (rel.getSourceEntity() != null && rel.getTargetEntity() != null) {
DefaultEdge edge = relCells.get(getQualifiedName(rel));
if (edge != null) {
updateRelationshipLabels(edge, rel, rel.getReverseRelationship());
-
+
Map nested = new HashMap();
nested.put(edge, edge.getAttributes());
edit(nested);
@@ -383,137 +395,154 @@ abstract class BaseGraphBuilder implemen
}
}
}
-
+
protected void removeEntityCell(Entity e) {
final DefaultGraphCell cell = entityCells.get(e.getName());
if (cell != null) {
runWithUndoDisabled(new Runnable() {
+
public void run() {
- graph.getGraphLayoutCache().remove(new Object[] { cell }, true, true);
+ graph.getGraphLayoutCache().remove(new Object[] {
+ cell
+ }, true, true);
}
});
entityCells.remove(e.getName());
}
}
-
+
protected void removeRelationshipCell(Relationship rel) {
final DefaultEdge edge = relCells.get(getQualifiedName(rel));
if (edge != null) {
runWithUndoDisabled(new Runnable() {
+
public void run() {
- graph.getGraphLayoutCache().remove(new Object[] { edge });
+ graph.getGraphLayoutCache().remove(new Object[] {
+ edge
+ });
}
});
relCells.remove(getQualifiedName(rel));
}
}
-
- protected DefaultEdge createRelationshipCell(Relationship rel) {
+
+ protected DefaultEdge createRelationshipCell(Relationship rel) {
if (!relCells.containsKey(getQualifiedName(rel))) {
Relationship reverse = rel.getReverseRelationship();
-
+
DefaultEdge edge = new DefaultEdge();
-
-// GraphConstants.setLineStyle(edge.getAttributes(), GraphConstants.STYLE_ORTHOGONAL);
-// GraphConstants.setRouting(edge.getAttributes(), GraphConstants.ROUTING_SIMPLE);
-
+
+ // GraphConstants.setLineStyle(edge.getAttributes(),
+ // GraphConstants.STYLE_ORTHOGONAL);
+ // GraphConstants.setRouting(edge.getAttributes(),
+ // GraphConstants.ROUTING_SIMPLE);
+
GraphConstants.setEditable(edge.getAttributes(), false);
GraphConstants.setLabelAlongEdge(edge.getAttributes(), true);
GraphConstants.setSelectable(edge.getAttributes(), false);
GraphConstants.setFont(edge.getAttributes(), EDGE_FONT);
-
+
updateRelationshipLabels(edge, rel, reverse);
-
+
relCells.put(getQualifiedName(rel), edge);
-
+
if (reverse != null) {
relCells.put(getQualifiedName(reverse), edge);
}
-
+
return edge;
}
return null;
}
-
-
+
protected void insertRelationshipCell(Relationship rel) {
DefaultEdge edge = createRelationshipCell(rel);
insert(edge);
}
-
+
protected void insertEntityCell(Entity entity) {
DefaultGraphCell cell = createEntityCell(entity);
-
- //putting cell to a random posistion..
- GraphConstants.setBounds(cell.getAttributes(),
- new Rectangle2D.Double(Math.random() * graph.getWidth(), Math.random() * graph.getHeight(),
- 10, 10));
-
- //setting graph type-specific attrs
+
+ // putting cell to a random posistion..
+ GraphConstants.setBounds(cell.getAttributes(), new Rectangle2D.Double(Math
+ .random()
+ * graph.getWidth(), Math.random() * graph.getHeight(), 10, 10));
+
+ // setting graph type-specific attrs
postProcessEntity(entity, cell);
-
+
insert(cell);
}
-
+
/**
* Updates relationship labels for specified relationship edge.
- * @param order order of relationship in entity's same target relationships - to differ labels of relationships with same source and target
- */
- protected void updateRelationshipLabels(DefaultEdge edge, Relationship rel, Relationship reverse) {
+ *
+ * @param order order of relationship in entity's same target relationships - to
+ * differ labels of relationships with same source and target
+ */
+ protected void updateRelationshipLabels(
+ DefaultEdge edge,
+ Relationship rel,
+ Relationship reverse) {
DefaultGraphCell sourceCell = entityCells.get(rel.getSourceEntity().getName());
DefaultGraphCell targetCell = entityCells.get(rel.getTargetEntity().getName());
-
+
edge.setSource(sourceCell != null ? sourceCell.getChildAt(0) : null);
edge.setTarget(targetCell != null ? targetCell.getChildAt(0) : null);
-
+
Object[] labels = {
- rel.getName() + " " + getRelationshipLabel(rel),
- reverse == null ?
- "" : reverse.getName() + " " + getRelationshipLabel(reverse)
+ rel.getName() + " " + getRelationshipLabel(rel),
+ reverse == null ? "" : reverse.getName()
+ + " "
+ + getRelationshipLabel(reverse)
};
GraphConstants.setExtraLabels(edge.getAttributes(), labels);
-
+
Point2D[] labelPositions = {
- new Point2D.Double(GraphConstants.PERMILLE * (0.1 + 0.2 * Math.random()), 10),
- new Point2D.Double(GraphConstants.PERMILLE * (0.9 - 0.2 * Math.random()), -10)
+ new Point2D.Double(
+ GraphConstants.PERMILLE * (0.1 + 0.2 * Math.random()),
+ 10),
+ new Point2D.Double(
+ GraphConstants.PERMILLE * (0.9 - 0.2 * Math.random()),
+ -10)
};
GraphConstants.setExtraLabelPositions(edge.getAttributes(), labelPositions);
}
-
+
public JGraph getGraph() {
return graph;
}
-
+
public void dataMapAdded(DataMapEvent e) {
}
-
+
public void dataMapChanged(DataMapEvent e) {
}
-
+
public void dataMapRemoved(DataMapEvent e) {
for (Entity entity : getEntities(e.getDataMap())) {
removeEntityCell(entity);
}
}
-
+
public void setProjectController(ProjectController mediator) {
this.mediator = mediator;
-
+
mediator.addDataMapListener(this);
}
-
+
public void setDataDomain(DataChannelDescriptor domain) {
this.domain = domain;
}
-
+
public DataChannelDescriptor getDataDomain() {
return domain;
}
-
+
public void destroy() {
mediator.removeDataMapListener(this);
}
-
+
/**
* Checks if entity name has changed, then changes map key
*/
@@ -522,24 +551,27 @@ abstract class BaseGraphBuilder implemen
entityCells.put(e.getNewName(), entityCells.remove(e.getOldName()));
}
}
-
+
/**
* Checks if entity name has changed, then changes map key
*/
protected void remapRelationship(RelationshipEvent e) {
if (e.isNameChange()) {
- relCells.put(getQualifiedName(e.getRelationship()),
- relCells.remove(e.getEntity().getName() + "." + e.getOldName()));
+ relCells.put(getQualifiedName(e.getRelationship()), relCells.remove(e
+ .getEntity()
+ .getName()
+ + "."
+ + e.getOldName()));
}
}
-
+
/**
* Returns qualified name (entity name + relationship name) for a relationship
*/
static String getQualifiedName(Relationship rel) {
return rel.getSourceEntity().getName() + "." + rel.getName();
}
-
+
public void encodeAsXML(XMLEncoder encoder) {
encoder.print("<graph type=\"");
encoder.print(getType().toString());
@@ -547,22 +579,22 @@ abstract class BaseGraphBuilder implemen
encoder.print(String.valueOf(graph.getScale()));
encoder.println("\">");
encoder.indent(1);
-
+
for (Entry<String, DefaultGraphCell> entry : entityCells.entrySet()) {
encoder.print("<entity name=\"");
encoder.print(entry.getKey());
encoder.print("\" ");
-
+
DefaultGraphCell cell = entry.getValue();
Rectangle2D rect = graph.getCellBounds(cell);
encodeRecangle(encoder, rect);
encoder.println("/>");
}
-
+
encoder.indent(-1);
encoder.println("</graph>");
}
-
+
private void encodeRecangle(XMLEncoder encoder, Rectangle2D rect) {
encoder.print("x=\"");
encoder.print(rect.getX() + "\" y=\"");
@@ -570,23 +602,25 @@ abstract class BaseGraphBuilder implemen
encoder.print(rect.getWidth() + "\" height=\"");
encoder.print(rect.getHeight() + "\" ");
}
-
+
private synchronized void edit(final Map map) {
runWithUndoDisabled(new Runnable() {
+
public void run() {
graph.getGraphLayoutCache().edit(map);
}
});
}
-
+
private synchronized void insert(final Object cell) {
runWithUndoDisabled(new Runnable() {
+
public void run() {
graph.getGraphLayoutCache().insert(cell);
}
});
}
-
+
private synchronized void runWithUndoDisabled(Runnable r) {
undoEventsDisabled = true;
try {
@@ -596,12 +630,12 @@ abstract class BaseGraphBuilder implemen
undoEventsDisabled = false;
}
}
-
+
public void undoableEditHappened(UndoableEditEvent e) {
if (!undoEventsDisabled) {
- //graph has been modified
+ // graph has been modified
mediator.setDirty(true);
-
+
Application.getInstance().getUndoManager().undoableEditHappened(e);
}
}
Copied: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/CayenneModelerModule.java (from r988535, cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/CayenneModelerModule.java?p2=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/CayenneModelerModule.java&p1=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java&r1=988535&r2=988538&rev=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/CayenneModelerModule.java Tue Aug 24 13:34:35 2010
@@ -16,31 +16,25 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.undo;
+package org.apache.cayenne.modeler.init;
-import javax.swing.undo.AbstractUndoableEdit;
-
-import org.apache.cayenne.modeler.ActionManager;
+import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.Module;
import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.action.ActionManager;
+import org.apache.cayenne.modeler.action.DefaultActionManager;
+import org.apache.cayenne.modeler.init.platform.GenericPlatformInitializer;
+import org.apache.cayenne.modeler.init.platform.PlatformInitializer;
-public abstract class CayenneUndoableEdit extends AbstractUndoableEdit {
-
- protected ActionManager actionManager;
- protected ProjectController controller;
-
- public CayenneUndoableEdit() {
- this.actionManager = Application.getInstance().getActionManager();
- this.controller = Application.getInstance().getFrameController().getProjectController();
- }
+/**
+ * A DI module for bootstrapping CayenneModeler services.
+ */
+public class CayenneModelerModule implements Module {
- @Override
- public boolean canRedo() {
- return true;
- }
+ public void configure(Binder binder) {
- @Override
- public boolean canUndo() {
- return true;
+ binder.bind(ActionManager.class).to(DefaultActionManager.class);
+ binder.bind(Application.class).to(Application.class);
+ binder.bind(PlatformInitializer.class).to(GenericPlatformInitializer.class);
}
}
Copied: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/platform/GenericPlatformInitializer.java (from r988535, cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/platform/GenericPlatformInitializer.java?p2=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/platform/GenericPlatformInitializer.java&p1=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java&r1=988535&r2=988538&rev=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/platform/GenericPlatformInitializer.java Tue Aug 24 13:34:35 2010
@@ -16,31 +16,23 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.undo;
+package org.apache.cayenne.modeler.init.platform;
-import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.JFrame;
-import org.apache.cayenne.modeler.ActionManager;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ProjectController;
+public class GenericPlatformInitializer implements PlatformInitializer {
-public abstract class CayenneUndoableEdit extends AbstractUndoableEdit {
-
- protected ActionManager actionManager;
- protected ProjectController controller;
-
- public CayenneUndoableEdit() {
- this.actionManager = Application.getInstance().getActionManager();
- this.controller = Application.getInstance().getFrameController().getProjectController();
- }
-
- @Override
- public boolean canRedo() {
- return true;
- }
+ /**
+ * Does nothing, leaving unchanged the default platform Look and Feel.
+ */
+ public void initLookAndFeel() {
+ // noop
+ }
- @Override
- public boolean canUndo() {
- return true;
+ /**
+ * Does nothing, leaving unchanged the default frame menus.
+ */
+ public void setupMenus(JFrame frame) {
+ // noop - keep all the default menus...
}
}
Copied: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/platform/PlatformInitializer.java (from r988535, cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/platform/PlatformInitializer.java?p2=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/platform/PlatformInitializer.java&p1=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java&r1=988535&r2=988538&rev=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/init/platform/PlatformInitializer.java Tue Aug 24 13:34:35 2010
@@ -16,31 +16,22 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
-package org.apache.cayenne.modeler.undo;
+package org.apache.cayenne.modeler.init.platform;
-import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.JFrame;
-import org.apache.cayenne.modeler.ActionManager;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.ProjectController;
+/**
+ * An interface that provides methods for platform-specific Modeler initialization.
+ */
+public interface PlatformInitializer {
-public abstract class CayenneUndoableEdit extends AbstractUndoableEdit {
-
- protected ActionManager actionManager;
- protected ProjectController controller;
-
- public CayenneUndoableEdit() {
- this.actionManager = Application.getInstance().getActionManager();
- this.controller = Application.getInstance().getFrameController().getProjectController();
- }
+ /**
+ * Initializes application look and feel.
+ */
+ void initLookAndFeel();
- @Override
- public boolean canRedo() {
- return true;
- }
-
- @Override
- public boolean canUndo() {
- return true;
- }
+ /**
+ * Updates default frame menus according to the platform specifics.
+ */
+ void setupMenus(JFrame frame);
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoManager.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoManager.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoManager.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoManager.java Tue Aug 24 13:34:35 2010
@@ -91,10 +91,10 @@ public class CayenneUndoManager extends
private void updateUI() {
CayenneAction undoAction = application.getActionManager().getAction(
- UndoAction.getActionName());
+ UndoAction.class);
CayenneAction redoAction = application.getActionManager().getAction(
- RedoAction.getActionName());
+ RedoAction.class);
undoAction.setEnabled(canUndo());
redoAction.setEnabled(canRedo());
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CayenneUndoableEdit.java Tue Aug 24 13:34:35 2010
@@ -20,9 +20,9 @@ package org.apache.cayenne.modeler.undo;
import javax.swing.undo.AbstractUndoableEdit;
-import org.apache.cayenne.modeler.ActionManager;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.action.ActionManager;
public abstract class CayenneUndoableEdit extends AbstractUndoableEdit {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateAttributeUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateAttributeUndoableEdit.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateAttributeUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateAttributeUndoableEdit.java Tue Aug 24 13:34:35 2010
@@ -33,81 +33,82 @@ import org.apache.cayenne.modeler.event.
public class CreateAttributeUndoableEdit extends CayenneUndoableEdit {
- @Override
- public boolean canRedo() {
- return true;
- }
-
-
- @Override
- public String getPresentationName() {
- return "Create Attribute";
- }
-
- private ObjEntity objEntity;
- private ObjAttribute objAttr;
-
- private DataChannelDescriptor domain;
- private DataMap dataMap;
-
- private DbEntity dbEntity;
- private DbAttribute dbAttr;
-
- @Override
- public void redo() throws CannotRedoException {
- CreateAttributeAction action = (CreateAttributeAction) actionManager
- .getAction(CreateAttributeAction.getActionName());
-
- if (objEntity != null) {
- action.createObjAttribute(dataMap, objEntity, objAttr);
- }
-
- if (dbEntity != null) {
- action.createDbAttribute(dataMap, dbEntity, dbAttr);
- }
- }
-
- @Override
- public void undo() throws CannotUndoException {
- RemoveAttributeAction action = (RemoveAttributeAction) actionManager
- .getAction(RemoveAttributeAction.getActionName());
-
- if (objEntity != null) {
- action.removeObjAttributes(objEntity,
- new ObjAttribute[] { objAttr });
-
- controller.fireObjEntityDisplayEvent(new EntityDisplayEvent(
- this,
- objEntity,
- dataMap,
- domain));
- }
-
- if (dbEntity != null) {
- action.removeDbAttributes(dataMap, dbEntity,
- new DbAttribute[] { dbAttr });
-
- controller.fireDbEntityDisplayEvent(new EntityDisplayEvent(
- this,
- dbEntity,
- dataMap,
- domain));
- }
- }
-
- public CreateAttributeUndoableEdit(DataChannelDescriptor domain, DataMap map,
- ObjEntity objEntity, ObjAttribute attr) {
- this.domain = domain;
- this.dataMap = map;
- this.objEntity = objEntity;
- this.objAttr = attr;
- }
-
- public CreateAttributeUndoableEdit(DataChannelDescriptor domain, DataMap map,
- DbEntity dbEntity, DbAttribute attr) {
- this.domain = domain;
- this.dataMap = map;
- this.dbEntity = dbEntity;
- this.dbAttr = attr;
- }
+ @Override
+ public boolean canRedo() {
+ return true;
+ }
+
+ @Override
+ public String getPresentationName() {
+ return "Create Attribute";
+ }
+
+ private ObjEntity objEntity;
+ private ObjAttribute objAttr;
+
+ private DataChannelDescriptor domain;
+ private DataMap dataMap;
+
+ private DbEntity dbEntity;
+ private DbAttribute dbAttr;
+
+ @Override
+ public void redo() throws CannotRedoException {
+ CreateAttributeAction action = actionManager
+ .getAction(CreateAttributeAction.class);
+
+ if (objEntity != null) {
+ action.createObjAttribute(dataMap, objEntity, objAttr);
+ }
+
+ if (dbEntity != null) {
+ action.createDbAttribute(dataMap, dbEntity, dbAttr);
+ }
+ }
+
+ @Override
+ public void undo() throws CannotUndoException {
+ RemoveAttributeAction action = actionManager
+ .getAction(RemoveAttributeAction.class);
+
+ if (objEntity != null) {
+ action.removeObjAttributes(objEntity, new ObjAttribute[] {
+ objAttr
+ });
+
+ controller.fireObjEntityDisplayEvent(new EntityDisplayEvent(
+ this,
+ objEntity,
+ dataMap,
+ domain));
+ }
+
+ if (dbEntity != null) {
+ action.removeDbAttributes(dataMap, dbEntity, new DbAttribute[] {
+ dbAttr
+ });
+
+ controller.fireDbEntityDisplayEvent(new EntityDisplayEvent(
+ this,
+ dbEntity,
+ dataMap,
+ domain));
+ }
+ }
+
+ public CreateAttributeUndoableEdit(DataChannelDescriptor domain, DataMap map,
+ ObjEntity objEntity, ObjAttribute attr) {
+ this.domain = domain;
+ this.dataMap = map;
+ this.objEntity = objEntity;
+ this.objAttr = attr;
+ }
+
+ public CreateAttributeUndoableEdit(DataChannelDescriptor domain, DataMap map,
+ DbEntity dbEntity, DbAttribute attr) {
+ this.domain = domain;
+ this.dataMap = map;
+ this.dbEntity = dbEntity;
+ this.dbAttr = attr;
+ }
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateCallbackMethodUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateCallbackMethodUndoableEdit.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateCallbackMethodUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateCallbackMethodUndoableEdit.java Tue Aug 24 13:34:35 2010
@@ -28,36 +28,34 @@ import org.apache.cayenne.modeler.editor
public class CreateCallbackMethodUndoableEdit extends CayenneUndoableEdit {
-
-
- private CallbackMap map;
- private CallbackType callbackType;
- private String methodName;
-
- @Override
- public String getPresentationName() {
- return "Create Callback Method";
- }
-
- @Override
- public void redo() throws CannotRedoException {
- CreateCallbackMethodAction action = (CreateCallbackMethodAction) actionManager
- .getAction(CreateCallbackMethodAction.getActionName());
- action.createCallbackMethod(map, callbackType, methodName);
- }
-
- @Override
- public void undo() throws CannotUndoException {
- RemoveCallbackMethodAction action = (RemoveCallbackMethodAction) actionManager
- .getAction(RemoveCallbackMethodAction.getActionName());
- action.removeCallbackMethod(map, callbackType, methodName);
- }
-
- public CreateCallbackMethodUndoableEdit(CallbackMap map,
- CallbackType callbackType, String methodName) {
- this.map = map;
- this.callbackType = callbackType;
- this.methodName = methodName;
- }
+ private CallbackMap map;
+ private CallbackType callbackType;
+ private String methodName;
+
+ @Override
+ public String getPresentationName() {
+ return "Create Callback Method";
+ }
+
+ @Override
+ public void redo() throws CannotRedoException {
+ CreateCallbackMethodAction action = actionManager
+ .getAction(CreateCallbackMethodAction.class);
+ action.createCallbackMethod(map, callbackType, methodName);
+ }
+
+ @Override
+ public void undo() throws CannotUndoException {
+ RemoveCallbackMethodAction action = actionManager
+ .getAction(RemoveCallbackMethodAction.class);
+ action.removeCallbackMethod(map, callbackType, methodName);
+ }
+
+ public CreateCallbackMethodUndoableEdit(CallbackMap map, CallbackType callbackType,
+ String methodName) {
+ this.map = map;
+ this.callbackType = callbackType;
+ this.methodName = methodName;
+ }
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java?rev=988538&r1=988537&r2=988538&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java Tue Aug 24 13:34:35 2010
@@ -26,13 +26,13 @@ import org.apache.cayenne.map.EntityList
import org.apache.cayenne.modeler.action.CreateDataMapEntityListenerAction;
import org.apache.cayenne.modeler.action.RemoveEntityListenerForDataMapAction;
-
public class CreateDataMapEntityListenerUndoableEdit extends CayenneUndoableEdit {
private DataMap dataMap;
private EntityListener listener;
- public CreateDataMapEntityListenerUndoableEdit(DataMap dataMap, EntityListener listener) {
+ public CreateDataMapEntityListenerUndoableEdit(DataMap dataMap,
+ EntityListener listener) {
this.dataMap = dataMap;
this.listener = listener;
}
@@ -44,15 +44,15 @@ public class CreateDataMapEntityListener
@Override
public void redo() throws CannotRedoException {
- CreateDataMapEntityListenerAction action = (CreateDataMapEntityListenerAction) actionManager
- .getAction(CreateDataMapEntityListenerAction.getActionName());
+ CreateDataMapEntityListenerAction action = actionManager
+ .getAction(CreateDataMapEntityListenerAction.class);
action.createMapListener(dataMap, listener);
}
@Override
public void undo() throws CannotUndoException {
- RemoveEntityListenerForDataMapAction action = (RemoveEntityListenerForDataMapAction) actionManager
- .getAction(RemoveEntityListenerForDataMapAction.getActionName());
+ RemoveEntityListenerForDataMapAction action = actionManager
+ .getAction(RemoveEntityListenerForDataMapAction.class);
action.removeEntityListener(dataMap, listener.getClassName());
}