Index: applications/editors/josm/plugins/graphview/build.xml
===================================================================
--- applications/editors/josm/plugins/graphview/build.xml	(revision 23433)
+++ applications/editors/josm/plugins/graphview/build.xml	(revision 23434)
@@ -27,6 +27,6 @@
 <project name="graphview" default="dist" basedir=".">
 
-	<property name="commit.message" value="prevent stack overflows; closes bug 4695 in JOSM Trac" />
-	<property name="plugin.main.version" value="3408" />
+	<property name="commit.message" value="option to change graph colors; closes ticket 5523 in JOSM Trac" />
+	<property name="plugin.main.version" value="3529" />
 
     <property name="josm"                   location="../../core/dist/josm-custom.jar"/>
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewPreferenceEditor.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewPreferenceEditor.java	(revision 23433)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewPreferenceEditor.java	(revision 23434)
@@ -1,6 +1,8 @@
 package org.openstreetmap.josm.plugins.graphview.plugin.dialogs;
 
+import java.awt.Color;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
+import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -15,4 +17,5 @@
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
 import javax.swing.JComboBox;
 import javax.swing.JFileChooser;
@@ -22,5 +25,4 @@
 import javax.swing.JTextField;
 
-import org.openstreetmap.josm.gui.preferences.PreferenceDialog;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
@@ -48,5 +50,9 @@
 
     private JCheckBox separateDirectionsCheckBox;
-
+    private JButton segmentColorButton;
+    private JPanel segmentColorField;
+    private JButton nodeColorButton;
+    private JPanel nodeColorField;
+    
     public void addGui(PreferenceTabbedPane gui) {
 
@@ -174,16 +180,43 @@
         return vehiclePanel;
     }
-
+    
     private JPanel createVisualizationPanel() {
-
-        JPanel visualizationPanel = new JPanel();
-        visualizationPanel.setBorder(BorderFactory.createTitledBorder("visualization"));
-        visualizationPanel.setLayout(new BoxLayout(visualizationPanel, BoxLayout.Y_AXIS));
-
-        separateDirectionsCheckBox = new JCheckBox("draw directions separately");
-        separateDirectionsCheckBox.setSelected(GraphViewPreferences.getInstance().getSeparateDirections());
-        visualizationPanel.add(separateDirectionsCheckBox);
-
-        return visualizationPanel;
+    	
+    	JPanel visualizationPanel = new JPanel();
+    	visualizationPanel.setBorder(BorderFactory.createTitledBorder("visualization"));
+    	visualizationPanel.setLayout(new BoxLayout(visualizationPanel, BoxLayout.Y_AXIS));
+    	
+    	separateDirectionsCheckBox = new JCheckBox("draw directions separately");
+    	separateDirectionsCheckBox.setSelected(GraphViewPreferences.getInstance().getSeparateDirections());
+    	visualizationPanel.add(separateDirectionsCheckBox);
+    	
+    	{ // create color chooser panel
+    		
+    		JPanel colorPanel = new JPanel();
+    		colorPanel.setLayout(new GridLayout(2, 2));
+    		
+    		Color nodeColor = GraphViewPreferences.getInstance().getNodeColor();
+    		
+    		nodeColorButton = new JButton("node color");
+    		nodeColorButton.addActionListener(chooseNodeColorActionListener);
+    		colorPanel.add(nodeColorButton);
+    		nodeColorField = new JPanel();
+    		nodeColorField.setBackground(nodeColor);
+    		colorPanel.add(nodeColorField);
+    		
+    		Color segmentColor = GraphViewPreferences.getInstance().getSegmentColor();
+    		
+    		segmentColorButton = new JButton("arrow color");
+    		segmentColorButton.addActionListener(chooseSegmentColorActionListener);
+    		colorPanel.add(segmentColorButton);
+    		segmentColorField = new JPanel();
+    		segmentColorField.setBackground(segmentColor);
+    		colorPanel.add(segmentColorField);
+    		
+    		visualizationPanel.add(colorPanel);
+    		
+    	}
+    	
+    	return visualizationPanel;
     }
 
@@ -202,4 +235,7 @@
         preferences.setSeparateDirections(separateDirectionsCheckBox.isSelected());
 
+        preferences.setNodeColor(nodeColorField.getBackground());
+        preferences.setSegmentColor(segmentColorField.getBackground());
+        
         preferences.distributeChanges();
 
@@ -333,4 +369,30 @@
         }
     };
+    
+    private final ActionListener chooseNodeColorActionListener = new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+        	
+        	Color selectedColor = JColorChooser.showDialog(
+        			preferencePanel, "Choose node color", nodeColorField.getBackground());
+        	
+        	if (selectedColor != null) {
+        		nodeColorField.setBackground(selectedColor);
+        	}
+        	
+        }
+    };
+    
+    private final ActionListener chooseSegmentColorActionListener = new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+        	
+        	Color selectedColor = JColorChooser.showDialog(
+        			preferencePanel, "Choose arrow color", segmentColorField.getBackground());
+        	
+        	if (selectedColor != null) {
+        		segmentColorField.setBackground(selectedColor);
+        	}
+        	
+        }
+    };
 
     private void updateRulesetPanel() {
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/layer/GraphViewLayer.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/layer/GraphViewLayer.java	(revision 23433)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/layer/GraphViewLayer.java	(revision 23434)
@@ -179,6 +179,7 @@
         } else {
 
-            g2D.setColor(Color.WHITE);
-
+        	Color color = GraphViewPreferences.getInstance().getSegmentColor();
+            g2D.setColor(color);
+            
             Point p1 = getNodePoint(e.getStartNode(), mv);
             Point p2 = getNodePoint(e.getTargetNode(), mv);
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/GraphViewPreferences.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/GraphViewPreferences.java	(revision 23433)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/GraphViewPreferences.java	(revision 23434)
@@ -36,4 +36,7 @@
  * changes will also be synchronized (two-way) with JOSM's preference storage.
  * This is a singleton class.
+ * 
+ * Note: Currently, manual updates in the "advanced preferences" will not have any effect
+ * because this class isn't registered as a preference listener.
  */
 public class GraphViewPreferences extends Observable {
