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();