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$