You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by an...@apache.org on 2009/12/03 12:04:42 UTC

svn commit: r886739 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler: editor/DataDomainTabbedView.java graph/DataDomainGraphTab.java graph/action/RebuildGraphAction.java graph/action/RefreshGraphAction.java

Author: andrey
Date: Thu Dec  3 11:04:42 2009
New Revision: 886739

URL: http://svn.apache.org/viewvc?rev=886739&view=rev
Log:
CAY-762 ERDiagram for Object Entities in Cayenne Modeler. Rebuild button

Added:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RebuildGraphAction.java
      - copied, changed from r886158, cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RefreshGraphAction.java
Removed:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RefreshGraphAction.java
Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainTabbedView.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainTabbedView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainTabbedView.java?rev=886739&r1=886738&r2=886739&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainTabbedView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainTabbedView.java Thu Dec  3 11:04:42 2009
@@ -65,7 +65,7 @@
 
     public void stateChanged(ChangeEvent e) {
         if (getSelectedComponent() == graphTab) {
-            graphTab.rebuild();
+            graphTab.refresh();
         }
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java?rev=886739&r1=886738&r2=886739&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java Thu Dec  3 11:04:42 2009
@@ -24,7 +24,9 @@
 import java.awt.event.ItemListener;
 
 import javax.swing.JComboBox;
+import javax.swing.JDialog;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JToolBar;
@@ -35,7 +37,7 @@
 import org.apache.cayenne.modeler.action.ModelerProjectConfiguration;
 import org.apache.cayenne.modeler.event.DomainDisplayEvent;
 import org.apache.cayenne.modeler.event.DomainDisplayListener;
-import org.apache.cayenne.modeler.graph.action.RefreshGraphAction;
+import org.apache.cayenne.modeler.graph.action.RebuildGraphAction;
 import org.apache.cayenne.modeler.graph.action.SaveAsImageAction;
 import org.apache.cayenne.modeler.graph.action.ZoomInAction;
 import org.apache.cayenne.modeler.graph.action.ZoomOutAction;
@@ -100,7 +102,7 @@
                 false);
         diagramCombo.addItemListener(this);
         
-        toolbar.add(new RefreshGraphAction(this, Application.getInstance()).buildButton());
+        toolbar.add(new RebuildGraphAction(this, Application.getInstance()).buildButton());
         toolbar.add(new SaveAsImageAction(this, Application.getInstance()).buildButton());
         toolbar.addSeparator();
         toolbar.add(new ZoomInAction(this, Application.getInstance()).buildButton());
@@ -121,29 +123,55 @@
             needRebuild = true;
             
             if (isVisible()) {
-                rebuild();
+                refresh();
             }
         }
     }
     
     /**
-     * Rebuilds graph from a domain
+     * Rebuilds graph from a domain, if it is not yet built
+     * Otherwise, takes it from cache 
      */
-    public synchronized void rebuild() {
+    public synchronized void refresh() {
         if (needRebuild && domain != null) {
             ModelerProjectConfiguration conf = (ModelerProjectConfiguration)
                 mediator.getProject().getConfiguration();
             graph = conf.getGraphRegistry().loadGraph(mediator, domain, 
-                    GraphType.values()[diagramCombo.getSelectedIndex()]);
+                    getSelectedType());
             scrollPane.setViewportView(graph);
             
             needRebuild = false;
         }
     }
+    
+    private GraphType getSelectedType() {
+        return GraphType.values()[diagramCombo.getSelectedIndex()];
+    }
+    
+    /**
+     * Rebuilds graph, deleting existing if needed
+     */
+    public synchronized void rebuild() {
+        if (domain != null) {
+            JOptionPane pane = new JOptionPane("Rebuilding graph from domain will cause all user" +
+            		" changes to be lost. Continue?",
+                    JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
+
+            JDialog dialog = pane.createDialog(Application.getFrame(), "Confirm Rebuild");
+            dialog.setVisible(true);
+            
+            if (pane.getValue().equals(JOptionPane.YES_OPTION)) {
+                ModelerProjectConfiguration conf = (ModelerProjectConfiguration)
+                    mediator.getProject().getConfiguration();
+                conf.getGraphRegistry().getGraphMap(domain).remove(getSelectedType());
+                itemStateChanged(null);
+            }
+        }
+    }
 
     public void itemStateChanged(ItemEvent e) {
         needRebuild = true;
-        rebuild();
+        refresh();
     }
     
     public JGraph getGraph() {

Copied: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RebuildGraphAction.java (from r886158, cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RefreshGraphAction.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RebuildGraphAction.java?p2=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RebuildGraphAction.java&p1=cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RefreshGraphAction.java&r1=886158&r2=886739&rev=886739&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RefreshGraphAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/RebuildGraphAction.java Thu Dec  3 11:04:42 2009
@@ -9,11 +9,11 @@
 /**
  * Action for refreshing the graph 
  */
-public class RefreshGraphAction extends CayenneAction {
+public class RebuildGraphAction extends CayenneAction {
     private final DataDomainGraphTab dataDomainGraphTab;
 
-    public RefreshGraphAction(DataDomainGraphTab dataDomainGraphTab, Application application) {
-        super("Refresh", application);
+    public RebuildGraphAction(DataDomainGraphTab dataDomainGraphTab, Application application) {
+        super("Rebuild", application);
         this.dataDomainGraphTab = dataDomainGraphTab;
         setEnabled(true);
     }
@@ -25,6 +25,6 @@
     
     @Override
     public void performAction(ActionEvent e) {
-        this.dataDomainGraphTab.itemStateChanged(null);
+        this.dataDomainGraphTab.rebuild();
     }
 }
\ No newline at end of file