You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2015/12/16 13:57:04 UTC
[1/4] cayenne git commit: fix problems: path select autocompletion,
autocompletion scroll, make indent in table cells,
header renderer. refactor some code
Repository: cayenne
Updated Branches:
refs/heads/master 9baef19b7 -> 1448a194c
fix problems: path select autocompletion,autocompletion scroll, make indent in table cells, header renderer. refactor some code
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/7e8e07c7
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/7e8e07c7
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/7e8e07c7
Branch: refs/heads/master
Commit: 7e8e07c71d5e1fb15d150a08042048f9ee753ab3
Parents: 9baef19
Author: AlexandrShestak <sh...@mail.ru>
Authored: Wed Dec 9 13:30:35 2015 +0300
Committer: AlexandrShestak <sh...@mail.ru>
Committed: Wed Dec 9 13:30:35 2015 +0300
----------------------------------------------------------------------
.../modeler/editor/ObjAttributeTableModel.java | 3 +-
.../modeler/editor/ObjEntityAttributePanel.java | 35 ++-----
.../editor/ObjEntityRelationshipPanel.java | 45 ++++----
.../editor/dbentity/DbEntityAttributePanel.java | 2 +
.../dbentity/DbEntityRelationshipPanel.java | 2 +
.../modeler/util/BoardTableCellRenderer.java | 34 ++++++
.../util/CollectionTypeComboBoxEditor.java | 90 ++++++++++++++++
.../util/CollectionTypeComboBoxRenderer.java | 53 ++++++++++
.../util/DbAttributePathComboBoxRenderer.java | 48 +++++++++
.../util/DbRelationshipPathComboBoxEditor.java | 1 +
.../modeler/util/DefaultWidgetFactory.java | 22 ++--
.../JTableCollectionTypeComboBoxEditor.java | 84 ---------------
.../JTableCollectionTypeComboBoxRenderer.java | 55 ----------
.../util/JTableMapKeyComboBoxEditor.java | 99 ------------------
.../util/JTableMapKeyComboBoxRenderer.java | 58 -----------
.../modeler/util/MapKeyComboBoxEditor.java | 104 +++++++++++++++++++
.../modeler/util/MapKeyComboBoxRenderer.java | 57 ++++++++++
.../util/PathChooserComboBoxCellEditor.java | 6 +-
.../modeler/util/SortButtonRenderer.java | 95 ++++++-----------
.../modeler/util/combo/AutoCompletion.java | 4 +-
20 files changed, 476 insertions(+), 421 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
index 8ea39c1..16db808 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
@@ -64,6 +64,7 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
public static final int DB_ATTRIBUTE = 3;
public static final int DB_ATTRIBUTE_TYPE = 4;
public static final int LOCKING = 5;
+ public static final int COLUMN_COUNT = 6;
private ObjEntity entity;
private DbEntity dbEntity;
@@ -145,7 +146,7 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
}
public int getColumnCount() {
- return 6;
+ return COLUMN_COUNT;
}
public String getColumnName(int column) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
index 46c4215..6dc7290 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributePanel.java
@@ -20,7 +20,6 @@ package org.apache.cayenne.modeler.editor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.Embeddable;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
@@ -45,16 +44,17 @@ import org.apache.cayenne.modeler.event.TablePopupHandler;
import org.apache.cayenne.modeler.pref.TableColumnPreferences;
import org.apache.cayenne.modeler.util.CayenneTable;
import org.apache.cayenne.modeler.util.CayenneTableModel;
+import org.apache.cayenne.modeler.util.DbAttributePathComboBoxRenderer;
import org.apache.cayenne.modeler.util.DbAttributePathComboBoxEditor;
import org.apache.cayenne.modeler.util.ModelerUtil;
import org.apache.cayenne.modeler.util.PanelFactory;
import org.apache.cayenne.modeler.util.UIUtil;
import org.apache.cayenne.modeler.util.combo.AutoCompletion;
+import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
-import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
@@ -84,6 +84,8 @@ import java.util.Map;
public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayListener,
ObjEntityListener, ObjAttributeListener, ProjectOnSaveListener {
+ private static final int INHERITANCE_COLUMN_WIDTH = 35;
+
private ProjectController mediator;
private CayenneTable table;
private TableColumnPreferences tablePreferences;
@@ -334,17 +336,15 @@ public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayL
}
protected void setUpTableStructure() {
- int inheritanceColumnWidth = 30;
-
Map<Integer, Integer> minSizes = new HashMap<Integer, Integer>();
Map<Integer, Integer> maxSizes = new HashMap<Integer, Integer>();
- minSizes.put(ObjAttributeTableModel.INHERITED, inheritanceColumnWidth);
- maxSizes.put(ObjAttributeTableModel.INHERITED, inheritanceColumnWidth);
+ minSizes.put(ObjAttributeTableModel.INHERITED, INHERITANCE_COLUMN_WIDTH);
+ maxSizes.put(ObjAttributeTableModel.INHERITED, INHERITANCE_COLUMN_WIDTH);
initComboBoxes();
- table.getColumnModel().getColumn(3).setCellRenderer(new JTableDbAttributeComboBoxRenderer());
+ table.getColumnModel().getColumn(3).setCellRenderer(new DbAttributePathComboBoxRenderer());
table.getColumnModel().getColumn(3).setCellEditor(new DbAttributePathComboBoxEditor());
tablePreferences.bind(
@@ -432,6 +432,7 @@ public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayL
}
setText("");
}
+ setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
return this;
}
@@ -505,24 +506,4 @@ public class ObjEntityAttributePanel extends JPanel implements ObjEntityDisplayL
}
- private static final class JTableDbAttributeComboBoxRenderer extends DefaultTableCellRenderer {
-
- public JTableDbAttributeComboBoxRenderer() {
- }
-
- @Override
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
- boolean hasFocus, int row, int column) {
- JLabel jLabel = new JLabel("");
- jLabel.setFont(new Font("Verdana", Font.PLAIN , 12));
-
- if (value instanceof DbAttribute) {
- jLabel.setText(ModelerUtil.getObjectName(value));
- } else if (value != null) {
- jLabel.setText(value.toString());
- }
-
- return jLabel;
- }
- }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
index f417989..fd08bde 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
@@ -41,34 +41,24 @@ import org.apache.cayenne.modeler.pref.TableColumnPreferences;
import org.apache.cayenne.modeler.util.CayenneTable;
import org.apache.cayenne.modeler.util.CellRenderers;
import org.apache.cayenne.modeler.util.DbRelationshipPathComboBoxEditor;
-import org.apache.cayenne.modeler.util.JTableCollectionTypeComboBoxEditor;
-import org.apache.cayenne.modeler.util.JTableCollectionTypeComboBoxRenderer;
-import org.apache.cayenne.modeler.util.JTableMapKeyComboBoxEditor;
-import org.apache.cayenne.modeler.util.JTableMapKeyComboBoxRenderer;
+import org.apache.cayenne.modeler.util.CollectionTypeComboBoxEditor;
+import org.apache.cayenne.modeler.util.CollectionTypeComboBoxRenderer;
+import org.apache.cayenne.modeler.util.MapKeyComboBoxEditor;
+import org.apache.cayenne.modeler.util.MapKeyComboBoxRenderer;
import org.apache.cayenne.modeler.util.ModelerUtil;
import org.apache.cayenne.modeler.util.PanelFactory;
import org.apache.cayenne.modeler.util.UIUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.DefaultCellEditor;
-import javax.swing.Icon;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JTable;
-import javax.swing.ListSelectionModel;
+import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
+import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;
@@ -326,25 +316,37 @@ public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDispl
TableColumn col = table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_TARGET_PATH);
col.setCellEditor(new DbRelationshipPathComboBoxEditor());
+ col.setCellRenderer(new DefaultTableCellRenderer(){
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
+ super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+ setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
+ setToolTipText("To choose relationship press enter two times. \n To choose next relationship press dot.");
+ return this;
+ }
+ });
col = table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_DELETE_RULE);
JComboBox deleteRulesCombo = Application.getWidgetFactory().createComboBox(
DELETE_RULES,
false);
- deleteRulesCombo.setEditable(false);
+ deleteRulesCombo.setFocusable(false);
+ deleteRulesCombo.setEditable(true);
+ ((JComponent) deleteRulesCombo.getEditor().getEditorComponent()).setBorder(null);
+ deleteRulesCombo.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
deleteRulesCombo.setSelectedIndex(0); // Default to the first value
col.setCellEditor(Application.getWidgetFactory().createCellEditor(
deleteRulesCombo));
col = table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_COLLECTION_TYPE);
- col.setCellEditor(new JTableCollectionTypeComboBoxEditor());
- col.setCellRenderer(new JTableCollectionTypeComboBoxRenderer());
+ col.setCellEditor(new CollectionTypeComboBoxEditor());
+ col.setCellRenderer(new CollectionTypeComboBoxRenderer());
col = table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_MAP_KEY);
- col.setCellEditor(new JTableMapKeyComboBoxEditor());
- col.setCellRenderer(new JTableMapKeyComboBoxRenderer());
+ col.setCellEditor(new MapKeyComboBoxEditor());
+ col.setCellRenderer(new MapKeyComboBoxRenderer());
tablePreferences.bind(
table,
@@ -419,6 +421,7 @@ public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDispl
? table.getSelectionForeground()
: table.getForeground());
}
+ setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
return this;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java
index 7bb4f44..e84b6bf 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java
@@ -34,6 +34,7 @@ import org.apache.cayenne.modeler.event.DbEntityDisplayListener;
import org.apache.cayenne.modeler.event.EntityDisplayEvent;
import org.apache.cayenne.modeler.event.TablePopupHandler;
import org.apache.cayenne.modeler.pref.TableColumnPreferences;
+import org.apache.cayenne.modeler.util.BoardTableCellRenderer;
import org.apache.cayenne.modeler.util.CayenneTable;
import org.apache.cayenne.modeler.util.PanelFactory;
import org.apache.cayenne.modeler.util.UIUtil;
@@ -81,6 +82,7 @@ public class DbEntityAttributePanel extends JPanel implements DbEntityDisplayLis
tablePreferences = new TableColumnPreferences(
DbAttributeTableModel.class,
"attributeTable");
+ table.setDefaultRenderer(String.class, new BoardTableCellRenderer());
/**
* Create and install a popup
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
index 046ddad..bae752d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityRelationshipPanel.java
@@ -38,6 +38,7 @@ import org.apache.cayenne.modeler.event.DbEntityDisplayListener;
import org.apache.cayenne.modeler.event.EntityDisplayEvent;
import org.apache.cayenne.modeler.event.TablePopupHandler;
import org.apache.cayenne.modeler.pref.TableColumnPreferences;
+import org.apache.cayenne.modeler.util.BoardTableCellRenderer;
import org.apache.cayenne.modeler.util.CayenneTable;
import org.apache.cayenne.modeler.util.CellRenderers;
import org.apache.cayenne.modeler.util.ModelerUtil;
@@ -103,6 +104,7 @@ public class DbEntityRelationshipPanel extends JPanel implements DbEntityDisplay
table = new CayenneTable();
table.setDefaultRenderer(DbEntity.class, CellRenderers
.entityTableRendererWithIcons(mediator));
+ table.setDefaultRenderer(String.class, new BoardTableCellRenderer());
tablePreferences = new TableColumnPreferences(
DbRelationshipTableModel.class,
"relationshipTable");
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/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
new file mode 100644
index 0000000..231f089
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/BoardTableCellRenderer.java
@@ -0,0 +1,34 @@
+/*****************************************************************
+ * 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 javax.swing.BorderFactory;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.Component;
+
+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));
+ return this;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxEditor.java
new file mode 100644
index 0000000..1ea13ed
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxEditor.java
@@ -0,0 +1,90 @@
+/*****************************************************************
+ * 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 org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.BorderFactory;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.table.TableCellEditor;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class CollectionTypeComboBoxEditor extends AbstractCellEditor implements TableCellEditor {
+
+ private static final String COLLECTION_TYPE_MAP = "java.util.Map";
+ private static final String COLLECTION_TYPE_SET = "java.util.Set";
+ private static final String COLLECTION_TYPE_COLLECTION = "java.util.Collection";
+ private static final String DEFAULT_COLLECTION_TYPE = "java.util.List";
+ private static final int REL_COLLECTION_TYPE_COLUMN = 3;
+
+ private ObjRelationshipTableModel model;
+ private int row;
+
+ @Override
+ public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, final int row, final int column) {
+
+ this.model = (ObjRelationshipTableModel) table.getModel();
+ this.row = row;
+
+ final JComboBox collectionTypeCombo = Application.getWidgetFactory().createComboBox(
+ new Object[]{
+ COLLECTION_TYPE_MAP,
+ COLLECTION_TYPE_SET,
+ COLLECTION_TYPE_COLLECTION,
+ DEFAULT_COLLECTION_TYPE
+ },
+ false);
+ if (model.getRelationship(row).isToMany()) {
+ collectionTypeCombo.setEnabled(true);
+ collectionTypeCombo.setSelectedItem(model.getRelationship(row).getCollectionType());
+ } else {
+ JLabel labelIfToOneRelationship = new JLabel();
+ labelIfToOneRelationship.setEnabled(false);
+ return labelIfToOneRelationship;
+ }
+ collectionTypeCombo.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Object selected = collectionTypeCombo.getSelectedItem();
+ model.setUpdatedValueAt(selected, row, REL_COLLECTION_TYPE_COLUMN);
+ table.repaint();
+ }
+ });
+
+ collectionTypeCombo.setFocusable(false);
+ collectionTypeCombo.setEditable(true);
+ ((JComponent) collectionTypeCombo.getEditor().getEditorComponent()).setBorder(null);
+ collectionTypeCombo.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
+
+ return collectionTypeCombo;
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+ return model.getValueAt(row, REL_COLLECTION_TYPE_COLUMN);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxRenderer.java
new file mode 100644
index 0000000..d1a69b0
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxRenderer.java
@@ -0,0 +1,53 @@
+/*****************************************************************
+ * 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 org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
+
+import javax.swing.BorderFactory;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.Component;
+import java.awt.Font;
+
+public class CollectionTypeComboBoxRenderer extends DefaultTableCellRenderer {
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
+ super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+
+ setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
+ if (value == null) {
+ setEnabled(false);
+ return this;
+ }
+ if (((ObjRelationshipTableModel) table.getModel()).getRelationship(row).isToMany()) {
+ setFocusable(false);
+ setEnabled(true);
+ setText((String) value);
+ setFont(new Font("Verdana", Font.PLAIN, 12));
+ return this;
+ } else {
+ setEnabled(false);
+ return this;
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/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
new file mode 100644
index 0000000..282adff
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxRenderer.java
@@ -0,0 +1,48 @@
+/*****************************************************************
+ * 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 org.apache.cayenne.map.DbAttribute;
+
+import javax.swing.BorderFactory;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.Component;
+import java.awt.Font;
+
+public class DbAttributePathComboBoxRenderer extends DefaultTableCellRenderer {
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
+ boolean hasFocus, int row, int column) {
+ super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+
+ setText("");
+ setFont(new Font("Verdana", Font.PLAIN , 12));
+
+ if (value instanceof DbAttribute) {
+ setText(ModelerUtil.getObjectName(value));
+ } else if (value != null) {
+ setText(value.toString());
+ }
+ setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
+ return this;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
index 9aac322..829f874 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
@@ -70,6 +70,7 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
enterPressedCount = 0;
comboBoxPathChooser.addActionListener(this);
+ comboBoxPathChooser.setToolTipText("To choose relationship press enter two times. \n To choose next relationship press dot.");
}
@Override
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/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 c0596c7..da6463f 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
@@ -18,22 +18,22 @@
****************************************************************/
package org.apache.cayenne.modeler.util;
-import java.awt.Color;
-import java.awt.Font;
-import java.util.Arrays;
-import java.util.Collection;
+import org.apache.cayenne.modeler.ModelerPreferences;
+import org.apache.cayenne.modeler.undo.JComboBoxUndoListener;
+import org.apache.cayenne.modeler.util.combo.AutoCompletion;
+import org.apache.cayenne.modeler.util.combo.ComboBoxCellEditor;
+import org.syntax.jedit.JEditTextArea;
+import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
-
-import org.apache.cayenne.modeler.ModelerPreferences;
-import org.apache.cayenne.modeler.undo.JComboBoxUndoListener;
-import org.apache.cayenne.modeler.util.combo.AutoCompletion;
-import org.apache.cayenne.modeler.util.combo.ComboBoxCellEditor;
-import org.syntax.jedit.JEditTextArea;
+import java.awt.Color;
+import java.awt.Font;
+import java.util.Arrays;
+import java.util.Collection;
public class DefaultWidgetFactory implements WidgetFactory {
@@ -85,6 +85,7 @@ public class DefaultWidgetFactory implements WidgetFactory {
* Creates cell editor for text field
*/
public DefaultCellEditor createCellEditor(JTextField textField) {
+ textField.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
return new CayenneCellEditor(textField);
}
@@ -95,6 +96,7 @@ public class DefaultWidgetFactory implements WidgetFactory {
* @param combo JComboBox to be used as editor component
*/
public TableCellEditor createCellEditor(JComboBox combo) {
+ combo.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
if (Boolean.TRUE.equals(combo
.getClientProperty(AutoCompletion.AUTOCOMPLETION_PROPERTY))) {
return new ComboBoxCellEditor(combo);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableCollectionTypeComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableCollectionTypeComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableCollectionTypeComboBoxEditor.java
deleted file mode 100644
index f43b095..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableCollectionTypeComboBoxEditor.java
+++ /dev/null
@@ -1,84 +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 org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
-
-import javax.swing.AbstractCellEditor;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JTable;
-import javax.swing.table.TableCellEditor;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-public class JTableCollectionTypeComboBoxEditor extends AbstractCellEditor implements TableCellEditor {
-
- private static final String COLLECTION_TYPE_MAP = "java.util.Map";
- private static final String COLLECTION_TYPE_SET = "java.util.Set";
- private static final String COLLECTION_TYPE_COLLECTION = "java.util.Collection";
- private static final String DEFAULT_COLLECTION_TYPE = "java.util.List";
- private static final int REL_COLLECTION_TYPE_COLUMN = 3;
-
- private ObjRelationshipTableModel model;
- private int row;
-
- public JTableCollectionTypeComboBoxEditor() {
- }
-
- @Override
- public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, final int row, final int column) {
- this.model = (ObjRelationshipTableModel) table.getModel();
- this.row = row;
-
- final JComboBox collectionTypeCombo = Application.getWidgetFactory().createComboBox(
- new Object[]{
- COLLECTION_TYPE_MAP,
- COLLECTION_TYPE_SET,
- COLLECTION_TYPE_COLLECTION,
- DEFAULT_COLLECTION_TYPE
- },
- false);
- if (model.getRelationship(row).isToMany()) {
- collectionTypeCombo.setEnabled(true);
- collectionTypeCombo.setSelectedItem(model.getRelationship(row).getCollectionType());
- } else {
- JLabel labelIfToOneRelationship = new JLabel();
- labelIfToOneRelationship.setEnabled(false);
- return labelIfToOneRelationship;
- }
- collectionTypeCombo.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Object selected = collectionTypeCombo.getSelectedItem();
- model.setUpdatedValueAt(selected, row, REL_COLLECTION_TYPE_COLUMN);
- table.repaint();
- }
- });
- return collectionTypeCombo;
- }
-
- @Override
- public Object getCellEditorValue() {
- return model.getValueAt(row, REL_COLLECTION_TYPE_COLUMN);
- }
- }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableCollectionTypeComboBoxRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableCollectionTypeComboBoxRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableCollectionTypeComboBoxRenderer.java
deleted file mode 100644
index 8c5d497..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableCollectionTypeComboBoxRenderer.java
+++ /dev/null
@@ -1,55 +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 org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
-
-import javax.swing.JLabel;
-import javax.swing.JTable;
-import javax.swing.table.TableCellRenderer;
-import java.awt.Component;
-import java.awt.Font;
-
-public class JTableCollectionTypeComboBoxRenderer implements TableCellRenderer {
-
- private ObjRelationshipTableModel model;
-
- public JTableCollectionTypeComboBoxRenderer() {
- }
-
- @Override
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- this.model = (ObjRelationshipTableModel) table.getModel();
- JLabel labelIfToOneRelationship = new JLabel();
- labelIfToOneRelationship.setEnabled(false);
- JLabel labelIfToManyRelationship = new JLabel((String) value);
- labelIfToManyRelationship.setEnabled(true);
- labelIfToManyRelationship.setFont(new Font("Verdana", Font.PLAIN, 12));
- if (value == null) {
- return labelIfToOneRelationship;
- }
- if (model.getRelationship(row).isToMany()) {
- return labelIfToManyRelationship;
- } else {
- return labelIfToOneRelationship;
- }
-
- }
- }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableMapKeyComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableMapKeyComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableMapKeyComboBoxEditor.java
deleted file mode 100644
index 3e1178a..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableMapKeyComboBoxEditor.java
+++ /dev/null
@@ -1,99 +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 org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
-
-import javax.swing.AbstractCellEditor;
-import javax.swing.JComboBox;
-import javax.swing.JTable;
-import javax.swing.table.TableCellEditor;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.List;
-
-public class JTableMapKeyComboBoxEditor extends AbstractCellEditor implements TableCellEditor {
-
- private static final String DEFAULT_MAP_KEY = "ID (default)";
- private static final String COLLECTION_TYPE_MAP = "java.util.Map";
- private static final int REL_MAP_KEY_COLUMN = 4;
-
- private List<String> mapKeys = new ArrayList<>();
- private ObjRelationshipTableModel model;
- private int row;
-
- public JTableMapKeyComboBoxEditor() {
- }
-
- private void initMapKeys() {
- mapKeys.clear();
- mapKeys.add(DEFAULT_MAP_KEY);
- /**
- * Object target can be null when selected target DbEntity has no
- * ObjEntities
- */
- ObjEntity objectTarget = model.getRelationship(row).getTargetEntity();
- if (objectTarget == null) {
- return;
- }
- for (ObjAttribute attribute : objectTarget.getAttributes()) {
- mapKeys.add(attribute.getName());
- }
- }
-
- @Override
- public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, final int row, final int column) {
- this.model = (ObjRelationshipTableModel) table.getModel();
- this.row = row;
- initMapKeys();
- final JComboBox mapKeysComboBox = Application.getWidgetFactory().createComboBox(
- mapKeys,
- false);
- if ((model.getRelationship(row).getCollectionType() == null)
- || (!model.getRelationship(row).getCollectionType().equals(COLLECTION_TYPE_MAP))) {
- JComboBox jComboBox = new JComboBox();
- jComboBox.setFocusable(false);
- jComboBox.setEnabled(false);
- return jComboBox;
- } else {
- mapKeysComboBox.setFocusable(true);
- mapKeysComboBox.setEnabled(true);
- }
- mapKeysComboBox.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Object selected = mapKeysComboBox.getSelectedItem();
- model.setUpdatedValueAt(selected, row, REL_MAP_KEY_COLUMN);
- }
- });
- mapKeysComboBox.setSelectedItem(model.getRelationship(row).getMapKey());
- return mapKeysComboBox;
- }
-
- @Override
- public Object getCellEditorValue() {
- return model.getValueAt(row, REL_MAP_KEY_COLUMN);
- }
- }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableMapKeyComboBoxRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableMapKeyComboBoxRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableMapKeyComboBoxRenderer.java
deleted file mode 100644
index 6f359a1..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTableMapKeyComboBoxRenderer.java
+++ /dev/null
@@ -1,58 +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 org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
-
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JTable;
-import javax.swing.table.TableCellRenderer;
-import java.awt.Component;
-import java.awt.Font;
-
-public class JTableMapKeyComboBoxRenderer implements TableCellRenderer {
-
- private static final String DEFAULT_MAP_KEY = "ID (default)";
- private static final String COLLECTION_TYPE_MAP = "java.util.Map";
-
- private ObjRelationshipTableModel model;
-
- public JTableMapKeyComboBoxRenderer() {
- }
-
- @Override
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- this.model = (ObjRelationshipTableModel) table.getModel();
- if ((model.getRelationship(row).getCollectionType() == null)
- || (!model.getRelationship(row).getCollectionType().equals(COLLECTION_TYPE_MAP))) {
- JComboBox jComboBox = new JComboBox();
- jComboBox.setFocusable(false);
- jComboBox.setEnabled(false);
- return jComboBox;
- }
- if (model.getRelationship(row).getMapKey() == null) {
- model.getRelationship(row).setMapKey(DEFAULT_MAP_KEY);
- }
- JLabel jLabel = new JLabel(model.getRelationship(row).getMapKey());
- jLabel.setFont(new Font("Verdana", Font.PLAIN, 12));
- return jLabel;
- }
- }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxEditor.java
new file mode 100644
index 0000000..2d4d16e
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxEditor.java
@@ -0,0 +1,104 @@
+/*****************************************************************
+ * 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 org.apache.cayenne.map.ObjAttribute;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.BorderFactory;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.table.TableCellEditor;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.List;
+
+public class MapKeyComboBoxEditor extends AbstractCellEditor implements TableCellEditor {
+
+ private static final String DEFAULT_MAP_KEY = "ID (default)";
+ private static final String COLLECTION_TYPE_MAP = "java.util.Map";
+ private static final int REL_MAP_KEY_COLUMN = 4;
+
+ private List<String> mapKeys = new ArrayList<>();
+ private ObjRelationshipTableModel model;
+ private int row;
+
+ private void initMapKeys() {
+ mapKeys.clear();
+ mapKeys.add(DEFAULT_MAP_KEY);
+ /**
+ * Object target can be null when selected target DbEntity has no
+ * ObjEntities
+ */
+ ObjEntity objectTarget = model.getRelationship(row).getTargetEntity();
+ if (objectTarget == null) {
+ return;
+ }
+ for (ObjAttribute attribute : objectTarget.getAttributes()) {
+ mapKeys.add(attribute.getName());
+ }
+ }
+
+ @Override
+ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, final int row, int column) {
+ this.model = (ObjRelationshipTableModel) table.getModel();
+ this.row = row;
+ initMapKeys();
+ final JComboBox mapKeysComboBox = Application.getWidgetFactory().createComboBox(
+ mapKeys,
+ false);
+ if ((model.getRelationship(row).getCollectionType() == null)
+ || (!model.getRelationship(row).getCollectionType().equals(COLLECTION_TYPE_MAP))) {
+ JLabel labelIfNotMapCollection = new JLabel();
+ labelIfNotMapCollection.setEnabled(false);
+ return labelIfNotMapCollection;
+ }
+ mapKeysComboBox.setFocusable(true);
+ mapKeysComboBox.setEnabled(true);
+
+ mapKeysComboBox.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Object selected = mapKeysComboBox.getSelectedItem();
+ model.setUpdatedValueAt(selected, row, REL_MAP_KEY_COLUMN);
+ }
+ });
+ mapKeysComboBox.setSelectedItem(model.getRelationship(row).getMapKey());
+
+ mapKeysComboBox.setFocusable(false);
+ mapKeysComboBox.setEditable(true);
+ ((JComponent) mapKeysComboBox.getEditor().getEditorComponent()).setBorder(null);
+ mapKeysComboBox.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
+
+ return mapKeysComboBox;
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+ return model.getValueAt(row, REL_MAP_KEY_COLUMN);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxRenderer.java
new file mode 100644
index 0000000..6664a58
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxRenderer.java
@@ -0,0 +1,57 @@
+/*****************************************************************
+ * 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 org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
+
+import javax.swing.BorderFactory;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.Component;
+import java.awt.Font;
+
+public class MapKeyComboBoxRenderer extends DefaultTableCellRenderer {
+
+ private static final String DEFAULT_MAP_KEY = "ID (default)";
+ private static final String COLLECTION_TYPE_MAP = "java.util.Map";
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
+ super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+
+ setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
+ ObjRelationshipTableModel model = (ObjRelationshipTableModel) table.getModel();
+ if ((model.getRelationship(row).getCollectionType() == null)
+ || (!model.getRelationship(row).getCollectionType().equals(COLLECTION_TYPE_MAP))) {
+
+ setEnabled(false);
+ setText("");
+ return this;
+ }
+ if (model.getRelationship(row).getMapKey() == null) {
+ model.getRelationship(row).setMapKey(DEFAULT_MAP_KEY);
+ }
+
+ setText(model.getRelationship(row).getMapKey());
+ setFont(new Font("Verdana", Font.PLAIN, 12));
+ setEnabled(true);
+ return this;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/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 ae4a639..051d8a4 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
@@ -24,8 +24,10 @@ import org.apache.cayenne.modeler.util.combo.AutoCompletion;
import org.apache.commons.lang.StringUtils;
import javax.swing.AbstractCellEditor;
+import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
+import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.text.JTextComponent;
@@ -71,7 +73,9 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
parsePathString(event.getKeyChar());
}
});
- AutoCompletion.enable(comboBoxPathChooser, false, true);
+ AutoCompletion.enable(comboBoxPathChooser, true, true);
+ ((JComponent) comboBoxPathChooser.getEditor().getEditorComponent()).setBorder(null);
+ comboBoxPathChooser.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
}
private void setComboModelAccordingToPath(String pathString) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/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 beae1e7..a68998e 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,50 +19,24 @@
package org.apache.cayenne.modeler.util;
import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
import javax.swing.JButton;
+import javax.swing.JLabel;
import javax.swing.JTable;
-import javax.swing.border.MatteBorder;
-import javax.swing.table.TableCellRenderer;
+import javax.swing.border.CompoundBorder;
+import javax.swing.table.DefaultTableCellRenderer;
import java.awt.Color;
import java.awt.Component;
-import java.awt.Insets;
-import java.util.Hashtable;
+import java.awt.Font;
-public class SortButtonRenderer extends JButton implements TableCellRenderer {
+public class SortButtonRenderer extends DefaultTableCellRenderer {
public static final int NONE = 0;
public static final int DOWN = 1;
public static final int UP = 2;
- private int pushedColumn;
- private Hashtable state;
- private JButton downButton, upButton;
-
- public SortButtonRenderer() {
- MatteBorder matteBorder = BorderFactory.createMatteBorder(0, 0, 1, 1, Color.gray);
- setBorder(matteBorder);
-
- pushedColumn = -1;
- state = new Hashtable();
-
- setMargin(new Insets(0, 0, 0, 0));
- setHorizontalTextPosition(CENTER);
- setIcon(new BlankIcon());
-
- downButton = new JButton();
-
- downButton.setBorder(matteBorder);
- downButton.setMargin(new Insets(0, 0, 0, 0));
- downButton.setHorizontalTextPosition(LEFT);
- downButton.setIcon(new BevelArrowIcon(BevelArrowIcon.DOWN, false, false));
- downButton.setPressedIcon(new BevelArrowIcon(BevelArrowIcon.DOWN, false, true));
-
- upButton = new JButton();
- upButton.setBorder(matteBorder);
- upButton.setMargin(new Insets(0, 0, 0, 0));
- upButton.setHorizontalTextPosition(LEFT);
- upButton.setIcon(new BevelArrowIcon(BevelArrowIcon.UP, false, false));
- }
+ private int currentState;
+ private int currentColumn;
public Component getTableCellRendererComponent(
JTable table,
@@ -71,51 +45,46 @@ public class SortButtonRenderer extends JButton implements TableCellRenderer {
boolean hasFocus,
int row,
int column) {
- JButton button = this;
- Object obj = state.get(new Integer(column));
+ super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
- if (obj != null) {
- if (((Integer) obj).intValue() == DOWN) {
- button = downButton;
+ if (column == currentColumn) {
+ if (currentState == DOWN) {
+ setIcon(new BevelArrowIcon(BevelArrowIcon.DOWN, false, false));
} else {
- button = upButton;
+ setIcon(new BevelArrowIcon(BevelArrowIcon.UP, false, false));
}
+ }else {
+ setIcon(new ImageIcon());
}
- button.setText((value == null) ? "" : value.toString());
- return button;
- }
- public void setPressedColumn(int col) {
- pushedColumn = col;
+ setText( ((value == null) ? "" : value.toString()));
+ setFont(new Font("Verdana", Font.BOLD , 13));
+ setHorizontalTextPosition(JLabel.LEFT);
+ setOpaque(true);
+ setBackground(new JButton().getBackground());
+ CompoundBorder compoundBorder = BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.GRAY, 1),
+ BorderFactory.createEmptyBorder(0, 4, 0, 0));
+ setBorder(compoundBorder);
+ return this;
}
public void setSelectedColumn(int col, boolean isAscOrder) {
- if (col < 0)
+ if (col < 0) {
return;
- Integer value = null;
+ }
//shows the direction of ordering
if (isAscOrder) {
- value = new Integer(DOWN);
+ currentState = DOWN;
} else {
- value = new Integer(UP);
+ currentState = UP;
}
-
- state.clear();
- state.put(new Integer(col), value);
+ currentColumn = col;
}
public int getState(int col) {
- int retValue;
- Object obj = state.get(new Integer(col));
- if (obj == null) {
- retValue = NONE;
- } else {
- if (((Integer) obj).intValue() == DOWN) {
- retValue = DOWN;
- } else {
- retValue = UP;
- }
+ if (col == currentColumn){
+ return currentState;
}
- return retValue;
+ return NONE;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7e8e07c7/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java
index 9c8a371..86ec2b5 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java
@@ -280,12 +280,12 @@ public class AutoCompletion implements FocusListener, KeyListener, Runnable {
private void suggestionListScrolling(){
Component c = suggestionList.getComponent(0);
if (c instanceof JScrollPane) {
- double height = suggestionList.getPreferredSize().getHeight();
int itemCount = suggestionList.getItemCount();
int selectedIndex = suggestionList.getSelectedIndex();
- double scrollValue = Math.ceil(height*selectedIndex/itemCount);
JScrollPane scrollPane = (JScrollPane) c;
JScrollBar scrollBar = scrollPane.getVerticalScrollBar();
+ double height = scrollBar.getMaximum();
+ double scrollValue = Math.ceil(height*selectedIndex/itemCount);
scrollBar.setValue((int) scrollValue);
}
}
[3/4] cayenne git commit: fix scroll. change tool tip text. fix
header renderer. fix autocompletion
Posted by sk...@apache.org.
fix scroll. change tool tip text. fix header renderer. fix autocompletion
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/16ee5203
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/16ee5203
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/16ee5203
Branch: refs/heads/master
Commit: 16ee52034887dbd0739df6943fa3f5908b190829
Parents: c52fac6
Author: AlexandrShestak <sh...@mail.ru>
Authored: Tue Dec 15 10:42:20 2015 +0300
Committer: AlexandrShestak <sh...@mail.ru>
Committed: Tue Dec 15 10:42:20 2015 +0300
----------------------------------------------------------------------
.../editor/ObjEntityRelationshipPanel.java | 2 +-
.../util/DbRelationshipPathComboBoxEditor.java | 2 +-
.../util/PathChooserComboBoxCellEditor.java | 14 +++++++++++++-
.../modeler/util/SortButtonRenderer.java | 10 ++++------
.../modeler/util/combo/AutoCompletion.java | 20 +++++---------------
5 files changed, 24 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/16ee5203/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
index fd08bde..41061e3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
@@ -321,7 +321,7 @@ public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDispl
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
- setToolTipText("To choose relationship press enter two times. \n To choose next relationship press dot.");
+ setToolTipText("To choose relationship press enter two times.To choose next relationship press dot.");
return this;
}
});
http://git-wip-us.apache.org/repos/asf/cayenne/blob/16ee5203/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
index 8a5ca0a..a3e6935 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
@@ -69,7 +69,7 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
comboBoxPathChooser.setSelectedItem(((ObjRelationshipTableModel) model).getRelationship(row).getDbRelationshipPath());
enterPressedCount = 0;
- comboBoxPathChooser.setToolTipText("To choose relationship press enter two times. \n To choose next relationship press dot.");
+ comboBoxPathChooser.setToolTipText("To choose relationship press enter two times.To choose next relationship press dot.");
JTextComponent textEditor = (JTextComponent) (comboBoxPathChooser).
getEditor().getEditorComponent();
textEditor.addFocusListener(this);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/16ee5203/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 07633da..2c5509b 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
@@ -41,6 +41,8 @@ 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;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
@@ -51,7 +53,7 @@ import java.util.regex.Pattern;
* This class used as cell editor, when you need to
* choose path in comboBox and use autocompletion.
*/
-public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor implements TableCellEditor {
+public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
protected JComboBox comboBoxPathChooser;
protected int previousEmbeddedLevel = 0;
@@ -87,6 +89,7 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
((JComponent) comboBoxPathChooser.getEditor().getEditorComponent()).setBorder(null);
comboBoxPathChooser.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
comboBoxPathChooser.setRenderer(new PathChooserComboBoxCellRenderer());
+ comboBoxPathChooser.addActionListener(this);
}
private void setComboModelAccordingToPath(String pathString) {
@@ -204,6 +207,15 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
return currentNodeChildren;
}
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ //for some reason comboBoxPathChooser don't load selected item text, so we made it by hand
+ if (comboBoxPathChooser.getSelectedIndex() != (-1)) {
+ ((JTextComponent) (comboBoxPathChooser).
+ getEditor().getEditorComponent()).setText(comboBoxPathChooser.getSelectedItem().toString());
+ }
+ }
+
private final class PathChooserComboBoxCellRenderer extends DefaultListCellRenderer {
private final ImageIcon rightArrow = ModelerUtil.buildIcon("scroll_right.gif");
http://git-wip-us.apache.org/repos/asf/cayenne/blob/16ee5203/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 a68998e..1cab21a 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
@@ -20,7 +20,6 @@ package org.apache.cayenne.modeler.util;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
-import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.border.CompoundBorder;
@@ -58,12 +57,11 @@ public class SortButtonRenderer extends DefaultTableCellRenderer {
}
setText( ((value == null) ? "" : value.toString()));
- setFont(new Font("Verdana", Font.BOLD , 13));
+ setFont(new Font("Verdana", Font.BOLD, 12));
setHorizontalTextPosition(JLabel.LEFT);
- setOpaque(true);
- setBackground(new JButton().getBackground());
- CompoundBorder compoundBorder = BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.GRAY, 1),
- BorderFactory.createEmptyBorder(0, 4, 0, 0));
+ CompoundBorder compoundBorder = BorderFactory.createCompoundBorder(
+ BorderFactory.createMatteBorder(0, 0, 1, 1, Color.GRAY),
+ BorderFactory.createEmptyBorder(0, 5, 0, 0));
setBorder(compoundBorder);
return this;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/16ee5203/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java
index 86ec2b5..e5839da 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/combo/AutoCompletion.java
@@ -20,11 +20,9 @@
package org.apache.cayenne.modeler.util.combo;
import javax.swing.JComboBox;
-import javax.swing.JScrollBar;
-import javax.swing.JScrollPane;
+import javax.swing.JList;
import javax.swing.SwingUtilities;
import javax.swing.text.JTextComponent;
-import java.awt.Component;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
@@ -156,8 +154,6 @@ public class AutoCompletion implements FocusListener, KeyListener, Runnable {
//scroll doesn't work in suggestionList..so we will scroll manually
suggestionListScrolling();
-
- textEditor.requestFocus();
}
private void processKeyPressedWhenSuggestionListIsInvisible(KeyEvent e){
@@ -274,20 +270,14 @@ public class AutoCompletion implements FocusListener, KeyListener, Runnable {
comboBox.setSelectedIndex(next);
}
}
+ textEditor.requestFocus();
}
}
private void suggestionListScrolling(){
- Component c = suggestionList.getComponent(0);
- if (c instanceof JScrollPane) {
- int itemCount = suggestionList.getItemCount();
- int selectedIndex = suggestionList.getSelectedIndex();
- JScrollPane scrollPane = (JScrollPane) c;
- JScrollBar scrollBar = scrollPane.getVerticalScrollBar();
- double height = scrollBar.getMaximum();
- double scrollValue = Math.ceil(height*selectedIndex/itemCount);
- scrollBar.setValue((int) scrollValue);
- }
+ JList list = suggestionList.getList();
+ int selectedIndex = suggestionList.getSelectedIndex();
+ list.ensureIndexIsVisible(selectedIndex);
}
}
[4/4] cayenne git commit: remove map key and collection type from
ObjEntityRelationshiPanel
Posted by sk...@apache.org.
remove map key and collection type from ObjEntityRelationshiPanel
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/1448a194
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/1448a194
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/1448a194
Branch: refs/heads/master
Commit: 1448a194c6f81b566950d54189d379cd96c45fca
Parents: 16ee520
Author: AlexandrShestak <sh...@mail.ru>
Authored: Tue Dec 15 16:42:29 2015 +0300
Committer: AlexandrShestak <sh...@mail.ru>
Committed: Tue Dec 15 16:42:29 2015 +0300
----------------------------------------------------------------------
.../editor/ObjEntityRelationshipPanel.java | 30 +++---
.../editor/ObjRelationshipTableModel.java | 47 +++------
.../util/CollectionTypeComboBoxEditor.java | 90 ----------------
.../util/CollectionTypeComboBoxRenderer.java | 53 ----------
.../util/DbAttributePathComboBoxEditor.java | 5 +
.../modeler/util/MapKeyComboBoxEditor.java | 104 -------------------
.../modeler/util/MapKeyComboBoxRenderer.java | 57 ----------
7 files changed, 36 insertions(+), 350 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1448a194/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
index 41061e3..a9900c4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityRelationshipPanel.java
@@ -41,24 +41,32 @@ import org.apache.cayenne.modeler.pref.TableColumnPreferences;
import org.apache.cayenne.modeler.util.CayenneTable;
import org.apache.cayenne.modeler.util.CellRenderers;
import org.apache.cayenne.modeler.util.DbRelationshipPathComboBoxEditor;
-import org.apache.cayenne.modeler.util.CollectionTypeComboBoxEditor;
-import org.apache.cayenne.modeler.util.CollectionTypeComboBoxRenderer;
-import org.apache.cayenne.modeler.util.MapKeyComboBoxEditor;
-import org.apache.cayenne.modeler.util.MapKeyComboBoxRenderer;
import org.apache.cayenne.modeler.util.ModelerUtil;
import org.apache.cayenne.modeler.util.PanelFactory;
import org.apache.cayenne.modeler.util.UIUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.*;
+import javax.swing.BorderFactory;
+import javax.swing.DefaultCellEditor;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
-import java.awt.*;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;
@@ -338,16 +346,6 @@ public class ObjEntityRelationshipPanel extends JPanel implements ObjEntityDispl
col.setCellEditor(Application.getWidgetFactory().createCellEditor(
deleteRulesCombo));
- col = table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_COLLECTION_TYPE);
-
- col.setCellEditor(new CollectionTypeComboBoxEditor());
- col.setCellRenderer(new CollectionTypeComboBoxRenderer());
-
- col = table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_MAP_KEY);
-
- col.setCellEditor(new MapKeyComboBoxEditor());
- col.setCellRenderer(new MapKeyComboBoxRenderer());
-
tablePreferences.bind(
table,
null,
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1448a194/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
index cfc7596..e05608d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
@@ -40,12 +40,10 @@ public class ObjRelationshipTableModel extends CayenneTableModel {
public static final int REL_NAME = 0;
public static final int REL_TARGET = 1;
public static final int REL_TARGET_PATH = 2;
- public static final int REL_COLLECTION_TYPE = 3;
- public static final int REL_MAP_KEY = 4;
- public static final int REL_SEMANTICS = 5;
- public static final int REL_DELETE_RULE = 6;
- public static final int REL_LOCKING = 7;
- public static final int COLUMN_COUNT = 8;
+ public static final int REL_SEMANTICS = 3;
+ public static final int REL_DELETE_RULE = 4;
+ public static final int REL_LOCKING = 5;
+ public static final int COLUMN_COUNT = 6;
private ObjEntity entity;
@@ -92,10 +90,6 @@ public class ObjRelationshipTableModel extends CayenneTableModel {
return "Semantics";
case REL_DELETE_RULE:
return "Delete Rule";
- case REL_COLLECTION_TYPE:
- return "Collection Type";
- case REL_MAP_KEY:
- return "Map Key";
case REL_TARGET_PATH:
return "DbRelationship Path";
default:
@@ -133,13 +127,6 @@ public class ObjRelationshipTableModel extends CayenneTableModel {
return getSemantics(relationship);
} else if (column == REL_DELETE_RULE) {
return DeleteRule.deleteRuleName(relationship.getDeleteRule());
- } else if (column == REL_COLLECTION_TYPE) {
- if (!relationship.isToMany()) {
- return null;
- }
- return relationship.getCollectionType();
- } else if (column == REL_MAP_KEY) {
- return relationship.getMapKey();
} else if (column == REL_TARGET_PATH) {
return relationship.getDbRelationshipPath();
} else {
@@ -153,6 +140,18 @@ public class ObjRelationshipTableModel extends CayenneTableModel {
if (relationship.isReadOnly()) {
semantics.append(", read-only");
}
+ if (relationship.isToMany()) {
+ String collection = "list";
+ if (relationship.getCollectionType() != null) {
+ int dot = relationship.getCollectionType().lastIndexOf('.');
+ collection = relationship
+ .getCollectionType()
+ .substring(dot + 1)
+ .toLowerCase();
+ }
+
+ semantics.append(", " + collection);
+ }
return semantics.toString();
}
@@ -196,12 +195,6 @@ public class ObjRelationshipTableModel extends CayenneTableModel {
relationship.setUsedForLocking((value instanceof Boolean)
&& ((Boolean) value).booleanValue());
fireTableCellUpdated(row, column);
- } else if (column == REL_COLLECTION_TYPE) {
- relationship.setCollectionType((String) value);
- fireTableCellUpdated(row, column);
- } else if (column == REL_MAP_KEY) {
- relationship.setMapKey((String) value);
- fireTableCellUpdated(row, column);
} else if (column == REL_TARGET_PATH) {
relationship.setDbRelationshipPath((String) value);
fireTableCellUpdated(row, column);
@@ -269,8 +262,6 @@ public class ObjRelationshipTableModel extends CayenneTableModel {
sortByElementProperty("usedForLocking", isAscent);
break;
case REL_SEMANTICS:
- case REL_COLLECTION_TYPE:
- case REL_MAP_KEY:
case REL_DELETE_RULE:
case REL_TARGET_PATH:
Collections.sort(objectList, new ObjRelationshipTableComparator(sortCol));
@@ -302,11 +293,7 @@ public class ObjRelationshipTableModel extends CayenneTableModel {
return 1;
}
- switch(sortCol){
- case REL_COLLECTION_TYPE:
- return compareColumnsData(o1.getCollectionType(), o2.getCollectionType());
- case REL_MAP_KEY:
- return compareColumnsData(o1.getMapKey(), o2.getMapKey());
+ switch(sortCol) {
case REL_SEMANTICS:
return compareColumnsData(getSemantics(o1), getSemantics(o2));
case REL_DELETE_RULE:
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1448a194/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxEditor.java
deleted file mode 100644
index 1ea13ed..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxEditor.java
+++ /dev/null
@@ -1,90 +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 org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
-
-import javax.swing.AbstractCellEditor;
-import javax.swing.BorderFactory;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JTable;
-import javax.swing.table.TableCellEditor;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-public class CollectionTypeComboBoxEditor extends AbstractCellEditor implements TableCellEditor {
-
- private static final String COLLECTION_TYPE_MAP = "java.util.Map";
- private static final String COLLECTION_TYPE_SET = "java.util.Set";
- private static final String COLLECTION_TYPE_COLLECTION = "java.util.Collection";
- private static final String DEFAULT_COLLECTION_TYPE = "java.util.List";
- private static final int REL_COLLECTION_TYPE_COLUMN = 3;
-
- private ObjRelationshipTableModel model;
- private int row;
-
- @Override
- public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, final int row, final int column) {
-
- this.model = (ObjRelationshipTableModel) table.getModel();
- this.row = row;
-
- final JComboBox collectionTypeCombo = Application.getWidgetFactory().createComboBox(
- new Object[]{
- COLLECTION_TYPE_MAP,
- COLLECTION_TYPE_SET,
- COLLECTION_TYPE_COLLECTION,
- DEFAULT_COLLECTION_TYPE
- },
- false);
- if (model.getRelationship(row).isToMany()) {
- collectionTypeCombo.setEnabled(true);
- collectionTypeCombo.setSelectedItem(model.getRelationship(row).getCollectionType());
- } else {
- JLabel labelIfToOneRelationship = new JLabel();
- labelIfToOneRelationship.setEnabled(false);
- return labelIfToOneRelationship;
- }
- collectionTypeCombo.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Object selected = collectionTypeCombo.getSelectedItem();
- model.setUpdatedValueAt(selected, row, REL_COLLECTION_TYPE_COLUMN);
- table.repaint();
- }
- });
-
- collectionTypeCombo.setFocusable(false);
- collectionTypeCombo.setEditable(true);
- ((JComponent) collectionTypeCombo.getEditor().getEditorComponent()).setBorder(null);
- collectionTypeCombo.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
-
- return collectionTypeCombo;
- }
-
- @Override
- public Object getCellEditorValue() {
- return model.getValueAt(row, REL_COLLECTION_TYPE_COLUMN);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1448a194/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxRenderer.java
deleted file mode 100644
index d1a69b0..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CollectionTypeComboBoxRenderer.java
+++ /dev/null
@@ -1,53 +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 org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
-
-import javax.swing.BorderFactory;
-import javax.swing.JTable;
-import javax.swing.table.DefaultTableCellRenderer;
-import java.awt.Component;
-import java.awt.Font;
-
-public class CollectionTypeComboBoxRenderer extends DefaultTableCellRenderer {
-
- @Override
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-
- setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
- if (value == null) {
- setEnabled(false);
- return this;
- }
- if (((ObjRelationshipTableModel) table.getModel()).getRelationship(row).isToMany()) {
- setFocusable(false);
- setEnabled(true);
- setText((String) value);
- setFont(new Font("Verdana", Font.PLAIN, 12));
- return this;
- } else {
- setEnabled(false);
- return this;
- }
- }
-}
-
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1448a194/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java
index 5eda3d0..f1cca8d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java
@@ -44,6 +44,7 @@ public class DbAttributePathComboBoxEditor extends PathChooserComboBoxCellEditor
private static final int DB_ATTRIBUTE_PATH_COLUMN = 3;
+ private String savePath;
private ObjAttributeTableModel model;
@Override
@@ -70,6 +71,7 @@ public class DbAttributePathComboBoxEditor extends PathChooserComboBoxCellEditor
protected void initializeCombo(CayenneTableModel model, int row, final JTable table) {
super.initializeCombo(model, row, table);
comboBoxPathChooser.setSelectedItem(((ObjAttributeTableModel) model).getAttribute(row).getValue().getDbAttributePath());
+ savePath = this.model.getAttribute(row).getValue().getDbAttributePath();
}
@@ -103,6 +105,9 @@ public class DbAttributePathComboBoxEditor extends PathChooserComboBoxCellEditor
if (table.getCellEditor() != null) {
table.getCellEditor().stopCellEditing();
+ if (dbAttributePath.equals(savePath)) {
+ return;
+ }
model.setUpdatedValueAt(dbAttributePath, row, DB_ATTRIBUTE_PATH_COLUMN);
model.getAttribute(row).getValue().setDbAttributePath(dbAttributePath);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1448a194/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxEditor.java
deleted file mode 100644
index 2d4d16e..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxEditor.java
+++ /dev/null
@@ -1,104 +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 org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
-
-import javax.swing.AbstractCellEditor;
-import javax.swing.BorderFactory;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JTable;
-import javax.swing.table.TableCellEditor;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.List;
-
-public class MapKeyComboBoxEditor extends AbstractCellEditor implements TableCellEditor {
-
- private static final String DEFAULT_MAP_KEY = "ID (default)";
- private static final String COLLECTION_TYPE_MAP = "java.util.Map";
- private static final int REL_MAP_KEY_COLUMN = 4;
-
- private List<String> mapKeys = new ArrayList<>();
- private ObjRelationshipTableModel model;
- private int row;
-
- private void initMapKeys() {
- mapKeys.clear();
- mapKeys.add(DEFAULT_MAP_KEY);
- /**
- * Object target can be null when selected target DbEntity has no
- * ObjEntities
- */
- ObjEntity objectTarget = model.getRelationship(row).getTargetEntity();
- if (objectTarget == null) {
- return;
- }
- for (ObjAttribute attribute : objectTarget.getAttributes()) {
- mapKeys.add(attribute.getName());
- }
- }
-
- @Override
- public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, final int row, int column) {
- this.model = (ObjRelationshipTableModel) table.getModel();
- this.row = row;
- initMapKeys();
- final JComboBox mapKeysComboBox = Application.getWidgetFactory().createComboBox(
- mapKeys,
- false);
- if ((model.getRelationship(row).getCollectionType() == null)
- || (!model.getRelationship(row).getCollectionType().equals(COLLECTION_TYPE_MAP))) {
- JLabel labelIfNotMapCollection = new JLabel();
- labelIfNotMapCollection.setEnabled(false);
- return labelIfNotMapCollection;
- }
- mapKeysComboBox.setFocusable(true);
- mapKeysComboBox.setEnabled(true);
-
- mapKeysComboBox.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Object selected = mapKeysComboBox.getSelectedItem();
- model.setUpdatedValueAt(selected, row, REL_MAP_KEY_COLUMN);
- }
- });
- mapKeysComboBox.setSelectedItem(model.getRelationship(row).getMapKey());
-
- mapKeysComboBox.setFocusable(false);
- mapKeysComboBox.setEditable(true);
- ((JComponent) mapKeysComboBox.getEditor().getEditorComponent()).setBorder(null);
- mapKeysComboBox.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
-
- return mapKeysComboBox;
- }
-
- @Override
- public Object getCellEditorValue() {
- return model.getValueAt(row, REL_MAP_KEY_COLUMN);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1448a194/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxRenderer.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxRenderer.java
deleted file mode 100644
index 6664a58..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/MapKeyComboBoxRenderer.java
+++ /dev/null
@@ -1,57 +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 org.apache.cayenne.modeler.editor.ObjRelationshipTableModel;
-
-import javax.swing.BorderFactory;
-import javax.swing.JTable;
-import javax.swing.table.DefaultTableCellRenderer;
-import java.awt.Component;
-import java.awt.Font;
-
-public class MapKeyComboBoxRenderer extends DefaultTableCellRenderer {
-
- private static final String DEFAULT_MAP_KEY = "ID (default)";
- private static final String COLLECTION_TYPE_MAP = "java.util.Map";
-
- @Override
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-
- setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
- ObjRelationshipTableModel model = (ObjRelationshipTableModel) table.getModel();
- if ((model.getRelationship(row).getCollectionType() == null)
- || (!model.getRelationship(row).getCollectionType().equals(COLLECTION_TYPE_MAP))) {
-
- setEnabled(false);
- setText("");
- return this;
- }
- if (model.getRelationship(row).getMapKey() == null) {
- model.getRelationship(row).setMapKey(DEFAULT_MAP_KEY);
- }
-
- setText(model.getRelationship(row).getMapKey());
- setFont(new Font("Verdana", Font.PLAIN, 12));
- setEnabled(true);
- return this;
- }
-}
\ No newline at end of file
[2/4] cayenne git commit: fix autocompletion problems
Posted by sk...@apache.org.
fix autocompletion problems
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/c52fac63
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/c52fac63
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/c52fac63
Branch: refs/heads/master
Commit: c52fac637206fd053c1710bf777ae88d6f3eb9c5
Parents: 7e8e07c
Author: AlexandrShestak <sh...@mail.ru>
Authored: Mon Dec 14 16:15:13 2015 +0300
Committer: AlexandrShestak <sh...@mail.ru>
Committed: Mon Dec 14 16:15:13 2015 +0300
----------------------------------------------------------------------
.../modeler/editor/ObjAttributeTableModel.java | 2 +-
.../editor/ObjRelationshipTableModel.java | 4 +-
.../util/DbAttributePathComboBoxEditor.java | 32 +---------
.../util/DbRelationshipPathComboBoxEditor.java | 64 ++++++++++++++------
.../util/PathChooserComboBoxCellEditor.java | 60 ++++++++++++++----
5 files changed, 101 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c52fac63/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
index 16db808..8881829 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
@@ -158,7 +158,7 @@ public class ObjAttributeTableModel extends CayenneTableModel<ObjAttributeWrappe
case OBJ_ATTRIBUTE_TYPE:
return "Java Type";
case DB_ATTRIBUTE:
- return "DbAttributePath";
+ return "DbAttribute Path";
case DB_ATTRIBUTE_TYPE:
return "DB Type";
case LOCKING:
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c52fac63/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
index eab255b..cfc7596 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjRelationshipTableModel.java
@@ -95,9 +95,9 @@ public class ObjRelationshipTableModel extends CayenneTableModel {
case REL_COLLECTION_TYPE:
return "Collection Type";
case REL_MAP_KEY:
- return "Map key";
+ return "Map Key";
case REL_TARGET_PATH:
- return "DbRelationshipPath";
+ return "DbRelationship Path";
default:
return null;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c52fac63/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java
index 14cb155..5eda3d0 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbAttributePathComboBoxEditor.java
@@ -30,14 +30,10 @@ import org.apache.cayenne.util.CayenneMapEntry;
import org.apache.commons.lang.StringUtils;
import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
-import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.text.JTextComponent;
-import java.awt.Color;
import java.awt.Component;
-import java.awt.Font;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
@@ -73,29 +69,7 @@ public class DbAttributePathComboBoxEditor extends PathChooserComboBoxCellEditor
@Override
protected void initializeCombo(CayenneTableModel model, int row, final JTable table) {
super.initializeCombo(model, row, table);
- ((JTextComponent) (comboBoxPathChooser).
- getEditor().getEditorComponent()).
- setText(((ObjAttributeTableModel) model).getAttribute(row).getValue().getDbAttributePath());
- comboBoxPathChooser.setRenderer(new DefaultListCellRenderer() {
- @Override
- public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
- Object currentNode = getCurrentNode((String) value);
- JLabel jLabel = new JLabel();
- jLabel.setFont(new Font("Verdana", Font.PLAIN, 13));
- if (isSelected) {
- jLabel.setOpaque(true);
- jLabel.setBackground(new Color(0xB4B4B4));
- }
- if (currentNode instanceof DbRelationship) {
- if (((String) value).charAt(((String) value).length() - 1) != '.') {
- jLabel.setText(ModelerUtil.getObjectName(value) + " ->");
- }
- return jLabel;
- }
- jLabel.setText(ModelerUtil.getObjectName(value));
- return jLabel;
- }
- });
+ comboBoxPathChooser.setSelectedItem(((ObjAttributeTableModel) model).getAttribute(row).getValue().getDbAttributePath());
}
@@ -129,8 +103,8 @@ public class DbAttributePathComboBoxEditor extends PathChooserComboBoxCellEditor
if (table.getCellEditor() != null) {
table.getCellEditor().stopCellEditing();
- model.getAttribute(row).setDbAttributePath(dbAttributePath);
model.setUpdatedValueAt(dbAttributePath, row, DB_ATTRIBUTE_PATH_COLUMN);
+ model.getAttribute(row).getValue().setDbAttributePath(dbAttributePath);
}
}else if (ModelerUtil.getObjectName(currentNode).equals(lastStringInPath) &&
currentNode instanceof DbRelationship) {
@@ -143,9 +117,9 @@ public class DbAttributePathComboBoxEditor extends PathChooserComboBoxCellEditor
getEditor().getEditorComponent()).setText(dbAttributePath);
}
List<String> currentNodeChildren = new ArrayList<>();
- currentNodeChildren.add(dbAttributePath);
currentNodeChildren.addAll(getChildren(getCurrentNode(dbAttributePath), dbAttributePath));
comboBoxPathChooser.setModel(new DefaultComboBoxModel(currentNodeChildren.toArray()));
+ comboBoxPathChooser.setSelectedItem(dbAttributePath);
comboBoxPathChooser.showPopup();
comboBoxPathChooser.setPopupVisible(true);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c52fac63/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
index 829f874..8a5ca0a 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DbRelationshipPathComboBoxEditor.java
@@ -28,22 +28,24 @@ import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.text.JTextComponent;
import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
import java.util.Collection;
import java.util.regex.Pattern;
-public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEditor implements ActionListener {
+public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEditor implements FocusListener {
private static final int REL_TARGET_PATH_COLUMN = 2;
private static int enterPressedCount = 0;
-
+ private JTable table;
+ private String savePath;
private ObjRelationshipTableModel model;
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
this.model = (ObjRelationshipTableModel) table.getModel();
this.row = row;
+ this.table = table;
treeModel = createTreeModelForComboBox(row);
if (treeModel == null) {
return new JLabel("You should select table for this ObjectEntity");
@@ -64,19 +66,21 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
@Override
protected void initializeCombo(CayenneTableModel model, int row, final JTable table) {
super.initializeCombo(model, row, table);
- ((JTextComponent) (comboBoxPathChooser).
- getEditor().getEditorComponent()).
- setText(((ObjRelationshipTableModel) model).getRelationship(row).getDbRelationshipPath());
+ comboBoxPathChooser.setSelectedItem(((ObjRelationshipTableModel) model).getRelationship(row).getDbRelationshipPath());
enterPressedCount = 0;
- comboBoxPathChooser.addActionListener(this);
comboBoxPathChooser.setToolTipText("To choose relationship press enter two times. \n To choose next relationship press dot.");
+ JTextComponent textEditor = (JTextComponent) (comboBoxPathChooser).
+ getEditor().getEditorComponent();
+ textEditor.addFocusListener(this);
+ savePath = this.model.getRelationship(row).getDbRelationshipPath();
}
@Override
protected void enterPressed(JTable table) {
String dbRelationshipPath = ((JTextComponent) (comboBoxPathChooser).
getEditor().getEditorComponent()).getText();
+ changeObjEntity(dbRelationshipPath);
Object currentNode = getCurrentNode(dbRelationshipPath);
String[] pathStrings = dbRelationshipPath.split(Pattern.quote("."));
String lastStringInPath = pathStrings[pathStrings.length - 1];
@@ -88,7 +92,9 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
if (table.getCellEditor() != null) {
table.getCellEditor().stopCellEditing();
- model.getRelationship(row).setDbRelationshipPath(dbRelationshipPath);
+ if (dbRelationshipPath.equals(savePath)) {
+ return;
+ }
//we need object target to save it in model
DbEntity lastEntity = ((DbRelationship) currentNode).getTargetEntity();
@@ -96,17 +102,27 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
getDataMap().getMappedEntities(lastEntity);
ObjEntity objectTarget = objEntities.isEmpty() ? null : objEntities.iterator().next();
model.getRelationship(row).setTargetEntityName(objectTarget);
+ model.setUpdatedValueAt(dbRelationshipPath, row, REL_TARGET_PATH_COLUMN);
+ model.getRelationship(row).setDbRelationshipPath(dbRelationshipPath);
+ model.getRelationship(row).setMapKey(null);
}
table.repaint();
- } else {
- enterPressedCount = 1;
}
+ enterPressedCount = 1;
}
}
@Override
+ protected void processDotEntered() {
+ super.processDotEntered();
+ }
+
+ @Override
protected void parsePathString(char lastEnteredCharacter) {
super.parsePathString(lastEnteredCharacter);
+ String dbRelationshipPath = ((JTextComponent) (comboBoxPathChooser).
+ getEditor().getEditorComponent()).getText();
+ changeObjEntity(dbRelationshipPath);
enterPressedCount = 0;
}
@@ -138,14 +154,26 @@ public class DbRelationshipPathComboBoxEditor extends PathChooserComboBoxCellEdi
return pathString.replaceAll(lastStringInPath + '$', "");
}
+ private void changeObjEntity(String path){
+ Object currentNode = getCurrentNode(path);
+ if (currentNode instanceof DbEntity){
+ return;
+ }
+ DbEntity lastEntity = ((DbRelationship) currentNode).getTargetEntity();
+ Collection<ObjEntity> objEntities = ((DbRelationship) currentNode).getTargetEntity().
+ getDataMap().getMappedEntities(lastEntity);
+ ObjEntity objectTarget = objEntities.isEmpty() ? null : objEntities.iterator().next();
+ model.getRelationship(row).setTargetEntityName(objectTarget);
+ table.repaint();
+ }
+
@Override
- public void actionPerformed(ActionEvent e) {
- model.getRelationship(row).setMapKey(null);
+ public void focusGained(FocusEvent focusEvent) {
+ }
- //for some reason dbRelationshipPathCombo don't load selected item text, so we made it by hand
- if (comboBoxPathChooser.getSelectedIndex() != (-1)) {
- ((JTextComponent) (comboBoxPathChooser).
- getEditor().getEditorComponent()).setText(comboBoxPathChooser.getSelectedItem().toString());
- }
+ @Override
+ public void focusLost(FocusEvent focusEvent) {
+ String path = model.getRelationship(row).getDbRelationshipPath();
+ changeObjEntity(path);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c52fac63/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 051d8a4..07633da 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
@@ -19,6 +19,7 @@
package org.apache.cayenne.modeler.util;
+import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.util.combo.AutoCompletion;
import org.apache.commons.lang.StringUtils;
@@ -26,11 +27,20 @@ import org.apache.commons.lang.StringUtils;
import javax.swing.AbstractCellEditor;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
import javax.swing.JTable;
+import javax.swing.ListCellRenderer;
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.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
@@ -76,24 +86,24 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
AutoCompletion.enable(comboBoxPathChooser, true, true);
((JComponent) comboBoxPathChooser.getEditor().getEditorComponent()).setBorder(null);
comboBoxPathChooser.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
+ comboBoxPathChooser.setRenderer(new PathChooserComboBoxCellRenderer());
}
private void setComboModelAccordingToPath(String pathString) {
List<String> currentNodeChildren = new ArrayList<>();
- currentNodeChildren.add(pathString);
currentNodeChildren.addAll(getChildren(getCurrentNode(pathString), pathString));
comboBoxPathChooser.setModel(new DefaultComboBoxModel(currentNodeChildren.toArray()));
+ comboBoxPathChooser.setSelectedItem(pathString);
comboBoxPathChooser.showPopup();
comboBoxPathChooser.setPopupVisible(true);
}
protected void parsePathString(char lastEnteredCharacter) {
JTextComponent editorComponent = (JTextComponent) (comboBoxPathChooser).getEditor().getEditorComponent();
-
String pathString = editorComponent.getText();
if (pathString != null && pathString.isEmpty()) {
setComboModelAccordingToPath("");
- previousEmbeddedLevel = StringUtils.countMatches(pathString, ".");
+ previousEmbeddedLevel = 0;
return;
}
@@ -106,19 +116,19 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
int currentEmbeddedLevel = StringUtils.countMatches(pathString, ".");
if (previousEmbeddedLevel != currentEmbeddedLevel) {
previousEmbeddedLevel = currentEmbeddedLevel;
- List<String> currentNodeChildren = new ArrayList<>();
String[] pathStrings = pathString.split(Pattern.quote("."));
String lastStringInPath = pathStrings[pathStrings.length - 1];
String saveDbAttributePath = pathString;
pathString = pathString.replaceAll(lastStringInPath + "$", "");
+ List<String> currentNodeChildren = new ArrayList<>();
currentNodeChildren.addAll(getChildren(getCurrentNode(pathString), pathString));
comboBoxPathChooser.setModel(new DefaultComboBoxModel(currentNodeChildren.toArray()));
- editorComponent.setText(saveDbAttributePath);
+ comboBoxPathChooser.setSelectedItem(saveDbAttributePath);
return;
}
}
- private void processDotEntered() {
+ protected void processDotEntered() {
JTextComponent editorComponent = (JTextComponent) (comboBoxPathChooser).getEditor().getEditorComponent();
String dbAttributePath = editorComponent.getText();
@@ -142,22 +152,22 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
//previous root is treeModel.getRoot()
dbAttributePathForPreviousNode = "";
} else {
- dbAttributePathForPreviousNode = dbAttributePath.replace('.' + lastStringInPath, "");
+ dbAttributePathForPreviousNode = dbAttributePath.replaceAll('.' + lastStringInPath + ".$", "");
}
List<String> potentialVariantsToChoose = getChildren(getCurrentNode(dbAttributePathForPreviousNode), "");
- if (potentialVariantsToChoose.contains(lastStringInPath)) {
+ if (potentialVariantsToChoose.contains(lastStringInPath) &&
+ !(getCurrentNode(dbAttributePath) instanceof DbAttribute)) {
setComboModelAccordingToPath(dbAttributePath);
} else {
editorComponent.setText(dbAttributePath.substring(0, dbAttributePath.length() - 1));
}
- previousEmbeddedLevel = StringUtils.countMatches(dbAttributePath, ".");
}
/**
- * find current node by dbAttributePath
+ * find current node by path
*
* @param pathString
- * @return last node in dbAttributePath which matches DbRelationship or DbAttribute
+ * @return last node in path which matches DbRelationship or DbAttribute
*/
protected Object getCurrentNode(String pathString) {
//case for new attribute
@@ -193,4 +203,32 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
}
return currentNodeChildren;
}
+
+ private final class PathChooserComboBoxCellRenderer extends DefaultListCellRenderer {
+
+ private final ImageIcon rightArrow = ModelerUtil.buildIcon("scroll_right.gif");
+
+ @Override
+ public Component getListCellRendererComponent(JList<?> list, Object value, int index,
+ boolean isSelected, boolean cellHasFocus) {
+
+ 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);
+ if (treeModel.isLeaf(currentNode)) {
+ ListCellRenderer leafRenderer = CellRenderers.listRenderer();
+ return leafRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+ } else {
+ DefaultListCellRenderer nonLeafTextRenderer = new DefaultListCellRenderer();
+ Component text = nonLeafTextRenderer.getListCellRendererComponent(list, value, index, isSelected,
+ cellHasFocus);
+ panel.setBackground(text.getBackground());
+ panel.add(new JLabel(rightArrow), BorderLayout.EAST);
+ return panel;
+ }
+ }
+ }
}