You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/03/05 07:47:35 UTC

[4/4] cayenne git commit: Remove code duplication in SelectQuery and SQLTemplate tabs

Remove code duplication in SelectQuery and SQLTemplate tabs


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/7758dbf4
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/7758dbf4
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/7758dbf4

Branch: refs/heads/master
Commit: 7758dbf420b1cb611d0710a26304d7d2c34227c7
Parents: f86af37
Author: stariy <st...@gmail.com>
Authored: Mon Mar 5 10:47:08 2018 +0300
Committer: stariy <st...@gmail.com>
Committed: Mon Mar 5 10:47:08 2018 +0300

----------------------------------------------------------------------
 .../modeler/editor/BaseQueryMainTab.java        |  90 ++++++++++
 .../modeler/editor/RootSelectionHandler.java    |  86 ++++++++++
 .../modeler/editor/SQLTemplateMainTab.java      | 169 ++-----------------
 .../modeler/editor/SelectQueryMainTab.java      | 140 +--------------
 4 files changed, 199 insertions(+), 286 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/7758dbf4/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/BaseQueryMainTab.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/BaseQueryMainTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/BaseQueryMainTab.java
new file mode 100644
index 0000000..a1d9033
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/BaseQueryMainTab.java
@@ -0,0 +1,90 @@
+package org.apache.cayenne.modeler.editor;
+
+import org.apache.cayenne.configuration.event.QueryEvent;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.util.CellRenderers;
+import org.apache.cayenne.modeler.util.ProjectUtil;
+import org.apache.cayenne.modeler.util.TextAdapter;
+import org.apache.cayenne.modeler.util.combo.AutoCompletion;
+import org.apache.cayenne.util.Util;
+import org.apache.cayenne.validation.ValidationException;
+
+import javax.swing.*;
+
+abstract class BaseQueryMainTab extends JPanel {
+    protected ProjectController mediator;
+    protected TextAdapter name;
+    protected JComboBox<ObjEntity> queryRoot;
+
+    BaseQueryMainTab(ProjectController mediator) {
+        this.mediator = mediator;
+    }
+
+    protected void initQueryRoot() {
+        queryRoot = Application.getWidgetFactory().createComboBox();
+        AutoCompletion.enable(queryRoot);
+        queryRoot.setRenderer(CellRenderers.listRendererWithIcons());
+
+        RootSelectionHandler rootHandler = new RootSelectionHandler(this);
+
+        queryRoot.addActionListener(rootHandler);
+        queryRoot.addFocusListener(rootHandler);
+        queryRoot.getEditor().getEditorComponent().addFocusListener(rootHandler);
+    }
+
+    public TextAdapter getNameField() {
+        return name;
+    }
+
+    public JComboBox<ObjEntity> getQueryRoot() {
+        return queryRoot;
+    }
+
+    public ProjectController getMediator() {
+        return mediator;
+    }
+
+    /**
+     * Initializes Query name from string.
+     */
+    void setQueryName(String newName) {
+        if (newName != null && newName.trim().length() == 0) {
+            newName = null;
+        }
+
+        QueryDescriptor query = getQuery();
+
+        if (query == null) {
+            return;
+        }
+
+        if (Util.nullSafeEquals(newName, query.getName())) {
+            return;
+        }
+
+        if (newName == null) {
+            throw new ValidationException("SelectQuery name is required.");
+        }
+
+        DataMap map = mediator.getCurrentDataMap();
+        QueryDescriptor matchingQuery = map.getQueryDescriptor(newName);
+
+        if (matchingQuery == null) {
+            // completely new name, set new name for entity
+            QueryEvent e = new QueryEvent(this, query, query.getName());
+            ProjectUtil.setQueryName(map, query, newName);
+            mediator.fireQueryEvent(e);
+        } else if (matchingQuery != query) {
+            // there is a query with the same name
+            throw new ValidationException("There is another query named '"
+                    + newName
+                    + "'. Use a different name.");
+        }
+    }
+
+    abstract QueryDescriptor getQuery();
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7758dbf4/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/RootSelectionHandler.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/RootSelectionHandler.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/RootSelectionHandler.java
new file mode 100644
index 0000000..8bafed2
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/RootSelectionHandler.java
@@ -0,0 +1,86 @@
+package org.apache.cayenne.modeler.editor;
+
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.Entity;
+import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.modeler.util.CellRenderers;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+
+/**
+ * Handler to user's actions with root selection combobox
+ */
+class RootSelectionHandler implements FocusListener, ActionListener {
+    private String newName = null;
+    private boolean needChangeName;
+    private final BaseQueryMainTab queryTab;
+
+    RootSelectionHandler(BaseQueryMainTab queryTab) {
+        this.queryTab = queryTab;
+    }
+
+    public void actionPerformed(ActionEvent ae) {
+        QueryDescriptor query = queryTab.getQuery();
+        if (query != null) {
+            Entity root = (Entity) queryTab.getQueryRoot().getModel().getSelectedItem();
+
+            if (root != null) {
+                query.setRoot(root);
+
+                if (needChangeName) { //not changed by user
+                    /*
+                     * Doing auto name change, following CAY-888 #2
+                     */
+                    String newPrefix = root.getName() + "Query";
+                    newName = newPrefix;
+
+                    DataMap map = queryTab.getMediator().getCurrentDataMap();
+                    long postfix = 1;
+
+                    while (map.getQueryDescriptor(newName) != null) {
+                        newName = newPrefix + (postfix++);
+                    }
+
+                    queryTab.getNameField().setText(newName);
+                }
+            }
+        }
+    }
+
+    public void focusGained(FocusEvent e) {
+        //reset new name tracking
+        newName = null;
+
+        QueryDescriptor query = queryTab.getQuery();
+        if (query != null) {
+            needChangeName = hasDefaultName(query);
+        } else {
+            needChangeName = false;
+        }
+    }
+
+    public void focusLost(FocusEvent e) {
+        if (newName != null) {
+            queryTab.setQueryName(newName);
+        }
+
+        newName = null;
+        needChangeName = false;
+    }
+
+    /**
+     * @return whether specified's query name is 'default' i.e. Cayenne generated
+     * A query's name is 'default' if it starts with 'UntitledQuery' or with root name.
+     *
+     * We cannot follow user input because tab might be opened many times
+     */
+    boolean hasDefaultName(QueryDescriptor query) {
+        String prefix = query.getRoot() == null ? "UntitledQuery" :
+            CellRenderers.asString(query.getRoot()) + "Query";
+
+        return queryTab.getNameField().getComponent().getText().startsWith(prefix);
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7758dbf4/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateMainTab.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateMainTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateMainTab.java
index 78ef8d0..cbfb99e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateMainTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateMainTab.java
@@ -25,34 +25,23 @@ import com.jgoodies.forms.layout.FormLayout;
 import com.jgoodies.forms.layout.RowSpec;
 import org.apache.cayenne.configuration.event.QueryEvent;
 import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.QueryDescriptor;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.util.CellRenderers;
 import org.apache.cayenne.modeler.util.Comparators;
-import org.apache.cayenne.modeler.util.ProjectUtil;
 import org.apache.cayenne.modeler.util.TextAdapter;
-import org.apache.cayenne.modeler.util.combo.AutoCompletion;
 import org.apache.cayenne.project.extension.info.ObjectInfo;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.util.Util;
-import org.apache.cayenne.validation.ValidationException;
 
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.DefaultListCellRenderer;
 import javax.swing.JComboBox;
 import javax.swing.JList;
-import javax.swing.JPanel;
 import javax.swing.JTextField;
 import java.awt.BorderLayout;
 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.Arrays;
 import java.util.HashMap;
 import java.util.Map;
@@ -61,7 +50,7 @@ import java.util.Map;
  * A main panel for editing a SQLTemplate.
  * 
  */
-public class SQLTemplateMainTab extends JPanel {
+public class SQLTemplateMainTab extends BaseQueryMainTab {
 
     private static final String DEFAULT_CAPS_LABEL = "Database Default";
     private static final String LOWER_CAPS_LABEL = "Force Lower Case";
@@ -79,17 +68,14 @@ public class SQLTemplateMainTab extends JPanel {
         labelCapsLabels.put(CapsStrategy.UPPER, UPPER_CAPS_LABEL);
     }
 
-    protected ProjectController mediator;
-    protected TextAdapter name;
     protected TextAdapter comment;
-    protected JComboBox<ObjEntity> queryRoot;
     protected SelectPropertiesPanel properties;
 
     public SQLTemplateMainTab(ProjectController mediator) {
-        this.mediator = mediator;
+        super(mediator);
 
+        initQueryRoot();
         initView();
-        initController();
     }
 
     private void initView() {
@@ -108,10 +94,6 @@ public class SQLTemplateMainTab extends JPanel {
             }
         };
 
-        queryRoot = Application.getWidgetFactory().createComboBox();
-        AutoCompletion.enable(queryRoot);
-        queryRoot.setRenderer(CellRenderers.listRendererWithIcons());
-
         properties = new SQLTemplateQueryPropertiesPanel(mediator);
 
         // assemble
@@ -135,14 +117,6 @@ public class SQLTemplateMainTab extends JPanel {
         this.add(properties, BorderLayout.CENTER);
     }
 
-    private void initController() {
-        RootSelectionHandler rootHandler = new RootSelectionHandler();
-
-        queryRoot.addActionListener(rootHandler);
-        queryRoot.addFocusListener(rootHandler);
-        queryRoot.getEditor().getEditorComponent().addFocusListener(rootHandler);
-    }
-
     /**
      * Updates the view from the current model state. Invoked when a currently displayed
      * query is changed.
@@ -173,120 +147,13 @@ public class SQLTemplateMainTab extends JPanel {
         setVisible(true);
     }
 
+    @Override
     protected QueryDescriptor getQuery() {
         QueryDescriptor query = mediator.getCurrentQuery();
         return (query != null && QueryDescriptor.SQL_TEMPLATE.equals(query.getType())) ? query : null;
     }
 
     /**
-     * Initializes Query name from string.
-     */
-    void setQueryName(String newName) {
-        if (newName != null && newName.trim().length() == 0) {
-            newName = null;
-        }
-
-        QueryDescriptor query = getQuery();
-
-        if (query == null) {
-            return;
-        }
-
-        if (Util.nullSafeEquals(newName, query.getName())) {
-            return;
-        }
-
-        if (newName == null) {
-            throw new ValidationException("Query name is required.");
-        }
-
-        DataMap map = mediator.getCurrentDataMap();
-
-        if (map.getQueryDescriptor(newName) == null) {
-            // completely new name, set new name for entity
-            QueryEvent e = new QueryEvent(this, query, query.getName());
-            ProjectUtil.setQueryName(map, query, newName);
-            mediator.fireQueryEvent(e);
-        }
-        else {
-            // there is a query with the same name
-            throw new ValidationException("There is another query named '"
-                    + newName
-                    + "'. Use a different name.");
-        }
-    }
-
-    /**
-     * Handler to user's actions with root selection combobox
-     */
-    class RootSelectionHandler implements FocusListener, ActionListener {
-        String newName = null;
-        boolean needChangeName;
-
-        public void actionPerformed(ActionEvent ae) {
-            QueryDescriptor query = getQuery();
-            if (query != null) {
-                Entity root = (Entity) queryRoot.getModel().getSelectedItem();
-
-                if (root != null) {
-                    query.setRoot(root);
-
-                    if (needChangeName) { //not changed by user
-                        /*
-                         * Doing auto name change, following CAY-888 #2
-                         */
-                        String newPrefix = root.getName() + "Query";
-                        newName = newPrefix;
-
-                        DataMap map = mediator.getCurrentDataMap();
-                        long postfix = 1;
-
-                        while (map.getQueryDescriptor(newName) != null) {
-                            newName = newPrefix + (postfix++);
-                        }
-
-                        name.setText(newName);
-                    }
-                }
-            }
-        }
-
-        public void focusGained(FocusEvent e) {
-            //reset new name tracking
-            newName = null;
-
-            QueryDescriptor query = getQuery();
-            if (query != null) {
-                needChangeName = hasDefaultName(query);
-            } else {
-                needChangeName = false;
-            }
-        }
-
-        public void focusLost(FocusEvent e) {
-            if (newName != null) {
-                setQueryName(newName);
-            }
-
-            newName = null;
-            needChangeName = false;
-        }
-
-        /**
-         * @return whether specified's query name is 'default' i.e. Cayenne generated
-         * A query's name is 'default' if it starts with 'UntitledQuery' or with root name.
-         *
-         * We cannot follow user input because tab might be opened many times
-         */
-        boolean hasDefaultName(QueryDescriptor query) {
-            String prefix = query.getRoot() == null ? "UntitledQuery" :
-                    CellRenderers.asString(query.getRoot()) + "Query";
-
-            return name.getComponent().getText().startsWith(prefix);
-        }
-    }
-
-    /**
      * Returns an entity that maps to a procedure query result class.
      */
     ObjEntity getEntity(QueryDescriptor query) {
@@ -319,7 +186,7 @@ public class SQLTemplateMainTab extends JPanel {
     }
 
     final class LabelCapsRenderer extends DefaultListCellRenderer {
-
+        @Override
         public Component getListCellRendererComponent(
                 JList list,
                 Object object,
@@ -333,22 +200,20 @@ public class SQLTemplateMainTab extends JPanel {
 
     final class SQLTemplateQueryPropertiesPanel extends RawQueryPropertiesPanel {
 
-        private JComboBox labelCase;
+        private JComboBox<CapsStrategy> labelCase;
 
         SQLTemplateQueryPropertiesPanel(ProjectController mediator) {
             super(mediator);
         }
 
+        @Override
         protected PanelBuilder createPanelBuilder() {
             labelCase = Application.getWidgetFactory().createUndoableComboBox();
             labelCase.setRenderer(new LabelCapsRenderer());
 
-            labelCase.addActionListener(new ActionListener() {
-
-                public void actionPerformed(ActionEvent event) {
-                    CapsStrategy value = (CapsStrategy) labelCase.getModel().getSelectedItem();
-                    setQueryProperty(SQLTemplate.COLUMN_NAME_CAPITALIZATION_PROPERTY, value.name());
-                }
+            labelCase.addActionListener(event -> {
+                CapsStrategy value = (CapsStrategy) labelCase.getModel().getSelectedItem();
+                setQueryProperty(SQLTemplate.COLUMN_NAME_CAPITALIZATION_PROPERTY, value.name());
             });
 
             PanelBuilder builder = super.createPanelBuilder();
@@ -365,25 +230,27 @@ public class SQLTemplateMainTab extends JPanel {
             return builder;
         }
 
+        @Override
         public void initFromModel(QueryDescriptor query) {
             super.initFromModel(query);
 
             if (query != null && QueryDescriptor.SQL_TEMPLATE.equals(query.getType())) {
-                DefaultComboBoxModel labelCaseModel = new DefaultComboBoxModel(
-                        LABEL_CAPITALIZATION);
-
+                DefaultComboBoxModel<CapsStrategy> labelCaseModel = new DefaultComboBoxModel<>(LABEL_CAPITALIZATION);
                 String columnNameCapitalization = query.getProperty(SQLTemplate.COLUMN_NAME_CAPITALIZATION_PROPERTY);
 
-                labelCaseModel.setSelectedItem(columnNameCapitalization != null ?
-                        CapsStrategy.valueOf(columnNameCapitalization) : CapsStrategy.DEFAULT);
+                labelCaseModel.setSelectedItem(columnNameCapitalization != null
+                        ? CapsStrategy.valueOf(columnNameCapitalization)
+                        : CapsStrategy.DEFAULT);
                 labelCase.setModel(labelCaseModel);
             }
         }
 
+        @Override
         protected void setEntity(ObjEntity entity) {
             SQLTemplateMainTab.this.setEntity(entity);
         }
 
+        @Override
         public ObjEntity getEntity(QueryDescriptor query) {
             if (query != null && QueryDescriptor.SQL_TEMPLATE.equals(query.getType())) {
                 return SQLTemplateMainTab.this.getEntity(query);
@@ -399,5 +266,5 @@ public class SQLTemplateMainTab extends JPanel {
                 setEntity(null);
             }
         }
-    };
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7758dbf4/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectQueryMainTab.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectQueryMainTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectQueryMainTab.java
index e68d17a..c0bc6d1 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectQueryMainTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SelectQueryMainTab.java
@@ -20,10 +20,6 @@
 package org.apache.cayenne.modeler.editor;
 
 import java.awt.BorderLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.util.Arrays;
@@ -31,8 +27,6 @@ import java.util.Iterator;
 
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JPanel;
 import javax.swing.JTextField;
 
 import org.apache.cayenne.configuration.event.QueryEvent;
@@ -44,18 +38,14 @@ import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.QueryDescriptor;
 import org.apache.cayenne.map.SelectQueryDescriptor;
-import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.swing.components.JCayenneCheckBox;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.util.CellRenderers;
 import org.apache.cayenne.modeler.util.Comparators;
 import org.apache.cayenne.modeler.util.ExpressionConvertor;
-import org.apache.cayenne.modeler.util.ProjectUtil;
 import org.apache.cayenne.modeler.util.TextAdapter;
 import org.apache.cayenne.modeler.util.ValidatorTextAdapter;
-import org.apache.cayenne.modeler.util.combo.AutoCompletion;
 import org.apache.cayenne.project.extension.info.ObjectInfo;
-import org.apache.cayenne.query.*;
 import org.apache.cayenne.util.CayenneMapEntry;
 import org.apache.cayenne.util.Util;
 import org.apache.cayenne.validation.ValidationException;
@@ -68,20 +58,17 @@ import com.jgoodies.forms.layout.FormLayout;
  * A tabbed pane that contains editors for various SelectQuery parts.
  * 
  */
-public class SelectQueryMainTab extends JPanel {
+public class SelectQueryMainTab extends BaseQueryMainTab {
 
-    protected ProjectController mediator;
-
-    protected TextAdapter name;
     protected TextAdapter comment;
-    protected JComboBox<ObjEntity> queryRoot;
     protected TextAdapter qualifier;
     protected JCheckBox distinct;
     protected ObjectQueryPropertiesPanel properties;
 
     public SelectQueryMainTab(ProjectController mediator) {
-        this.mediator = mediator;
+        super(mediator);
 
+        initQueryRoot();
         initView();
         initController();
     }
@@ -96,10 +83,6 @@ public class SelectQueryMainTab extends JPanel {
             }
         };
 
-        queryRoot = Application.getWidgetFactory().createComboBox();
-        AutoCompletion.enable(queryRoot);
-        queryRoot.setRenderer(CellRenderers.listRendererWithIcons());
-
         qualifier = new ValidatorTextAdapter(new JTextField()) {
 
             @Override
@@ -150,11 +133,6 @@ public class SelectQueryMainTab extends JPanel {
     }
 
     private void initController() {
-        RootSelectionHandler rootHandler = new RootSelectionHandler();
-
-        queryRoot.addActionListener(rootHandler);
-        queryRoot.addFocusListener(rootHandler);
-        queryRoot.getEditor().getEditorComponent().addFocusListener(rootHandler);
 
         distinct.addItemListener(new ItemListener() {
 
@@ -215,6 +193,7 @@ public class SelectQueryMainTab extends JPanel {
         setVisible(true);
     }
 
+    @Override
     protected SelectQueryDescriptor getQuery() {
         if(mediator.getCurrentQuery() == null) {
             return null;
@@ -277,45 +256,6 @@ public class SelectQueryMainTab extends JPanel {
     }
 
     /**
-     * Initializes Query name from string.
-     */
-    void setQueryName(String newName) {
-        if (newName != null && newName.trim().length() == 0) {
-            newName = null;
-        }
-
-        QueryDescriptor query = getQuery();
-
-        if (query == null) {
-            return;
-        }
-
-        if (Util.nullSafeEquals(newName, query.getName())) {
-            return;
-        }
-
-        if (newName == null) {
-            throw new ValidationException("SelectQuery name is required.");
-        }
-
-        DataMap map = mediator.getCurrentDataMap();
-        QueryDescriptor matchingQuery = map.getQueryDescriptor(newName);
-
-        if (matchingQuery == null) {
-            // completely new name, set new name for entity
-            QueryEvent e = new QueryEvent(this, query, query.getName());
-            ProjectUtil.setQueryName(map, query, newName);
-            mediator.fireQueryEvent(e);
-        }
-        else if (matchingQuery != query) {
-            // there is a query with the same name
-            throw new ValidationException("There is another query named '"
-                    + newName
-                    + "'. Use a different name.");
-        }
-    }
-
-    /**
      * Advanced checking of an expression, needed because Expression.fromString()
      * might terminate normally, but returned Expression will not be appliable
      * for real Entities.
@@ -351,76 +291,6 @@ public class SelectQueryMainTab extends JPanel {
             throw new ValidationException(eex.getUnlabeledMessage());
         }
     }
-    
-    /**
-     * Handler to user's actions with root selection combobox
-     */
-    class RootSelectionHandler implements FocusListener, ActionListener {
-        String newName = null;
-        boolean needChangeName;
-
-        public void actionPerformed(ActionEvent ae) {
-            QueryDescriptor query = getQuery();
-            if (query != null) {
-                Entity root = (Entity) queryRoot.getModel().getSelectedItem();
-
-                if (root != null) {
-                    query.setRoot(root);
-                    
-                    if (needChangeName) { //not changed by user
-                        /*
-                         * Doing auto name change, following CAY-888 #2
-                         */
-                        String newPrefix = root.getName() + "Query";
-                        newName = newPrefix;
-                        
-                        DataMap map = mediator.getCurrentDataMap();
-                        long postfix = 1;
-                        
-                        while (map.getQueryDescriptor(newName) != null) {
-                            newName = newPrefix + (postfix++);
-                        }
-                        
-                        name.setText(newName);
-                    }
-                }
-            }
-        }
-
-        public void focusGained(FocusEvent e) {
-            //reset new name tracking
-            newName = null;
-            
-            QueryDescriptor query = getQuery();
-            if (query != null) {
-                needChangeName = hasDefaultName(query);
-            } else {
-                needChangeName = false;
-            }
-        }
-
-        public void focusLost(FocusEvent e) {
-            if (newName != null) {
-                setQueryName(newName);
-            }
-            
-            newName = null;
-            needChangeName = false;
-        }
-
-        /**
-         * @return whether specified's query name is 'default' i.e. Cayenne generated
-         * A query's name is 'default' if it starts with 'UntitledQuery' or with root name.
-         * 
-         * We cannot follow user input because tab might be opened many times
-         */
-        boolean hasDefaultName(QueryDescriptor query) {
-            String prefix = query.getRoot() == null ? "UntitledQuery" :
-                CellRenderers.asString(query.getRoot()) + "Query";
-            
-            return name.getComponent().getText().startsWith(prefix);
-        }
-    }
 
     private void setQueryComment(String text) {
         QueryDescriptor query = getQuery();