Author: aadamchik
Date: Fri Jan 30 16:46:56 2009
New Revision: 739329
URL: http://svn.apache.org/viewvc?rev=739329&view=rev
Log:
CAY-1047
ProcedureQueryView_1.txt patch by Dima Loiko
Modified:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java
Modified:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java?rev=739329&r1=739328&r2=739329&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java
(original)
+++
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureQueryView.java
Fri Jan 30 16:46:56 2009
@@ -20,12 +20,17 @@
package org.apache.cayenne.modeler.editor;
import java.awt.BorderLayout;
+import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
import javax.swing.DefaultComboBoxModel;
+import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
+import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
@@ -41,6 +46,7 @@
import org.apache.cayenne.modeler.util.ProjectUtil;
import org.apache.cayenne.modeler.util.TextAdapter;
import org.apache.cayenne.query.AbstractQuery;
+import org.apache.cayenne.query.CapsStrategy;
import org.apache.cayenne.query.ProcedureQuery;
import org.apache.cayenne.query.Query;
import org.apache.cayenne.util.Util;
@@ -49,10 +55,28 @@
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
+import com.jgoodies.forms.layout.RowSpec;
/**
*/
public class ProcedureQueryView extends JPanel {
+
+ private static final String DEFAULT_CAPS_LABEL = "Database Default";
+ private static final String LOWER_CAPS_LABEL = "Force Lower Case";
+ private static final String UPPER_CAPS_LABEL = "Force Upper Case";
+
+ private static final CapsStrategy[] LABEL_CAPITALIZATION = {
+ CapsStrategy.DEFAULT, CapsStrategy.LOWER,
+ CapsStrategy.UPPER
+ };
+
+ private static final Map<CapsStrategy, String> labelCapsLabels = new
HashMap<CapsStrategy, String>();
+
+ static {
+ labelCapsLabels.put(CapsStrategy.DEFAULT, DEFAULT_CAPS_LABEL);
+ labelCapsLabels.put(CapsStrategy.LOWER, LOWER_CAPS_LABEL);
+ labelCapsLabels.put(CapsStrategy.UPPER, UPPER_CAPS_LABEL);
+ }
protected ProjectController mediator;
protected TextAdapter name;
@@ -78,22 +102,7 @@
queryRoot = CayenneWidgetFactory.createComboBox();
queryRoot.setRenderer(CellRenderers.listRendererWithIcons());
- properties = new RawQueryPropertiesPanel(mediator) {
-
- @Override
- protected void setEntity(ObjEntity entity) {
- ProcedureQueryView.this.setEntity(entity);
- }
-
- @Override
- public ObjEntity getEntity(Query query) {
- if (query instanceof ProcedureQuery) {
- return ProcedureQueryView.this.getEntity((ProcedureQuery)
query);
- }
-
- return null;
- }
- };
+ properties = new ProcedureQueryPropertiesPanel(mediator);
// assemble
CellConstraints cc = new CellConstraints();
@@ -239,4 +248,77 @@
mediator.fireQueryEvent(new QueryEvent(this, procedureQuery));
}
}
+
+ final class LabelCapsRenderer extends DefaultListCellRenderer {
+
+ public Component getListCellRendererComponent(
+ JList list,
+ Object object,
+ int arg2,
+ boolean arg3,
+ boolean arg4) {
+ object = labelCapsLabels.get(object);
+ return super.getListCellRendererComponent(list, object, arg2,
arg3, arg4);
+ }
+ }
+
+ final class ProcedureQueryPropertiesPanel extends RawQueryPropertiesPanel {
+
+ private JComboBox labelCase;
+
+ ProcedureQueryPropertiesPanel(ProjectController mediator) {
+ super(mediator);
+ }
+
+ protected PanelBuilder createPanelBuilder() {
+ labelCase = CayenneWidgetFactory.createComboBox();
+ labelCase.setRenderer(new LabelCapsRenderer());
+
+ labelCase.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent event) {
+ Object value = labelCase.getModel().getSelectedItem();
+ setQueryProperty("columnNamesCapitalization", value);
+ }
+ });
+
+ PanelBuilder builder = super.createPanelBuilder();
+
+ RowSpec[] extraRows = RowSpec.decodeSpecs("3dlu, p");
+ for (RowSpec extraRow : extraRows) {
+ builder.appendRow(extraRow);
+ }
+
+ CellConstraints cc = new CellConstraints();
+ builder.addLabel("Row Label Case:", cc.xy(1, 15));
+ builder.add(labelCase, cc.xywh(3, 15, 5, 1));
+
+ return builder;
+ }
+
+ public void initFromModel(Query query) {
+ super.initFromModel(query);
+
+ if (query instanceof ProcedureQuery) {
+ ProcedureQuery template = (ProcedureQuery) query;
+ DefaultComboBoxModel labelCaseModel = new DefaultComboBoxModel(
+ LABEL_CAPITALIZATION);
+
+
labelCaseModel.setSelectedItem(template.getColumnNamesCapitalization());
+ labelCase.setModel(labelCaseModel);
+ }
+ }
+
+ protected void setEntity(ObjEntity entity) {
+ ProcedureQueryView.this.setEntity(entity);
+ }
+
+ public ObjEntity getEntity(Query query) {
+ if (query instanceof ProcedureQuery) {
+ return ProcedureQueryView.this.getEntity((ProcedureQuery)
query);
+ }
+
+ return null;
+ }
+ };
}