Revision: 3799
Author: [email protected]
Date: Wed Jul 28 11:27:41 2010
Log: Updated the look of the criticism panel.
-The objects being criticized has a qualified name so users can tell what
is being criticized easier.
-Icons are included with the object name to tell what type of object is
criticized.
http://code.google.com/p/power-architect/source/detail?r=3799
Modified:
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportDDLAction.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticSwingUtil.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismObjectRenderer.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismTableModel.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/QuickFixListCellRenderer.java
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportDDLAction.java
Wed Jul 14 08:59:53 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportDDLAction.java
Wed Jul 28 11:27:41 2010
@@ -125,6 +125,9 @@
explanation.setPreferredSize(new Dimension(0, 0));
builder.append(explanation);
+ builder.appendRow("10dlu");
+ builder.nextLine();
+
builder.appendRow("fill:pref:grow");
builder.nextLine();
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticSwingUtil.java
Wed Jul 14 07:10:07 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticSwingUtil.java
Wed Jul 28 11:27:41 2010
@@ -28,6 +28,7 @@
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JPopupMenu;
+import javax.swing.JTable;
import javax.swing.text.Document;
import ca.sqlpower.architect.ddl.critic.CriticismBucket;
@@ -92,6 +93,7 @@
final QuickFixListCellRenderer renderer = new
QuickFixListCellRenderer();
errorTable.setDefaultRenderer(List.class, renderer);
errorTable.setDefaultRenderer(Object.class, new
CriticismObjectRenderer());
+ errorTable.setAlignmentX(JTable.LEFT_ALIGNMENT);
//Sorts the objects by their name. This can be more fancy if we
desire in
//the future but works as a decent default for now.
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismObjectRenderer.java
Fri Jul 9 08:12:54 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismObjectRenderer.java
Wed Jul 28 11:27:41 2010
@@ -21,12 +21,19 @@
import java.awt.Component;
+import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
+import ca.sqlpower.architect.swingui.dbtree.DBTreeCellRenderer;
import ca.sqlpower.object.SPObject;
import ca.sqlpower.sql.JDBCDataSourceType;
+import ca.sqlpower.sqlobject.SQLColumn;
+import ca.sqlpower.sqlobject.SQLIndex;
import ca.sqlpower.sqlobject.SQLObject;
+import ca.sqlpower.sqlobject.SQLRelationship;
+import ca.sqlpower.sqlobject.SQLTable;
+import ca.sqlpower.sqlobject.SQLRelationship.SQLImportedKey;
/**
* Renderer for Objects displayed in the critic table.
@@ -36,7 +43,36 @@
@Override
public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus,
int row, int column) {
- return super.getTableCellRendererComponent(table,
getVisibleText(value), isSelected, hasFocus, row, column);
+ String visibleText = getVisibleText(value);
+ Component originalComponent =
super.getTableCellRendererComponent(table, visibleText,
+ isSelected, hasFocus, row, column);
+ JLabel label = new JLabel();
+ label.setFont(originalComponent.getFont());
+ label.setText(visibleText);
+ if (value instanceof SQLTable) {
+ label.setIcon(DBTreeCellRenderer.TABLE_ICON);
+ return label;
+ } else if (value instanceof SQLIndex) {
+ SQLIndex index = (SQLIndex) value;
+ if (index.isPrimaryKeyIndex()) {
+ label.setIcon(DBTreeCellRenderer.PK_ICON);
+ } else {
+ label.setIcon(DBTreeCellRenderer.INDEX_ICON);
+ }
+ label.setText(visibleText);
+ return label;
+ } else if (value instanceof SQLColumn) {
+ label.setIcon(DBTreeCellRenderer.COLUMN_ICON);
+ return label;
+ } else if (value instanceof SQLRelationship) {
+ label.setIcon(DBTreeCellRenderer.EXPORTED_KEY_ICON);
+ return label;
+ } else if (value instanceof SQLImportedKey) {
+ label.setIcon(DBTreeCellRenderer.IMPORTED_KEY_ICON);
+ return label;
+ } else {
+ return originalComponent;
+ }
}
/**
@@ -46,6 +82,48 @@
public static String getVisibleText(Object value) {
if (value == null) {
return "";
+ } else if (value instanceof SQLTable) {
+ return ((SQLTable) value).getName();
+ } else if (value instanceof SQLIndex) {
+ SQLIndex index = (SQLIndex) value;
+ StringBuffer text = new StringBuffer();
+ if (index.getParent() != null) {
+ text.append(index.getParent().getName() + ".");
+ } else {
+ text.append("(no parent).");
+ }
+ text.append(index.getName());
+ return text.toString();
+ } else if (value instanceof SQLColumn) {
+ SQLColumn sqlColumn = (SQLColumn) value;
+ StringBuffer text = new StringBuffer();
+ if (sqlColumn.getParent() != null) {
+ text.append(sqlColumn.getParent().getName() + ".");
+ } else {
+ text.append("(no parent).");
+ }
+ text.append(sqlColumn.getName());
+ return text.toString();
+ } else if (value instanceof SQLRelationship) {
+ SQLRelationship relation = (SQLRelationship) value;
+ StringBuffer text = new StringBuffer();
+ if (relation.getParent() != null) {
+ text.append(relation.getParent().getName() + ".");
+ } else {
+ text.append("(no parent).");
+ }
+ text.append(relation.getName());
+ return text.toString();
+ } else if (value instanceof SQLImportedKey) {
+ SQLRelationship relation = (SQLRelationship) value;
+ StringBuffer text = new StringBuffer();
+ if (relation.getParent() != null) {
+ text.append(relation.getParent().getName() + ".");
+ } else {
+ text.append("(no parent).");
+ }
+ text.append(relation.getName());
+ return text.toString();
} else if (value instanceof SQLObject) {
String name = ((SQLObject) value).getShortDisplayName();
if (name == null || name.trim().length() == 0) {
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismTableModel.java
Mon Jul 12 07:31:38 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismTableModel.java
Wed Jul 28 11:27:41 2010
@@ -23,7 +23,6 @@
import javax.swing.table.AbstractTableModel;
-import ca.sqlpower.architect.ArchitectUtils;
import ca.sqlpower.architect.ddl.critic.CriticAndSettings;
import ca.sqlpower.architect.ddl.critic.Criticism;
import ca.sqlpower.architect.ddl.critic.CriticismBucket;
@@ -58,7 +57,7 @@
}
public int getColumnCount() {
- return 6;
+ return 5;
}
@Override
@@ -66,10 +65,8 @@
if (column == 1) {
return "Object";
} else if (column == 2) {
- return "Object Type";
- } else if (column == 3) {
return "Critic Type";
- } else if (column == 4) {
+ } else if (column == 3) {
return "Description";
} else {
return null;
@@ -87,8 +84,6 @@
} else if (columnIndex == 3) {
return String.class;
} else if (columnIndex == 4) {
- return String.class;
- } else if (columnIndex == 5) {
return List.class;
} else {
return null;
@@ -109,15 +104,13 @@
} else if (columnIndex == 1) {
return rowVal.getSubject();
} else if (columnIndex == 2) {
- return
ArchitectUtils.convertClassToString(rowVal.getSubject().getClass());
- } else if (columnIndex == 3) {
//All critics in Architect are currently CriticAndSettings
objects
//In the future we may want to look up the settings in the
critic
//manager but since we already have the object that would be
overkill.
return ((CriticAndSettings)
rowVal.getCritic()).getPlatformType();
- } else if (columnIndex == 4) {
+ } else if (columnIndex == 3) {
return rowVal.getDescription();
- } else if (columnIndex == 5) {
+ } else if (columnIndex == 4) {
return rowVal.getFixes();
} else {
throw new IllegalArgumentException(
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/QuickFixListCellRenderer.java
Wed Jul 28 09:17:42 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/QuickFixListCellRenderer.java
Wed Jul 28 11:27:41 2010
@@ -49,16 +49,21 @@
@Override
public Component getTableCellRendererComponent(JTable table, final
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
+ Component originalComponent =
super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column);
if (value instanceof List<?>) {
if (((List<?>) value).isEmpty()) {
- return new JLabel(NO_QUICK_FIX_IMAGE);
+ JLabel label = new JLabel();
+ label.setIcon(NO_QUICK_FIX_IMAGE);
+ return label;
} else {
- JLabel label = new JLabel(QUICK_FIX_IMAGE);
+ JLabel label = new JLabel();
+ label.setIcon(QUICK_FIX_IMAGE);
label.setText("Fix");
+ label.setFont(originalComponent.getFont());
return label;
}
} else {
- return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
+ return originalComponent;
}
}