cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ntimof...@apache.org
Subject [2/5] cayenne git commit: Global Modeler update and bug fixing. Major changes: - CAY-2300 New icons and design improvements - alert istead of silent fail for edit relationship without target - closes #206 CAY-2287 - closes #209 inheritance icon allow
Date Wed, 10 May 2017 14:17:39 GMT
http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/event/ListenerClassSelectionListener.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/event/ListenerClassSelectionListener.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/event/ListenerClassSelectionListener.java
deleted file mode 100644
index 0eb6c4b..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/event/ListenerClassSelectionListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.modeler.event;
-
-import java.util.EventListener;
-
-
-/**
- * Listener for listener class selection
- *
- * @version 1.0 Oct 28, 2007
- */
-public interface ListenerClassSelectionListener extends EventListener {
-    /**
-     * listener class selection changed
-     * @param e event
-     */
-    public void listenerClassSelected(ListenerClassSelectionEvent e);
-}
-

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java
index ab1e24e..1b74906 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java
@@ -158,13 +158,13 @@ abstract class BaseGraphBuilder implements GraphBuilder, DataMapListener {
         createdObjects = new ArrayList<>();
         relCells = new HashMap<>();
 
-        /**
+        /*
          * an array for entities that are not connected to anyone. We add them
          * separately so that layout doesn't touch them
          */
         List<DefaultGraphCell> isolatedObjects = new ArrayList<DefaultGraphCell>();
 
-        /**
+        /*
          * 1. Add all entities
          */
         for (DataMap map : domain.getDataMaps()) {
@@ -183,7 +183,7 @@ abstract class BaseGraphBuilder implements GraphBuilder, DataMapListener {
             }
         }
 
-        /**
+        /*
          * 2. Add all relationships
          */
         for (DataMap map : domain.getDataMaps()) {
@@ -205,8 +205,12 @@ abstract class BaseGraphBuilder implements GraphBuilder, DataMapListener {
             layout.setOptimizeBorderLine(false);
             layout.setOptimizeEdgeDistance(false);
 
-            // JGraphSimpleLayout layout = new
-            // JGraphSimpleLayout(JGraphSimpleLayout.TYPE_TILT, 4000, 2000);
+            // JGraphHierarchicalLayout layout = new JGraphHierarchicalLayout();
+            // layout.setInterHierarchySpacing(150.0);
+            // layout.setIntraCellSpacing(150.0);
+            // layout.setInterRankCellSpacing(150.0);
+
+            // JGraphSimpleLayout layout = new JGraphSimpleLayout(JGraphSimpleLayout.TYPE_TILT, 4000, 2000);
             layout.run(facade);
             Map nested = facade.createNestedMap(true, true); // Obtain a map of
                                                              // the
@@ -218,7 +222,7 @@ abstract class BaseGraphBuilder implements GraphBuilder, DataMapListener {
             edit(nested); // Apply the results to the actual graph
         }
 
-        /**
+        /*
          * Adding isolated objects
          * 
          * We're placing them so that they will take maximum space in left top
@@ -465,10 +469,6 @@ abstract class BaseGraphBuilder implements GraphBuilder, DataMapListener {
 
     /**
      * Updates relationship labels for specified relationship edge.
-     * 
-     * @param order
-     *            order of relationship in entity's same target relationships -
-     *            to differ labels of relationships with same source and target
      */
     protected void updateRelationshipLabels(DefaultEdge edge, Relationship rel, Relationship reverse) {
         DefaultGraphCell sourceCell = entityCells.get(rel.getSourceEntity().getName());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java
index 0ae927b..51e9148 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DataDomainGraphTab.java
@@ -94,7 +94,8 @@ public class DataDomainGraphTab extends JPanel implements DomainDisplayListener,
 
         setLayout(new BorderLayout());
         JToolBar toolbar = new JToolBar();
-        toolbar.setLayout(new FlowLayout(FlowLayout.LEFT, 1, 1));
+        toolbar.setFloatable(false);
+        toolbar.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
 
         GraphType[] types = GraphType.values();
         String[] names = new String[types.length];
@@ -105,11 +106,11 @@ public class DataDomainGraphTab extends JPanel implements DomainDisplayListener,
         diagramCombo = Application.getWidgetFactory().createComboBox(names, false);
         diagramCombo.addItemListener(this);
 
-        toolbar.add(new RebuildGraphAction(this, Application.getInstance()).buildButton());
-        toolbar.add(new SaveAsImageAction(this, Application.getInstance()).buildButton());
+        toolbar.add(new RebuildGraphAction(this, Application.getInstance()).buildButton(1));
+        toolbar.add(new SaveAsImageAction(this, Application.getInstance()).buildButton(3));
         toolbar.addSeparator();
-        toolbar.add(new ZoomInAction(this, Application.getInstance()).buildButton());
-        toolbar.add(new ZoomOutAction(this, Application.getInstance()).buildButton());
+        toolbar.add(new ZoomInAction(this, Application.getInstance()).buildButton(1));
+        toolbar.add(new ZoomOutAction(this, Application.getInstance()).buildButton(3));
 
         toolbar.addSeparator();
         toolbar.add(new JLabel("Diagram: "));

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/TableColumnPreferences.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/TableColumnPreferences.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/TableColumnPreferences.java
index 81fc4cd..0285acf 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/TableColumnPreferences.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/TableColumnPreferences.java
@@ -44,6 +44,7 @@ public class TableColumnPreferences extends CayennePreference {
     private int columnCount;
     private int defaultSortColumn;
     private boolean defaultSortOrder;
+    private int[] currentWidth;
 
     private TableColumnModelListener listener = new TableColumnModelListener() {
 
@@ -51,7 +52,7 @@ public class TableColumnPreferences extends CayennePreference {
         }
 
         public void columnMarginChanged(ChangeEvent e) {
-            TableColumn column = null;
+            TableColumn column;
             for (int i = 0; i < columnCount; i++) {
                 column = table.getColumnModel().getColumn(i);
                 setWidth(column.getModelIndex(), column.getPreferredWidth());
@@ -127,8 +128,9 @@ public class TableColumnPreferences extends CayennePreference {
             Map<Integer, Integer> defaultSizes) {
 
         this.table = table;
-       
         this.columnCount = table.getColumnCount();
+        this.currentWidth = new int[columnCount];
+
         table.getColumnModel().removeColumnModelListener(listener);
         updateTable(minSizes, maxSizes, defaultSizes);
         table.getColumnModel().addColumnModelListener(listener);
@@ -175,7 +177,7 @@ public class TableColumnPreferences extends CayennePreference {
     }
 
     private void updateOrder() {
-        TableColumn column = null;
+        TableColumn column;
         TableColumnModel columnModel = table.getColumnModel();
         TableModel model = table.getModel();
         String columnName = "";
@@ -197,11 +199,17 @@ public class TableColumnPreferences extends CayennePreference {
     }
 
     private int getWidth(int index, int defaultWidth) {
-        return getPreference().getInt(WIDTH_KEY + Integer.toString(index), defaultWidth);
+        if(currentWidth[index] == 0) {
+            currentWidth[index] = getPreference().getInt(WIDTH_KEY + Integer.toString(index), defaultWidth);
+        }
+        return currentWidth[index];
     }
 
     private void setWidth(int index, int width) {
-        getPreference().putInt(WIDTH_KEY + Integer.toString(index), width);
+        if(currentWidth[index] != width) {
+            getPreference().putInt(WIDTH_KEY + Integer.toString(index), width);
+            currentWidth[index] = width;
+        }
     }
 
     private int getOrderIndex(int columnIndex, int defaultOrderIndex) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BevelArrowIcon.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BevelArrowIcon.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BevelArrowIcon.java
deleted file mode 100644
index 4dc0631..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BevelArrowIcon.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.modeler.util;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-
-import javax.swing.Icon;
-import javax.swing.UIManager;
-
-public class BevelArrowIcon implements Icon {
-
-    public static final int UP = 0; // direction
-    public static final int DOWN = 1;
-
-    private static final int DEFAULT_SIZE = 11;
-
-    private Color edge1;
-    private Color edge2;
-    private Color fill;
-    private int size;
-    private int direction;
-
-    public BevelArrowIcon(int direction, boolean isRaisedView, boolean isPressedView) {
-        if (isRaisedView) {
-            if (isPressedView) {
-                init(
-                        UIManager.getColor("controlLtHighlight"),
-                        UIManager.getColor("controlDkShadow"),
-                        UIManager.getColor("controlShadow"),
-                        DEFAULT_SIZE,
-                        direction);
-            }
-            else {
-                init(
-                        UIManager.getColor("controlHighlight"),
-                        UIManager.getColor("controlShadow"),
-                        UIManager.getColor("control"),
-                        DEFAULT_SIZE,
-                        direction);
-            }
-        }
-        else {
-            if (isPressedView) {
-                init(UIManager.getColor("controlDkShadow"), UIManager
-                        .getColor("controlLtHighlight"), UIManager
-                        .getColor("controlShadow"), DEFAULT_SIZE, direction);
-            }
-            else {
-                init(
-                        UIManager.getColor("controlShadow"),
-                        UIManager.getColor("controlHighlight"),
-                        UIManager.getColor("control"),
-                        DEFAULT_SIZE,
-                        direction);
-            }
-        }
-    }
-
-    public BevelArrowIcon(Color edge1, Color edge2, Color fill, int size, int direction) {
-        init(edge1, edge2, fill, size, direction);
-    }
-
-    public void paintIcon(Component c, Graphics g, int x, int y) {
-        switch (direction) {
-            case DOWN:
-                drawDownArrow(g, x, y);
-                break;
-            case UP:
-                drawUpArrow(g, x, y);
-                break;
-        }
-    }
-
-    public int getIconWidth() {
-        return size;
-    }
-
-    public int getIconHeight() {
-        return size;
-    }
-
-    private void init(Color edge1, Color edge2, Color fill, int size, int direction) {
-        this.edge1 = edge1;
-        this.edge2 = edge2;
-        this.fill = fill;
-        this.size = size;
-        this.direction = direction;
-    }
-
-    private void drawDownArrow(Graphics g, int xo, int yo) {
-        g.setColor(edge1);
-        g.drawLine(xo, yo, xo + size - 1, yo);
-        g.drawLine(xo, yo + 1, xo + size - 3, yo + 1);
-        g.setColor(edge2);
-        g.drawLine(xo + size - 2, yo + 1, xo + size - 1, yo + 1);
-        int x = xo + 1;
-        int y = yo + 2;
-        int dx = size - 6;
-        while (y + 1 < yo + size) {
-            g.setColor(edge1);
-            g.drawLine(x, y, x + 1, y);
-            g.drawLine(x, y + 1, x + 1, y + 1);
-            if (0 < dx) {
-                g.setColor(fill);
-                g.drawLine(x + 2, y, x + 1 + dx, y);
-                g.drawLine(x + 2, y + 1, x + 1 + dx, y + 1);
-            }
-            g.setColor(edge2);
-            g.drawLine(x + dx + 2, y, x + dx + 3, y);
-            g.drawLine(x + dx + 2, y + 1, x + dx + 3, y + 1);
-            x += 1;
-            y += 2;
-            dx -= 2;
-        }
-        g.setColor(edge1);
-        g.drawLine(xo + (size / 2), yo + size - 1, xo + (size / 2), yo + size - 1);
-    }
-
-    private void drawUpArrow(Graphics g, int xo, int yo) {
-        g.setColor(edge1);
-        int x = xo + (size / 2);
-        g.drawLine(x, yo, x, yo);
-        x--;
-        int y = yo + 1;
-        int dx = 0;
-        while (y + 3 < yo + size) {
-            g.setColor(edge1);
-            g.drawLine(x, y, x + 1, y);
-            g.drawLine(x, y + 1, x + 1, y + 1);
-            if (0 < dx) {
-                g.setColor(fill);
-                g.drawLine(x + 2, y, x + 1 + dx, y);
-                g.drawLine(x + 2, y + 1, x + 1 + dx, y + 1);
-            }
-            g.setColor(edge2);
-            g.drawLine(x + dx + 2, y, x + dx + 3, y);
-            g.drawLine(x + dx + 2, y + 1, x + dx + 3, y + 1);
-            x -= 1;
-            y += 2;
-            dx += 2;
-        }
-        g.setColor(edge1);
-        g.drawLine(xo, yo + size - 3, xo + 1, yo + size - 3);
-        g.setColor(edge2);
-        g.drawLine(xo + 2, yo + size - 2, xo + size - 1, yo + size - 2);
-        g.drawLine(xo, yo + size - 1, xo + size, yo + size - 1);
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BoardTableCellRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BoardTableCellRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BoardTableCellRenderer.java
index 231f089..f290b96 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BoardTableCellRenderer.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BoardTableCellRenderer.java
@@ -21,14 +21,17 @@ package org.apache.cayenne.modeler.util;
 
 import javax.swing.BorderFactory;
 import javax.swing.JTable;
+import javax.swing.UIManager;
 import javax.swing.table.DefaultTableCellRenderer;
 import java.awt.Component;
+import java.awt.Font;
 
 public class BoardTableCellRenderer extends DefaultTableCellRenderer {
 
     public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
         super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
         setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
+        setFont(UIManager.getFont("Label.font"));
         return this;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
index cad01b3..e6a2efe 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
@@ -35,6 +35,7 @@ import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
 import org.apache.cayenne.project.Project;
+import org.apache.cayenne.swing.components.image.FilteredIconFactory;
 import org.apache.cayenne.util.Util;
 
 /**
@@ -184,7 +185,11 @@ public abstract class CayenneAction extends AbstractAction {
      * Factory method that creates a button hooked up to this action.
      */
     public JButton buildButton() {
-        return new CayenneToolbarButton(this);
+        return new CayenneToolbarButton(this, 0);
+    }
+
+    public JButton buildButton(int position) {
+        return new CayenneToolbarButton(this, position);
     }
 
     /**
@@ -222,16 +227,27 @@ public abstract class CayenneAction extends AbstractAction {
     /**
      * On changes in action text, will update toolbar tip instead.
      */
-    final class CayenneToolbarButton extends JButton {
+    public static final class CayenneToolbarButton extends JButton {
+
+        static private final String[] POSITIONS = {"only", "first", "middle", "last"};
 
         protected boolean showingText;
 
         /**
          * Constructor for CayenneMenuItem.
          */
-        public CayenneToolbarButton(Action a) {
+        public CayenneToolbarButton(Action a, int position) {
             super();
             setAction(a);
+            initView(position);
+        }
+
+        private void initView(int position) {
+            setDisabledIcon(FilteredIconFactory.createDisabledIcon(getIcon()));
+            setFocusPainted(false);
+            setFocusable(false);
+            putClientProperty("JButton.buttonType", "segmentedTextured");
+            putClientProperty("JButton.segmentPosition", POSITIONS[position]);
         }
 
         /**
@@ -263,8 +279,7 @@ public abstract class CayenneAction extends AbstractAction {
         public void setText(String text) {
             if (showingText) {
                 super.setText(text);
-            }
-            else {
+            } else {
                 super.setToolTipText(text);
             }
         }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java
index b73026f..53ed7e4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java
@@ -252,4 +252,11 @@ public class CayenneTable extends JTable {
     public void setColumnWidthChanged(boolean widthChanged) {
         isColumnWidthChanged = widthChanged;
     }
+
+    /**
+     * @since 4.0
+     */
+    public void setSortable(boolean sortable) {
+        renderer.setSortingEnabled(sortable);
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
index 889984d..58cebac 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
@@ -20,13 +20,15 @@
 package org.apache.cayenne.modeler.util;
 
 import java.awt.Component;
+import java.awt.Font;
 
 import javax.swing.DefaultListCellRenderer;
-import javax.swing.ImageIcon;
+import javax.swing.Icon;
 import javax.swing.JList;
 import javax.swing.JTable;
 import javax.swing.JTree;
 import javax.swing.ListCellRenderer;
+import javax.swing.UIManager;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableCellRenderer;
 import javax.swing.tree.DefaultMutableTreeNode;
@@ -37,6 +39,7 @@ import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.Attribute;
 import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.Embeddable;
 import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.MappingNamespace;
@@ -46,6 +49,7 @@ import org.apache.cayenne.map.QueryDescriptor;
 import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.swing.components.image.FilteredIconFactory;
 import org.apache.cayenne.util.CayenneMapEntry;
 
 /**
@@ -56,68 +60,52 @@ import org.apache.cayenne.util.CayenneMapEntry;
 public final class CellRenderers {
 
     // common icons
-    protected static ImageIcon domainIcon;
-    protected static ImageIcon nodeIcon;
-    protected static ImageIcon mapIcon;
-    protected static ImageIcon dbEntityIcon;
-    protected static ImageIcon objEntityIcon;
-    protected static ImageIcon relationshipIcon;
-    protected static ImageIcon attributeIcon;
-    protected static ImageIcon procedureIcon;
-    protected static ImageIcon queryIcon;
-    protected static ImageIcon embeddableIcon;
-    protected static ImageIcon catalogIcon;
-
-    static {
-        domainIcon = ModelerUtil.buildIcon("icon-dom.gif");
-        nodeIcon = ModelerUtil.buildIcon("icon-node.gif");
-        mapIcon = ModelerUtil.buildIcon("icon-datamap.gif");
-        dbEntityIcon = ModelerUtil.buildIcon("icon-dbentity.gif");
-        objEntityIcon = ModelerUtil.buildIcon("icon-objentity.gif");
-        procedureIcon = ModelerUtil.buildIcon("icon-stored-procedure.gif");
-        queryIcon = ModelerUtil.buildIcon("icon-query.gif");
-        relationshipIcon = ModelerUtil.buildIcon("icon-relationship.gif");
-        attributeIcon = ModelerUtil.buildIcon("icon-attribute.gif");
-        embeddableIcon = ModelerUtil.buildIcon("icon-embeddable.gif");
-        catalogIcon = ModelerUtil.buildIcon("icon-open.gif");
-    }
-
-    public static ImageIcon iconForObject(Object object) {
+    protected static Icon domainIcon       = FilteredIconFactory.createIcon(
+            ModelerUtil.buildIcon("icon-dom.png"), FilteredIconFactory.FilterType.GRAY);
+    protected static Icon nodeIcon         = FilteredIconFactory.createIcon(
+            ModelerUtil.buildIcon("icon-node.png"), FilteredIconFactory.FilterType.GRAY);
+    protected static Icon mapIcon          = FilteredIconFactory.createIcon(
+            ModelerUtil.buildIcon("icon-datamap.png"), FilteredIconFactory.FilterType.GRAY);
+    protected static Icon dbEntityIcon     = FilteredIconFactory.createIcon(
+            ModelerUtil.buildIcon("icon-dbentity.png"), FilteredIconFactory.FilterType.BLUE);
+    protected static Icon objEntityIcon    = FilteredIconFactory.createIcon(
+            ModelerUtil.buildIcon("icon-objentity.png"), FilteredIconFactory.FilterType.GREEN);
+    protected static Icon procedureIcon    = FilteredIconFactory.createIcon(
+            ModelerUtil.buildIcon("icon-stored-procedure.png"), FilteredIconFactory.FilterType.GRAY);
+    protected static Icon queryIcon        = FilteredIconFactory.createIcon(
+            ModelerUtil.buildIcon("icon-query.png"), FilteredIconFactory.FilterType.GRAY);
+    protected static Icon embeddableIcon   = FilteredIconFactory.createIcon(
+            ModelerUtil.buildIcon("icon-embeddable.png"), FilteredIconFactory.FilterType.VIOLET);
+
+    protected static Icon relationshipIcon = ModelerUtil.buildIcon("icon-relationship.png");
+    protected static Icon attributeIcon    = ModelerUtil.buildIcon("icon-attribute.png");
+
+    protected static Font defaultFont      = UIManager.getFont("Label.font");
+
+    public static Icon iconForObject(Object object) {
         if (object == null) {
             return null;
         }
 
         if (object instanceof DataChannelDescriptor) {
             return domainIcon;
-        }
-        else if (object instanceof DataNodeDescriptor) {
+        } else if (object instanceof DataNodeDescriptor) {
             return nodeIcon;
-        }
-        else if (object instanceof DataMap) {
+        } else if (object instanceof DataMap) {
             return mapIcon;
-        }
-        else if (object instanceof Entity) {
-            Entity entity = (Entity) object;
-            if (entity instanceof org.apache.cayenne.map.DbEntity) {
-                return dbEntityIcon;
-            }
-            else if (entity instanceof ObjEntity) {
-                return objEntityIcon;
-            }
-        }
-        else if (object instanceof Procedure) {
+        } else if (object instanceof DbEntity) {
+            return dbEntityIcon;
+        } else if (object instanceof ObjEntity) {
+            return objEntityIcon;
+        } else if (object instanceof Procedure) {
             return procedureIcon;
-        }
-        else if (object instanceof QueryDescriptor) {
+        } else if (object instanceof QueryDescriptor) {
             return queryIcon;
-        }
-        else if (object instanceof Relationship) {
+        } else if (object instanceof Relationship) {
             return relationshipIcon;
-        }
-        else if (object instanceof Attribute) {
+        } else if (object instanceof Attribute) {
             return attributeIcon;
-        }
-        else if (object instanceof Embeddable) {
+        } else if (object instanceof Embeddable) {
             return embeddableIcon;
         }
         return null;
@@ -219,7 +207,7 @@ public final class CellRenderers {
 
             // the sequence is important - call super with converted value,
             // then set an icon, and then return "this" 
-            ImageIcon icon = CellRenderers.iconForObject(value);
+            Icon icon = CellRenderers.iconForObject(value);
 
             value = asString(value, namespace);
 
@@ -230,7 +218,8 @@ public final class CellRenderers {
                 isSelected,
                 cellHasFocus);
 
-            setIcon(icon);
+            setIcon(isSelected ? FilteredIconFactory.createIcon(icon, FilteredIconFactory.FilterType.SELECTION) : icon);
+            setFont(defaultFont);
 
             return this;
         }
@@ -270,8 +259,13 @@ public final class CellRenderers {
                 cellHasFocus);
 
             if (showIcons) {
-                setIcon(iconForObject(value));
+                Icon icon = iconForObject(value);
+                if(isSelected) {
+                    icon = FilteredIconFactory.createIcon(icon, FilteredIconFactory.FilterType.SELECTION);
+                }
+                setIcon(icon);
             }
+            setFont(defaultFont);
 
             return this;
         }
@@ -300,7 +294,12 @@ public final class CellRenderers {
                 hasFocus);
 
             DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
-            setIcon(iconForObject(node.getUserObject()));
+            Icon icon = iconForObject(node.getUserObject());
+            if(sel) {
+                icon = FilteredIconFactory.createIcon(icon, FilteredIconFactory.FilterType.SELECTION);
+            }
+            setIcon(icon);
+            setFont(defaultFont);
 
             return this;
         }
@@ -332,8 +331,13 @@ public final class CellRenderers {
                     hasFocus,
                     row,
                     column);
-            
-            setIcon(CellRenderers.iconForObject(oldValue));
+
+            Icon icon = CellRenderers.iconForObject(oldValue);
+            if(isSelected) {
+                icon = FilteredIconFactory.createIcon(icon, FilteredIconFactory.FilterType.SELECTION);
+            }
+            setIcon(icon);
+            setFont(defaultFont);
 
             return this;
         }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxRenderer.java
index 282adff..95f7143 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxRenderer.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxRenderer.java
@@ -23,6 +23,7 @@ import org.apache.cayenne.map.DbAttribute;
 
 import javax.swing.BorderFactory;
 import javax.swing.JTable;
+import javax.swing.UIManager;
 import javax.swing.table.DefaultTableCellRenderer;
 import java.awt.Component;
 import java.awt.Font;
@@ -35,7 +36,7 @@ public class DbAttributePathComboBoxRenderer extends DefaultTableCellRenderer {
         super.getTableCellRendererComponent(table, value, isSelected,  hasFocus,  row, column);
 
         setText("");
-        setFont(new Font("Verdana", Font.PLAIN , 12));
+        setFont(UIManager.getFont("Label.font"));
 
         if (value instanceof DbAttribute) {
            setText(ModelerUtil.getObjectName(value));

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
index 1fa56a7..36fb249 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
@@ -29,6 +29,7 @@ import javax.swing.DefaultCellEditor;
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.JComboBox;
 import javax.swing.JTextField;
+import javax.swing.UIManager;
 import javax.swing.table.TableCellEditor;
 import java.awt.Color;
 import java.awt.Font;
@@ -63,7 +64,7 @@ public class DefaultWidgetFactory implements WidgetFactory {
      */
     public <T> JComboBox<T> createComboBox() {
         JComboBox<T> comboBox = new JComboBox<>();
-        comboBox.setFont(new Font("Verdana", Font.PLAIN , 12));
+        comboBox.setFont(UIManager.getFont("Label.font"));
         comboBox.setBackground(Color.WHITE);
         comboBox.setMaximumRowCount(ModelerPreferences.COMBOBOX_MAX_VISIBLE_SIZE);
         return comboBox;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JUndoableCayenneTextPane.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JUndoableCayenneTextPane.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JUndoableCayenneTextPane.java
index 22c87a8..50dc5b1 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JUndoableCayenneTextPane.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JUndoableCayenneTextPane.java
@@ -41,8 +41,7 @@ public class JUndoableCayenneTextPane extends JCayenneTextPane {
 
         try {
             super.setText(t);
-        }
-        finally {
+        } finally {
             getDocument().addUndoableEditListener(this.undoListener);
         }
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java
index 844eab3..7e65cfd 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java
@@ -68,14 +68,11 @@ public final class ModelerUtil {
     public static String getObjectName(Object object) {
         if (object == null) {
             return null;
-        }
-        else if (object instanceof CayenneMapEntry) {
+        } else if (object instanceof CayenneMapEntry) {
             return ((CayenneMapEntry) object).getName();
-        }
-        else if (object instanceof String) {
+        } else if (object instanceof String) {
             return (String) object;
-        }
-        else {
+        } else {
             try {
                 // use reflection
                 return (String) PropertyUtils.getProperty(object, "name");
@@ -104,52 +101,47 @@ public final class ModelerUtil {
             DbEntity entity) {
 
         Set<String> keys = entity.getAttributeMap().keySet();
-        List<String> list = new ArrayList<String>(keys.size() + 1);
+        List<String> list = new ArrayList<>(keys.size() + 1);
         list.add("");
         list.addAll(keys);
         return list;
     }
 
     public static String[] getRegisteredTypeNames() {
-        Set<String> nonPrimitives = new HashSet<String>();
-
-        nonPrimitives.add(String.class.getName());
-        nonPrimitives.add(BigDecimal.class.getName());
-        nonPrimitives.add(BigInteger.class.getName());
-        nonPrimitives.add(Boolean.class.getName());
-        nonPrimitives.add(Byte.class.getName());
-        nonPrimitives.add(Character.class.getName());
-        nonPrimitives.add(Date.class.getName());
-        nonPrimitives.add(java.util.Date.class.getName());
-        nonPrimitives.add(Double.class.getName());
-        nonPrimitives.add(Float.class.getName());
-        nonPrimitives.add(Integer.class.getName());
-        nonPrimitives.add(Long.class.getName());
-        nonPrimitives.add(Short.class.getName());
-        nonPrimitives.add(Time.class.getName());
-        nonPrimitives.add(Timestamp.class.getName());
-        nonPrimitives.add(Date.class.getName());
-        nonPrimitives.add(GregorianCalendar.class.getName());
-        nonPrimitives.add(Calendar.class.getName());
-        nonPrimitives.add(UUID.class.getName());
-        nonPrimitives.add(Serializable.class.getName());
-        nonPrimitives.add("java.lang.Character[]");
-        nonPrimitives.add("java.lang.Byte[]");
-        nonPrimitives.add("java.time.LocalDate");
-        nonPrimitives.add("java.time.LocalTime");
-        nonPrimitives.add("java.time.LocalDateTime");
-
-        String[] nonPrimitivesNames = new String[nonPrimitives.size()];
-        nonPrimitives.toArray(nonPrimitivesNames);
+        String[] nonPrimitivesNames = {
+                String.class.getName(),
+                BigDecimal.class.getName(),
+                BigInteger.class.getName(),
+                Boolean.class.getName(),
+                Byte.class.getName(),
+                Character.class.getName(),
+                Date.class.getName(),
+                java.util.Date.class.getName(),
+                Double.class.getName(),
+                Float.class.getName(),
+                Integer.class.getName(),
+                Long.class.getName(),
+                Short.class.getName(),
+                Time.class.getName(),
+                Timestamp.class.getName(),
+                Date.class.getName(),
+                GregorianCalendar.class.getName(),
+                Calendar.class.getName(),
+                UUID.class.getName(),
+                Serializable.class.getName(),
+                "java.lang.Character[]",
+                "java.lang.Byte[]",
+                "java.time.LocalDate",
+                "java.time.LocalTime",
+                "java.time.LocalDateTime"
+        };
         Arrays.sort(nonPrimitivesNames);
 
         String[] primitivesNames = {
                 "boolean", "byte", "byte[]", "char", "char[]", "double", "float", "int", "long", "short"
         };
 
-        String[] finalList = new String[primitivesNames.length
-                + nonPrimitivesNames.length
-                + 1];
+        String[] finalList = new String[primitivesNames.length + nonPrimitivesNames.length + 1];
 
         finalList[0] = "";
         System.arraycopy(primitivesNames, 0, finalList, 1, primitivesNames.length);
@@ -163,17 +155,17 @@ public final class ModelerUtil {
         return finalList;
     }
 
-    public static DataNodeDescriptor getNodeLinkedToMap(
-            DataChannelDescriptor domain,
-            DataMap map) {
+    public static DataNodeDescriptor getNodeLinkedToMap(DataChannelDescriptor domain, DataMap map) {
         Collection<DataNodeDescriptor> nodes = domain.getNodeDescriptors();
 
         // go via an iterator in an indexed loop, since
         // we already obtained the size
         // (and index is required to initialize array)
-        for (DataNodeDescriptor node : nodes)
-            if (node.getDataMapNames().contains(map.getName()))
+        for (DataNodeDescriptor node : nodes) {
+            if (node.getDataMapNames().contains(map.getName())) {
                 return node;
+            }
+        }
 
         return null;
     }
@@ -189,11 +181,9 @@ public final class ModelerUtil {
             Action action = actionManager.getAction(actionType);
 
             if (action instanceof MultipleObjectsAction) {
-
                 MultipleObjectsAction multiObjectAction = (MultipleObjectsAction) action;
                 multiObjectAction.setEnabled(numSelected > 0);
-                ((CayenneAction) multiObjectAction).setName(multiObjectAction
-                        .getActionName(numSelected > 1));
+                ((CayenneAction) multiObjectAction).setName(multiObjectAction.getActionName(numSelected > 1));
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MultiColumnBrowser.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MultiColumnBrowser.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MultiColumnBrowser.java
index dce52f5..4718f55 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MultiColumnBrowser.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MultiColumnBrowser.java
@@ -66,7 +66,7 @@ import javax.swing.tree.TreePath;
  */
 public class MultiColumnBrowser extends JPanel {
 
-    protected static final ImageIcon rightArrow = ModelerUtil.buildIcon("scroll_right.gif");
+    protected static final ImageIcon rightArrow = ModelerUtil.buildIcon("icon-arrow-closed.png");
 
     public static final int DEFAULT_MIN_COLUMNS_COUNT = 3;
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java
index 433267f..4c137dc 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java
@@ -42,7 +42,6 @@ import javax.swing.table.TableCellEditor;
 import javax.swing.text.JTextComponent;
 import java.awt.BorderLayout;
 import java.awt.Component;
-import java.awt.Font;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyAdapter;
@@ -241,7 +240,7 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
 
     private final class PathChooserComboBoxCellRenderer extends DefaultListCellRenderer {
 
-        private  final ImageIcon rightArrow = ModelerUtil.buildIcon("scroll_right.gif");
+        private  final ImageIcon rightArrow = ModelerUtil.buildIcon("icon-arrow-closed.png");
 
         @SuppressWarnings("unchecked")
         @Override
@@ -250,7 +249,6 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
 
             JPanel panel = new JPanel(new BorderLayout());
             JLabel label = new JLabel((String) value);
-            label.setFont(new Font("Verdana", Font.PLAIN , 12));
             panel.add(label);
 
             Object currentNode = getCurrentNode((String) value);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/SortButtonRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/SortButtonRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/SortButtonRenderer.java
index 1cab21a..5116a21 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/SortButtonRenderer.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/SortButtonRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.cayenne.modeler.util;
 
 import javax.swing.BorderFactory;
-import javax.swing.ImageIcon;
+import javax.swing.Icon;
 import javax.swing.JLabel;
 import javax.swing.JTable;
 import javax.swing.border.CompoundBorder;
@@ -28,12 +28,25 @@ import java.awt.Color;
 import java.awt.Component;
 import java.awt.Font;
 
-public class SortButtonRenderer  extends DefaultTableCellRenderer {
+public class SortButtonRenderer extends DefaultTableCellRenderer {
 
     public static final int NONE = 0;
     public static final int DOWN = 1;
     public static final int UP = 2;
 
+    private static final Icon ICON_DOWN = ModelerUtil.buildIcon("icon-sort-desc.png");
+    private static final Icon ICON_UP = ModelerUtil.buildIcon("icon-sort-asc.png");
+    private static final Font FONT;
+    private static final CompoundBorder BORDER = BorderFactory.createCompoundBorder(
+            BorderFactory.createMatteBorder(0, 0, 1, 1, Color.GRAY),
+            BorderFactory.createEmptyBorder(0, 5, 0, 0));
+
+    static {
+        // Get default font for current system
+        FONT = new JLabel().getFont().deriveFont(Font.BOLD);
+    }
+
+    private boolean sortingEnabled = true;
     private int currentState;
     private int currentColumn;
 
@@ -46,23 +59,20 @@ public class SortButtonRenderer  extends DefaultTableCellRenderer {
             int column) {
         super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
 
-        if (column == currentColumn) {
+        if (sortingEnabled && column == currentColumn) {
             if (currentState == DOWN) {
-                setIcon(new BevelArrowIcon(BevelArrowIcon.DOWN, false, false));
+                setIcon(ICON_DOWN);
             } else {
-                setIcon(new BevelArrowIcon(BevelArrowIcon.UP, false, false));
+                setIcon(ICON_UP);
             }
-        }else {
-            setIcon(new ImageIcon());
+        } else {
+            setIcon(null);
         }
 
-        setText( ((value == null) ? "" : value.toString()));
-        setFont(new Font("Verdana", Font.BOLD, 12));
+        setText(value == null ? "" : value.toString());
+        setFont(FONT);
         setHorizontalTextPosition(JLabel.LEFT);
-        CompoundBorder compoundBorder = BorderFactory.createCompoundBorder(
-                BorderFactory.createMatteBorder(0, 0, 1, 1, Color.GRAY),
-                BorderFactory.createEmptyBorder(0, 5, 0, 0));
-        setBorder(compoundBorder);
+        setBorder(BORDER);
         return this;
     }
 
@@ -85,4 +95,12 @@ public class SortButtonRenderer  extends DefaultTableCellRenderer {
         }
         return NONE;
     }
+
+    public boolean isSortingEnabled() {
+        return sortingEnabled;
+    }
+
+    public void setSortingEnabled(boolean sortingEnabled) {
+        this.sortingEnabled = sortingEnabled;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TableHeaderListener.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TableHeaderListener.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TableHeaderListener.java
index b665730..59d76fe 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TableHeaderListener.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TableHeaderListener.java
@@ -33,20 +33,20 @@ import java.awt.event.MouseEvent;
 
 public class TableHeaderListener extends MouseAdapter {
 
+    private static final int EPSILON = 5;
+    private static final Cursor EAST = Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR);
+    private static final Cursor WEST = Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR);
+
     private JTableHeader header;
     private SortButtonRenderer renderer;
     private JTable table;
-    private TableColumnPreferences tableColumnPreferences;
 
-    private static final int EPSILON = 5;
-    private static final Cursor EAST = Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR);
-    private static final Cursor WEST = Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR);
+    private TableColumnPreferences tableColumnPreferences;
 
     public TableHeaderListener(JTableHeader header, SortButtonRenderer renderer) {
         this.header = header;
         this.renderer = renderer;
         table = header.getTable();
-
     }
 
     @Override
@@ -56,19 +56,13 @@ public class TableHeaderListener extends MouseAdapter {
         } else if (!isResizeCursor()) {
             int col = header.columnAtPoint(e.getPoint());
             int sortCol = table.convertColumnIndexToModel(col);
-            if (((CayenneTableModel) table.getModel()).isColumnSortable(sortCol)) {
-                boolean isAscent;
-                if (SortButtonRenderer.DOWN == renderer.getState(col)) {
-                    isAscent = false;
-                } else {
-                    isAscent = true;
-                }
+            if (renderer.isSortingEnabled() && ((CayenneTableModel) table.getModel()).isColumnSortable(sortCol)) {
+                boolean isAscent = SortButtonRenderer.DOWN != renderer.getState(col);
                 sortByDefinedColumn(col, sortCol, isAscent);
                 tableColumnPreferences.setSortOrder(isAscent);
                 tableColumnPreferences.setSortColumn(sortCol);
             }
         }
-
     }
 
     public void mouseReleased(MouseEvent e) {
@@ -77,7 +71,7 @@ public class TableHeaderListener extends MouseAdapter {
 
     public void sortByDefinedColumn(int col, int sortCol, boolean order) {
         CayenneTableModel model = (CayenneTableModel) table.getModel();
-        if (model.isColumnSortable(sortCol)) {
+        if (renderer.isSortingEnabled() && model.isColumnSortable(sortCol)) {
             renderer.setSelectedColumn(col, order);
             header.repaint();
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/EditorTextField.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/EditorTextField.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/EditorTextField.java
index 1d1d978..a335b30 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/EditorTextField.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/EditorTextField.java
@@ -35,7 +35,6 @@ import javax.swing.JList;
 import javax.swing.JTable;
 import javax.swing.JTextField;
 import javax.swing.KeyStroke;
-import javax.swing.ListCellRenderer;
 
 /**
  * EditorTextField is a text field to be used in combobox editor. It paints self normally
@@ -103,23 +102,23 @@ public class EditorTextField extends JTextField implements FocusListener {
 
     @Override
     public void paintComponent(Graphics g) {
-        if (hasFocus)
+        if (hasFocus) {
             super.paintComponent(g);
-        else {
+        } else {
             list.setEnabled(combo.isEnabled());
 
-            ListCellRenderer renderer = combo.getRenderer();
-            Component c = renderer.getListCellRendererComponent(list, combo.getSelectedItem(),
-                    -1, false, false);
-            
-            //fill background first
+            Component c = combo.getRenderer()
+                    .getListCellRendererComponent(list, combo.getSelectedItem(), -1, false, false);
+
+            Insets insets = getInsets();
+
             Color oldColor = g.getColor();
             g.setColor(getBackground());
-            g.fillRect(0, 0, getWidth(), getHeight());
+            g.fillRect(insets.left, insets.top,
+                    getWidth() - insets.right - insets.left, getHeight() - insets.bottom - insets.top);
             g.setColor(oldColor);
-            
-            Insets insets = getInsets();
-            rendererPane.paintComponent(g, c, combo, insets.left, insets.top, 
+
+            rendererPane.paintComponent(g, c, combo, insets.left, insets.top,
                     getWidth() - insets.right - insets.left, getHeight() - insets.bottom - insets.top);
         }
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/SuggestionList.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/SuggestionList.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/SuggestionList.java
index b384759..e1d99ab 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/SuggestionList.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/SuggestionList.java
@@ -18,11 +18,13 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.util.combo;
 
+import java.awt.Color;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 
+import javax.swing.BorderFactory;
 import javax.swing.ComboBoxModel;
 import javax.swing.DefaultListModel;
 import javax.swing.JComboBox;
@@ -58,6 +60,7 @@ public class SuggestionList extends BasicComboPopup {
         
         this.strict = strict;
         list.addMouseListener(new MouseHandler());
+        setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
     }
     
     /**
@@ -147,10 +150,9 @@ public class SuggestionList extends BasicComboPopup {
      */
     @Override
     protected ItemListener createItemListener() {
-        return 
-          new ItemListener() {
+        return new ItemListener() {
             public void itemStateChanged(ItemEvent e) {}
-          };
+        };
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
index 80f5ead..622c95f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.pref;
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.prefs.BackingStoreException;
@@ -53,8 +52,8 @@ public abstract class CayennePreferenceEditor implements PreferenceEditor {
         this.changedPreferences = new HashMap<>();
         this.removedPreferences = new HashMap<>();
         this.changedBooleanPreferences = new HashMap<>();
-        this.removedNode = new ArrayList<Preferences>();
-        this.addedNode = new ArrayList<Preferences>();
+        this.removedNode = new ArrayList<>();
+        this.addedNode = new ArrayList<>();
     }
 
     public List<Preferences> getAddedNode() {
@@ -93,62 +92,34 @@ public abstract class CayennePreferenceEditor implements PreferenceEditor {
         }
 
         // update boolean preferences
-        Iterator it = changedBooleanPreferences.entrySet().iterator();
-        while (it.hasNext()) {
-            Map.Entry entry = (Map.Entry) it.next();
-            Preferences pref = (Preferences) entry.getKey();
-            Map<String, Boolean> map = (Map<String, Boolean>) entry.getValue();
-
-            Iterator iterator = map.entrySet().iterator();
-            while (iterator.hasNext()) {
-                Map.Entry en = (Map.Entry) iterator.next();
-                String key = (String) en.getKey();
-                Boolean value = (Boolean) en.getValue();
-
-                pref.putBoolean(key, value);
+        for (Map.Entry<Preferences, Map<String, Boolean>> entry : changedBooleanPreferences.entrySet()) {
+            Preferences pref = entry.getKey();
+            for (Map.Entry<String, Boolean> en : entry.getValue().entrySet()) {
+                pref.putBoolean(en.getKey(), en.getValue());
             }
         }
 
         // update string preferences
-        Iterator iter = changedPreferences.entrySet().iterator();
-        while (iter.hasNext()) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            Preferences pref = (Preferences) entry.getKey();
-            Map<String, String> map = (Map<String, String>) entry.getValue();
-
-            Iterator iterator = map.entrySet().iterator();
-            while (iterator.hasNext()) {
-                Map.Entry en = (Map.Entry) iterator.next();
-                String key = (String) en.getKey();
-                String value = (String) en.getValue();
-
-                pref.put(key, value);
+        for (Map.Entry<Preferences, Map<String, String>> entry : changedPreferences.entrySet()) {
+            Preferences pref = entry.getKey();
+            for (Map.Entry<String, String> en : entry.getValue().entrySet()) {
+                pref.put(en.getKey(), en.getValue());
             }
         }
 
         // remove string preferences
-        Iterator iterator = removedPreferences.entrySet().iterator();
-        while (iterator.hasNext()) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            Preferences pref = (Preferences) entry.getKey();
-            Map<String, String> map = (Map<String, String>) entry.getValue();
-
-            Iterator itRem = map.entrySet().iterator();
-            while (itRem.hasNext()) {
-                Map.Entry en = (Map.Entry) itRem.next();
-                String key = (String) en.getKey();
-                pref.remove(key);
+        for (Map.Entry<Preferences, Map<String, String>> entry : removedPreferences.entrySet()) {
+            Preferences pref = entry.getKey();
+            for (Map.Entry<String, String> en : entry.getValue().entrySet()) {
+                pref.remove(en.getKey());
             }
         }
 
         // remove preferences node
-        Iterator<Preferences> iteratorNode = removedNode.iterator();
-        while (iteratorNode.hasNext()) {
-            Preferences pref = iteratorNode.next();
+        for (Preferences pref : removedNode) {
             try {
                 pref.removeNode();
-            }
-            catch (BackingStoreException e) {
+            } catch (BackingStoreException e) {
                 logger.warn("Error removing preferences");
             }
         }
@@ -157,16 +128,11 @@ public abstract class CayennePreferenceEditor implements PreferenceEditor {
     }
 
     public void revert() {
-
         // remove added preferences node
-        Iterator<Preferences> iteratorNode = addedNode.iterator();
-        while (iteratorNode.hasNext()) {
-            Preferences pref = iteratorNode.next();
+        for (Preferences pref : addedNode) {
             try {
                 pref.removeNode();
-            }
-            catch (BackingStoreException e) {
-                // do nothing
+            } catch (BackingStoreException ignored) {
             }
         }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/MainToolBar.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/MainToolBar.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/MainToolBar.java
new file mode 100644
index 0000000..6becea3
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/MainToolBar.java
@@ -0,0 +1,50 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.swing.components;
+
+import java.awt.Color;
+import javax.swing.JToolBar;
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+
+/**
+ * @since 4.0
+ */
+public class MainToolBar extends JToolBar {
+    public MainToolBar() {
+        setFloatable(false);
+    }
+
+    @Override
+    public void setBorder(Border b) {
+        Object border = UIManager.get("MainToolBar.border");
+        if (border instanceof Border) {
+            super.setBorder((Border) border);
+        }
+    }
+
+    @Override
+    public void setBackground(Color bg) {
+        Object background = UIManager.get("MainToolBar.background");
+        if (background instanceof Color) {
+            super.setBackground((Color) background);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/TopBorder.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/TopBorder.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/TopBorder.java
new file mode 100644
index 0000000..eda2036
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/TopBorder.java
@@ -0,0 +1,83 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.swing.components;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Insets;
+import javax.swing.border.AbstractBorder;
+import javax.swing.border.Border;
+
+/**
+ * Line border only on top side of the component
+ *
+ * @since 4.0
+ */
+public class TopBorder extends AbstractBorder {
+
+    private static final Color DEFAULT_COLOR = Color.LIGHT_GRAY;
+    private static final Border DEFAULT_BORDER = new TopBorder(DEFAULT_COLOR, 1);
+
+    private int thickness;
+    private Color color;
+
+    public static Border create() {
+        return DEFAULT_BORDER;
+    }
+
+    public static Border create(int thickness) {
+        return new TopBorder(DEFAULT_COLOR, thickness);
+    }
+
+    public static Border create(Color color) {
+        return new TopBorder(color, 1);
+    }
+
+    public static Border create(Color color, int thickness) {
+        return new TopBorder(color, thickness);
+    }
+
+    public TopBorder(Color color, int thickness) {
+        this.color = color;
+        this.thickness = thickness;
+    }
+
+    @Override
+    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
+        if ((this.thickness > 0) && (g instanceof Graphics2D)) {
+            Graphics2D g2d = (Graphics2D) g;
+
+            Color oldColor = g2d.getColor();
+            g2d.setColor(color);
+            g2d.setBackground(color);
+
+            g2d.drawRect(x, y, width, y + thickness - 1);
+
+            g2d.setColor(oldColor);
+        }
+    }
+
+    public Insets getBorderInsets(Component c, Insets insets) {
+        insets.set(thickness, 0, 0, 0);
+        return insets;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/image/FilteredIconFactory.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/image/FilteredIconFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/image/FilteredIconFactory.java
new file mode 100644
index 0000000..4fbd4db
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/image/FilteredIconFactory.java
@@ -0,0 +1,114 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.swing.components.image;
+
+import java.awt.Image;
+import java.awt.image.BufferedImage;
+import java.awt.image.FilteredImageSource;
+import java.awt.image.ImageProducer;
+import java.awt.image.RGBImageFilter;
+import javax.swing.Icon;
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+import javax.swing.UIManager;
+
+import sun.swing.ImageIconUIResource;
+
+/**
+ * @since 4.0
+ */
+public class FilteredIconFactory {
+
+    private static final JComponent DUMMY = new JPanel();
+
+    public enum FilterType {
+        DISABLE     (new DisabledFilter()),
+        SELECTION   (new SelectionFilter()),
+        GREEN       (new ColorFilter(0x65A91B)),
+        VIOLET      (new ColorFilter(0xAD78DD)),
+        BLUE        (new ColorFilter(0x53A3D6)),
+        GRAY        (new ColorFilter(0x434343));
+
+        private final RGBImageFilter filter;
+
+        FilterType(RGBImageFilter filter) {
+            this.filter = filter;
+        }
+    }
+
+    static public Icon createDisabledIcon(Icon icon) {
+        return createIcon(icon, FilterType.DISABLE);
+    }
+
+    static public Icon createIcon(Icon icon, FilterType filterType) {
+        if (icon != null && icon.getIconWidth() > 0 && icon.getIconHeight() > 0) {
+            BufferedImage img = new BufferedImage(icon.getIconWidth(), icon.getIconWidth(), BufferedImage.TYPE_INT_ARGB);
+            icon.paintIcon(DUMMY, img.getGraphics(), 0, 0);
+            ImageProducer producer = new FilteredImageSource(img.getSource(), filterType.filter);
+            Image resultImage = DUMMY.createImage(producer);
+            return new ImageIconUIResource(resultImage);
+        }
+        return null;
+    }
+
+    static class ColorFilter extends RGBImageFilter {
+
+        private final int color;
+
+        ColorFilter(int color) {
+            canFilterIndexColorModel = true;
+            this.color = color;
+        }
+
+        public int filterRGB(int x, int y, int argb) {
+            int alpha = (argb >> 24) & 0xFF;
+            return (alpha << 24) | color;
+        }
+    }
+
+    static class SelectionFilter extends ColorFilter {
+        SelectionFilter() {
+            super(UIManager.getColor("Tree.selectionForeground").getRGB() & 0x00FFFFFF);
+        }
+    }
+
+    static class DisabledFilter extends RGBImageFilter {
+
+        DisabledFilter() {
+            canFilterIndexColorModel = true;
+        }
+
+        public int filterRGB(int x, int y, int rgb) {
+            // find the average of red, green, and blue
+            float avg = (((rgb >> 16) & 0xff) / 255f +
+                    ((rgb >>  8) & 0xff) / 255f +
+                    ( rgb        & 0xff) / 255f) / 3;
+            // pull out the alpha channel
+            float alpha = ((rgb >> 24) & 0xff) / 255f;
+            // calc the average
+            avg = Math.min(1.0f, (1f - avg)/(100.0f/35.0f) + avg);
+            // turn back into argb
+            return  (int)(alpha * 120f) << 24 |
+                    (int)(avg   * 255f) << 16 |
+                    (int)(avg   * 255f) <<  8 |
+                    (int)(avg   * 255f);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java
index 88b9fc7..9c9b44b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java
@@ -150,7 +150,6 @@ public class JCayenneTextPane extends JPanel {
         setMinimumSize(dimension);
         setPreferredSize(dimension);
         setMinimumSize(dimension);
-        setBackground(new Color(245, 238, 238));
         setBorder(null);
 
         pane = new JTextPaneScrollable(new EditorKit(syntaxConstant)) {
@@ -164,8 +163,8 @@ public class JCayenneTextPane extends JPanel {
         pane.setBorder(new LineNumberedBorder(this));
 
         scrollPane = new JScrollPane(pane);
-        scrollPane.setBorder(BorderFactory.createLineBorder(new Color(115, 115, 115)));
-        this.painter = new UnderlineHighlighterForText.UnderlineHighlightPainter(Color.red);
+        scrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
+        painter = new UnderlineHighlighterForText.UnderlineHighlightPainter(Color.red);
 
         pane.getDocument().addDocumentListener(new DocumentListener() {
             public void insertUpdate(DocumentEvent evt) {
@@ -320,7 +319,7 @@ public class JCayenneTextPane extends JPanel {
             }
 
             if (imageError) {
-                Image img = ModelerUtil.buildIcon("error.gif").getImage();
+                Image img = ModelerUtil.buildIcon("icon-error.png").getImage();
                 g.drawImage(img, 0, endYPositionToolTip, this);
             }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
index 0b82151..1562c62 100644
--- a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
+++ b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
@@ -17,7 +17,7 @@
 
 cayenne.bugreport.url = http://issues.apache.org/jira/browse/CAY
 
-cayenne.modeler.about.info = (c) 2001-2016 Apache Software Foundation and individual authors.\
+cayenne.modeler.about.info = (c) 2001-2017 Apache Software Foundation and individual authors.\
     <br><br>http://cayenne.apache.org/<br>
 
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/error.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/error.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/error.gif
deleted file mode 100644
index 5e373ce..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/error.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-alphab_sort.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-alphab_sort.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-alphab_sort.gif
deleted file mode 100644
index f887603..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-alphab_sort.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-arrow-closed.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-arrow-closed.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-arrow-closed.png
new file mode 100755
index 0000000..1b6601b
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-arrow-closed.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-arrow-open.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-arrow-open.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-arrow-open.png
new file mode 100755
index 0000000..692c096
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-arrow-open.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-attribute.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-attribute.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-attribute.gif
deleted file mode 100644
index 3a5ce56..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-attribute.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-attribute.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-attribute.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-attribute.png
new file mode 100755
index 0000000..77a68eb
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-attribute.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-backward.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-backward.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-backward.png
new file mode 100755
index 0000000..f88959b
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-backward.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-backward_nav.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-backward_nav.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-backward_nav.gif
deleted file mode 100644
index a8157c7..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-backward_nav.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-copy.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-copy.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-copy.gif
deleted file mode 100755
index 6d0dd17..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-copy.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-copy.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-copy.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-copy.png
new file mode 100755
index 0000000..3fb5c81
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-copy.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-listener.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-listener.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-listener.gif
deleted file mode 100644
index 3a0a878..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-listener.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-method.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-method.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-method.gif
deleted file mode 100644
index 6905906..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-method.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-method.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-method.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-method.png
new file mode 100755
index 0000000..436fc06
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-create-method.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-cut.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-cut.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-cut.gif
deleted file mode 100755
index d044e59..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-cut.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-cut.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-cut.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-cut.png
new file mode 100755
index 0000000..04069de
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-cut.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-datamap.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-datamap.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-datamap.gif
deleted file mode 100644
index 7910409..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-datamap.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-datamap.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-datamap.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-datamap.png
new file mode 100755
index 0000000..2ea96ca
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-datamap.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dbentity.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dbentity.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dbentity.gif
deleted file mode 100644
index d7e9a76..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dbentity.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dbentity.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dbentity.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dbentity.png
new file mode 100755
index 0000000..87d9d8a
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dbentity.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dom.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dom.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dom.gif
deleted file mode 100644
index be3c2ab..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dom.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dom.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dom.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dom.png
new file mode 100755
index 0000000..ce18f5f
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-dom.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-down.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-down.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-down.png
new file mode 100755
index 0000000..df161b3
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-down.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-edit.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-edit.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-edit.png
new file mode 100755
index 0000000..027c482
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-edit.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-embeddable.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-embeddable.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-embeddable.gif
deleted file mode 100644
index c42433b..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-embeddable.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-embeddable.png
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-embeddable.png b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-embeddable.png
new file mode 100755
index 0000000..2f29083
Binary files /dev/null and b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-embeddable.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09b0fdb0/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-eomodel.gif
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-eomodel.gif b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-eomodel.gif
deleted file mode 100644
index 7b5346d..0000000
Binary files a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/images/icon-eomodel.gif and /dev/null differ


Mime
View raw message