Revision: 3670
Author: [email protected]
Date: Mon Jul  5 12:39:21 2010
Log: NEW - bug 2458: Create Critic Manager
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2458

Moved the CriticPanel to the Enterprise Edition. This further separates the critics between the community and enterprise versions.
http://code.google.com/p/power-architect/source/detail?r=3670

Deleted:
 /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticPanel.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticizeAction.java
Modified:
 /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java
 /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java
 /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPenComponent.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/RelationalPlayPenFactory.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticPanel.java Mon Jul 5 08:38:08 2010
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 2010, SQL Power Group Inc.
- *
- * This file is part of SQL Power Architect.
- *
- * SQL Power Architect is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * SQL Power Architect is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-package ca.sqlpower.architect.swingui.critic;
-
-import java.awt.BorderLayout;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-import ca.sqlpower.architect.ddl.critic.Criticism;
-import ca.sqlpower.architect.swingui.ArchitectSwingSession;
-import ca.sqlpower.sqlobject.SQLObject;
-import ca.sqlpower.sqlobject.SQLObjectException;
-import ca.sqlpower.swingui.SPSUtils;
-import ca.sqlpower.swingui.table.FancyExportableJTable;
-
-import com.jgoodies.forms.builder.ButtonBarBuilder;
-import com.jgoodies.forms.builder.DefaultFormBuilder;
-import com.jgoodies.forms.layout.FormLayout;
-
-/**
- * This panel can be placed somewhere on the main Architect frame to display all
- * of the currently known errors in the play pen based on enabled critics.
- */
-public class CriticPanel {
-
-    /**
- * Icon that sits beside the search field so users know what the field is
-     * meant for.
-     */
- public static final ImageIcon SEARCH_ICON = SPSUtils.createIcon("magnifier", "search icon");
-
-    /**
-     * The main panel of the critics window.
-     */
-    private JPanel panel;
-
-    private final ArchitectSwingSession session;
-
-    private final FancyExportableJTable table;
-
-    /**
- * A field that users can enter some kind of text to limit the displayed
-     * criticisms.
-     */
-    private final JTextField searchField;
-
- private final ListSelectionListener selectedObjectsChangedListener = new ListSelectionListener() {
-
-        public void valueChanged(ListSelectionEvent e) {
-            selectSubjectInPlayPen();
-        }
-    };
-
-    public CriticPanel(ArchitectSwingSession session) {
-        this.session = session;
-
-        searchField = new JTextField();
- table = CriticSwingUtil.createCriticTable(session, session.getPlayPen().getCriticismBucket(),
-                searchField.getDocument());
-        panel = new JPanel(new BorderLayout());
-        panel.add(new JScrollPane(table), BorderLayout.CENTER);
- table.getSelectionModel().addListSelectionListener(selectedObjectsChangedListener);
-    }
-
-    public void init() {
-        ButtonBarBuilder buttonBar = new ButtonBarBuilder();
-        buttonBar.addGridded(new JButton(new CriticizeAction(session)));
-
-        DefaultFormBuilder northBuilder = new DefaultFormBuilder(
-                new FormLayout("pref:grow, 5dlu, pref, 2dlu, pref:grow"));
-        northBuilder.append(buttonBar.getPanel());
-        northBuilder.append(new JLabel(SEARCH_ICON));
-        northBuilder.append(searchField);
-
-        panel.add(northBuilder.getPanel(), BorderLayout.NORTH);
-    }
-
-    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();
-        for (Criticism criticism : selectMe) {
- int index = session.getPlayPen().getCriticismBucket().getCriticisms().indexOf(criticism);
-            table.changeSelection(index, index, true, false);
-        }
-    }
-
-    /**
- * Returns the table that makes up the main part of this panel. This table - * will display all of the critics known to the system from the last time
-     * the critics were run.
-     */
-    public JTable getTable() {
-        return table;
-    }
-}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticizeAction.java Wed Jun 9 11:52:17 2010
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2009, SQL Power Group Inc.
- *
- * This file is part of Power*Architect.
- *
- * Power*Architect is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Power*Architect is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-package ca.sqlpower.architect.swingui.critic;
-
-import java.awt.event.ActionEvent;
-import java.util.List;
-
-import javax.swing.Icon;
-
-import ca.sqlpower.architect.ddl.critic.Criticism;
-import ca.sqlpower.architect.swingui.ArchitectSwingSession;
-import ca.sqlpower.architect.swingui.Messages;
-import ca.sqlpower.architect.swingui.action.AbstractArchitectAction;
-import ca.sqlpower.swingui.SPSUtils;
-
-/**
- * Proof-of-concept action that criticizes a whole SQLObject tree and pops up - * a window with the results. This will be replaced by a system that does criticisms
- * "in the background" on a more continual basis.
- */
-public class CriticizeAction extends AbstractArchitectAction {
-
- public static final Icon CRITIC_ICON = SPSUtils.createIcon("critic", Messages.getString("CriticizeAction.description"));
-
-    public CriticizeAction(ArchitectSwingSession session) {
- super(session, Messages.getString("CriticizeAction.name"), Messages.getString("CriticizeAction.description"), CRITIC_ICON);
-    }
-
-    public void actionPerformed(ActionEvent e) {
-        criticize();
-    }
-
-    /**
-     * Call to do a full critique of the given session's play pen.
-     */
-    public void criticize() {
- List<Criticism> criticisms = session.getWorkspace().getCriticManager().criticize(
-                session.getTargetDatabase());
-        session.getArchitectFrame().updateCriticPanel(criticisms);
-    }
-
-}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java Fri Jun 25 11:32:00 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java Mon Jul 5 12:39:21 2010
@@ -55,7 +55,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
-import javax.swing.JToggleButton;
 import javax.swing.JToolBar;
 import javax.swing.KeyStroke;
 import javax.swing.SwingUtilities;
@@ -70,7 +69,6 @@
 import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.CoreUserSettings;
 import ca.sqlpower.architect.UserSettings;
-import ca.sqlpower.architect.ddl.critic.Criticism;
 import ca.sqlpower.architect.enterprise.ArchitectClientSideSession;
 import ca.sqlpower.architect.enterprise.ProjectLocation;
 import ca.sqlpower.architect.layout.ArchitectLayout;
@@ -124,8 +122,6 @@
 import ca.sqlpower.architect.swingui.action.ZoomToFitAction;
import ca.sqlpower.architect.swingui.action.enterprise.RefreshProjectAction;
 import ca.sqlpower.architect.swingui.critic.CriticManagerPanel;
-import ca.sqlpower.architect.swingui.critic.CriticPanel;
-import ca.sqlpower.architect.swingui.critic.CriticizeAction;
 import ca.sqlpower.architect.swingui.enterprise.ProjectSecurityPanel;
 import ca.sqlpower.architect.swingui.enterprise.RevisionListPanel;
 import ca.sqlpower.architect.swingui.enterprise.SecurityPanel;
@@ -144,7 +140,6 @@
import ca.sqlpower.swingui.SwingUIUserPrompterFactory.NonModalSwingUIUserPrompterFactory;
 import ca.sqlpower.swingui.action.OpenUrlAction;
 import ca.sqlpower.swingui.enterprise.client.SPServerInfoManagerPanel;
-import ca.sqlpower.swingui.table.TableUtils;
 import ca.sqlpower.util.UserPrompterFactory;

 /**
@@ -412,27 +407,6 @@
         }
     };

-    /**
-     * The panel to display criticisms about the play pen on.
-     */
-    private final CriticPanel criticPanel;
-
-    /**
-     * This button allows users to toggle the critic panel's visibility.
-     */
- private final JToggleButton criticPanelToggleButton = new JToggleButton(
-            new AbstractAction("", CriticizeAction.CRITIC_ICON) {
-
-        public void actionPerformed(ActionEvent e) {
-            if (criticPanelToggleButton.isSelected()) {
-                new CriticizeAction(session).criticize();
-                criticPanel.getPanel().setVisible(true);
-            } else {
-                criticPanel.getPanel().setVisible(false);
-            }
-        }
-    });
-
     /**
      * This constructor is used by the session implementation. To obtain an
      * Architect Frame, you have to create an
@@ -464,14 +438,8 @@
         splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setLeftComponent(new JScrollPane(SPSUtils.getBrandedTreePanel(dbTree)));
         playpenScrollPane = new JScrollPane(playpen);
-        rightPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
-        rightPanel.setTopComponent(playpenScrollPane);
-        criticPanel = new CriticPanel(session);
-        rightPanel.setBottomComponent(criticPanel.getPanel());
-        criticPanel.getPanel().setVisible(false);
-        criticPanelToggleButton.setSelected(false);
-
-        splitPane.setRightComponent(rightPanel);
+        splitPane.setRightComponent(playpenScrollPane);
+
         playpen.setInitialViewPosition();

         final Preferences prefs = context.getPrefs();
@@ -694,7 +662,6 @@
         projectBar.addSeparator();
         projectBar.add(autoLayoutAction);
         projectBar.add(profileAction);
-        projectBar.add(criticPanelToggleButton);
projectBar.setToolTipText(Messages.getString("ArchitectFrame.projectToolbarToolTip")); //$NON-NLS-1$ projectBar.setName(Messages.getString("ArchitectFrame.projectToolbarName")); //$NON-NLS-1$

@@ -745,8 +712,6 @@

         cp.add(splitPane, BorderLayout.CENTER);
         logger.debug("Added splitpane to content pane"); //$NON-NLS-1$
-
-        criticPanel.init();
     }

     public JMenuBar createNewMenuBar() {
@@ -971,11 +936,6 @@

     private JMenu enterpriseMenu;

-    /**
-     * The split pane that is the right side of the main ArchitectFrame.
-     */
-    private JSplitPane rightPanel;
-
     public JMenu getEnterpriseMenu() {
         return enterpriseMenu;
     }
@@ -1289,23 +1249,18 @@
     }

     /**
-     * Updates the critic panel to use the criticisms.
-     * Will also display the critic panel if it is not visible.
+ * Returns the main split pane in the frame. The left panel will be the tree
+     * and the right panel will be the current model editor.
      */
-    public void updateCriticPanel(List<Criticism> criticisms) {
-        playpen.getCriticismBucket().updateCriticismsToMatch(criticisms);
-        criticPanel.getPanel().setVisible(true);
-        final double screenHeight = splitPane.getHeight();
- double viewHeight = Math.min(criticPanel.getPanel().getPreferredSize().getHeight(),
-                screenHeight / 3);
-        rightPanel.setDividerLocation((int) (screenHeight - viewHeight));
-        criticPanelToggleButton.setSelected(true);
-
-        TableUtils.fitColumnWidths(criticPanel.getTable(), 15);
+    public JSplitPane getSplitPane() {
+        return splitPane;
     }

-    public CriticPanel getCriticPanel() {
-        return criticPanel;
+    /**
+     * Returns the top tool bar in the frame.
+     */
+    public JToolBar getProjectBar() {
+        return projectBar;
     }

 }
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java Fri Jun 11 09:19:49 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java Mon Jul 5 12:39:21 2010
@@ -92,7 +92,6 @@
 import org.apache.log4j.Logger;

 import ca.sqlpower.architect.ArchitectUtils;
-import ca.sqlpower.architect.ddl.critic.CriticismBucket;
 import ca.sqlpower.architect.olap.MondrianModel;
 import ca.sqlpower.architect.olap.OLAPObject;
 import ca.sqlpower.architect.olap.MondrianModel.Cube;
@@ -605,13 +604,6 @@
         */
        private boolean ignoreTreeSelection = false;

-    /**
- * The {...@link CriticismBucket} that stays around for the life of the panel. - * The criticisms in the panel can be updated in this bucket to be valid
-     * criticisms of the current project.
-     */
-    private final CriticismBucket criticismBucket = new CriticismBucket();
-
        public PlayPen(ArchitectSwingSession session) {
            this(session, session.getTargetDatabase());
        }
@@ -3447,8 +3439,4 @@
         }
     }

-    public CriticismBucket getCriticismBucket() {
-        return criticismBucket;
-    }
-
-}
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPenComponent.java Fri Jun 11 09:19:49 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPenComponent.java Mon Jul 5 12:39:21 2010
@@ -41,7 +41,6 @@
 import org.apache.log4j.Logger;

 import ca.sqlpower.architect.ArchitectUtils;
-import ca.sqlpower.architect.ddl.critic.Criticism;
 import ca.sqlpower.architect.enterprise.NetworkConflictResolver;
import ca.sqlpower.architect.enterprise.NetworkConflictResolver.UpdateListener;
 import ca.sqlpower.architect.swingui.event.SelectionEvent;
@@ -729,14 +728,6 @@
         //by default do nothing.
     }

-    /**
- * Collects a list of criticisms on the model object that this component is
-     * displaying.
-     */
-    public List<Criticism> findCriticisms() {
- return getPlayPen().getCriticismBucket().getCriticismsByObject(getModel());
-    }
-
     /**
      * Returns a point on the UI object that is most reasonable to attach
* additional text or objects to for the given model object or a part of the
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/RelationalPlayPenFactory.java Fri May 21 11:25:56 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/RelationalPlayPenFactory.java Mon Jul 5 12:39:21 2010
@@ -49,7 +49,6 @@

 import ca.sqlpower.architect.layout.LineStraightenerLayout;
 import ca.sqlpower.architect.swingui.action.AutoLayoutAction;
-import ca.sqlpower.architect.swingui.critic.CriticizeAction;
 import ca.sqlpower.architect.swingui.event.ItemSelectionEvent;
 import ca.sqlpower.architect.swingui.event.ItemSelectionListener;
 import ca.sqlpower.architect.swingui.event.SelectionEvent;
@@ -119,8 +118,6 @@
             mi.setAction(layoutAction);
             menu.add(mi);

-            menu.add(new CriticizeAction(session));
-
             if (pp.isDebugEnabled()) {
                 menu.addSeparator();
                 mi = new JMenuItem("Show Relationships"); //$NON-NLS-1$

Reply via email to