Author: daceywang
Date: Fri Jan 30 15:31:16 2009
New Revision: 2936

Modified:
   trunk/src/ca/sqlpower/architect/swingui/BasicRelationshipUI.java
   trunk/src/ca/sqlpower/architect/swingui/Relationship.java
   trunk/src/ca/sqlpower/architect/swingui/RelationshipEditPanel.java

Log:
Fixed bug 1617.Now supports user to choose the color of the relationship lines. The color they choose is the color when the line is not selected.If selected, the color will be darker.

Modified: trunk/src/ca/sqlpower/architect/swingui/BasicRelationshipUI.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/BasicRelationshipUI.java (original) +++ trunk/src/ca/sqlpower/architect/swingui/BasicRelationshipUI.java Fri Jan 30 15:31:16 2009
@@ -68,8 +68,6 @@
         */
        protected transient GeneralPath containmentPath;

-       protected Color selectedColor = new Color(204, 204, 255);
-       protected Color unselectedColor = Color.black;
        protected BasicStroke nonIdStroke = new BasicStroke(1.0f);
        protected BasicStroke idStroke = new BasicStroke(1.0f);

@@ -250,10 +248,10 @@
                 path = new GeneralPath(containmentPath);
                        }
                        
-                       if (r.isSelected()) {
-                               g2.setColor(selectedColor);
+                       if (!r.isSelected()) {
+                               g2.setColor(r.getColor());
                        } else {
-                               g2.setColor(unselectedColor);
+                           g2.setColor(r.getColor().darker());
                        }

                        Stroke oldStroke = g2.getStroke();

Modified: trunk/src/ca/sqlpower/architect/swingui/Relationship.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/Relationship.java   (original)
+++ trunk/src/ca/sqlpower/architect/swingui/Relationship.java Fri Jan 30 15:31:16 2009
@@ -45,17 +45,21 @@
 import ca.sqlpower.architect.layout.LayoutNode;
 import ca.sqlpower.architect.swingui.PlayPen.MouseModeType;
 import ca.sqlpower.architect.swingui.event.SelectionEvent;
-import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObject;
 import ca.sqlpower.sqlobject.SQLObjectEvent;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectListener;
 import ca.sqlpower.sqlobject.SQLRelationship;
 import ca.sqlpower.sqlobject.SQLRelationship.ColumnMapping;
+import ca.sqlpower.util.WebColour;

public class Relationship extends PlayPenComponent implements SQLObjectListener, LayoutEdge {
        private static final Logger logger = 
Logger.getLogger(Relationship.class);

-       private SQLRelationship model;
+       //Set the default color for Relationship lines
+       private Color color = new WebColour("#cc0000");
+
+    private SQLRelationship model;
        private TablePane pkTable;
        private TablePane fkTable;

@@ -227,6 +231,14 @@
        }

        // -------------------- ACCESSORS AND MUTATORS ---------------------
+       
+       public Color getColor() {
+        return color;
+    }
+
+    public void setColor(Color color) {
+        this.color = color;
+    }

     public String getUIClassID() {
         return RelationshipUI.UI_CLASS_ID;

Modified: trunk/src/ca/sqlpower/architect/swingui/RelationshipEditPanel.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/RelationshipEditPanel.java (original) +++ trunk/src/ca/sqlpower/architect/swingui/RelationshipEditPanel.java Fri Jan 30 15:31:16 2009
@@ -18,7 +18,11 @@
  */
 package ca.sqlpower.architect.swingui;

+import java.awt.Color;
+import java.util.List;
+
 import javax.swing.ButtonGroup;
+import javax.swing.JComboBox;
 import javax.swing.JDialog;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
@@ -28,15 +32,17 @@
 import org.apache.log4j.Logger;

 import ca.sqlpower.architect.ArchitectSession;
-import ca.sqlpower.sqlobject.SQLObjectException;
-import ca.sqlpower.sqlobject.SQLObjectRuntimeException;
 import ca.sqlpower.sqlobject.SQLObject;
 import ca.sqlpower.sqlobject.SQLObjectEvent;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectListener;
+import ca.sqlpower.sqlobject.SQLObjectRuntimeException;
 import ca.sqlpower.sqlobject.SQLObjectUtils;
 import ca.sqlpower.sqlobject.SQLRelationship;
 import ca.sqlpower.sqlobject.SQLRelationship.Deferrability;
 import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
+import ca.sqlpower.swingui.ColorCellRenderer;
+import ca.sqlpower.swingui.ColourScheme;
 import ca.sqlpower.swingui.DataEntryPanel;

 import com.jgoodies.forms.builder.DefaultFormBuilder;
@@ -99,11 +105,28 @@
     private JRadioButton deleteSetNull;
     private JRadioButton deleteNoAction;
     private JRadioButton deleteSetDefault;
+
+    private JComboBox relationLineColor;

     private ArchitectSession session;

+    private Color color;
+
+    private List<Relationship> relationshipLines;
+
        public RelationshipEditPanel(ArchitectSwingSession session) {
-        this.session = session;
+           this.session = session;
+
+ relationshipLines = session.getPlayPen().getSelectedRelationShips(); + //Since now can only select one relationship to edit at the same time,
+        //so the length of relationships is only 1.
+        for(Relationship r: relationshipLines) {
+            if(logger.isDebugEnabled()) {
+                logger.debug("This relationship is : " + r);
+            }
+            this.color = r.getColor();
+        }
+
FormLayout layout = new FormLayout("pref, 4dlu, pref:grow, 4dlu, pref, 4dlu, pref:grow");
         layout.setColumnGroups(new int[][] { { 3, 7 } });
DefaultFormBuilder fb = new DefaultFormBuilder(layout, logger.isDebugEnabled() ? new FormDebugPanel() : new JPanel());
@@ -184,7 +207,14 @@
         updateRuleGroup.add(updateSetDefault);
         fb.append("", deleteSetDefault = new JRadioButton("Set Default"));
         deleteRuleGroup.add(deleteSetDefault);
-
+
+        fb.nextLine();
+
+ fb.append("Relationship Line Color", relationLineColor = new JComboBox(ColourScheme.FOREGROUND_COLOURS));
+        ColorCellRenderer renderer = new ColorCellRenderer(40, 20);
+        relationLineColor.setRenderer(renderer);
+
+        //TO-FIX,doesn't work!
         relationshipName.selectAll();

         fb.setDefaultDialogBorder();
@@ -252,6 +282,8 @@
         } else if (r.getDeleteRule() == UpdateDeleteRule.SET_NULL) {
             deleteSetNull.setSelected(true);
         }
+
+        relationLineColor.setSelectedItem(color);

                relationshipName.selectAll();
                
@@ -329,6 +361,11 @@
             } else if (deleteSetNull.isSelected()) {
                 relationship.setDeleteRule(UpdateDeleteRule.SET_NULL);
             }
+
+            for(Relationship r: relationshipLines) {
+                r.setColor((Color)relationLineColor.getSelectedItem());
+            }
+

                } finally {
                        relationship.endCompoundEdit("Modify Relationship 
Properties");

Reply via email to