Revision: 3605
Author: [email protected]
Date: Fri Jun 11 12:29:25 2010
Log: NEW - bug 2458: Create Critic Manager
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2458

When you select criticisms in the critic panel's table the objects that were criticized will be selected in the play pen.
http://code.google.com/p/power-architect/source/detail?r=3605

Modified:
 /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticPanel.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticPanel.java Fri Jun 11 09:50:01 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticPanel.java Fri Jun 11 12:29:25 2010
@@ -20,6 +20,7 @@
 package ca.sqlpower.architect.swingui.critic;

 import java.awt.BorderLayout;
+import java.util.ArrayList;
 import java.util.List;

 import javax.swing.ImageIcon;
@@ -27,12 +28,16 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableCellRenderer;

 import ca.sqlpower.architect.ddl.critic.Criticism;
 import ca.sqlpower.architect.ddl.critic.CriticAndSettings.Severity;
 import ca.sqlpower.architect.swingui.ArchitectSwingSession;
+import ca.sqlpower.sqlobject.SQLObject;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.swingui.table.FancyExportableJTable;

 import com.jgoodies.forms.builder.ButtonBarBuilder;
@@ -76,7 +81,14 @@
     private final ArchitectSwingSession session;

     private final FancyExportableJTable table;
-
+
+ private final ListSelectionListener selectedObjectsChangedListener = new ListSelectionListener() {
+
+        public void valueChanged(ListSelectionEvent e) {
+            selectSubjectInPlayPen();
+        }
+    };
+
     public CriticPanel(ArchitectSwingSession session) {
         this.session = session;

@@ -85,6 +97,8 @@
         table.setDefaultRenderer(Severity.class, tableRenderer);
         panel = new JPanel(new BorderLayout());
         panel.add(new JScrollPane(table), BorderLayout.CENTER);
+ table.getSelectionModel().addListSelectionListener(selectedObjectsChangedListener);
+
     }

     public void init() {
@@ -97,6 +111,25 @@
     public JPanel getPanel() {
         return panel;
     }
+
+    /**
+     * Selects an object in the play pen that represents the subject of the
+     * currently selected criticism in the table.
+     */
+    private void selectSubjectInPlayPen() {
+        List<SQLObject> criticizedObjects = new ArrayList<SQLObject>();
+        for (int i : table.getSelectedRows()) {
+ Criticism criticism = session.getPlayPen().getCriticismBucket().getCriticisms().get(i);
+            if (criticism.getSubject() instanceof SQLObject) {
+                criticizedObjects.add((SQLObject) criticism.getSubject());
+            }
+        }
+        try {
+            session.getPlayPen().selectObjects(criticizedObjects);
+        } catch (SQLObjectException e) {
+            throw new RuntimeException(e);
+        }
+    }

     public void selectCriticisms(List<Criticism> selectMe) {
         table.clearSelection();

Reply via email to