You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by km...@apache.org on 2008/03/22 22:31:31 UTC
svn commit: r640085 - in
/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne:
modeler/action/ modeler/dialog/ modeler/dialog/pref/ modeler/util/ swing/
Author: kmenard
Date: Sat Mar 22 14:31:30 2008
New Revision: 640085
URL: http://svn.apache.org/viewvc?rev=640085&view=rev
Log:
Fixed CAY-1011: Add confirmation dialog for delete actions.
Added:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ConfirmDeleteDialog.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java
Modified:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AbstractRemoveCallbackMethodAction.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerAction.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerForDataMapAction.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveProcedureParameterAction.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveRelationshipAction.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TextBinding.java
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AbstractRemoveCallbackMethodAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AbstractRemoveCallbackMethodAction.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AbstractRemoveCallbackMethodAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AbstractRemoveCallbackMethodAction.java Sat Mar 22 14:31:30 2008
@@ -24,6 +24,7 @@
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.dialog.ConfirmDeleteDialog;
import org.apache.cayenne.modeler.editor.CallbackType;
import org.apache.cayenne.modeler.event.CallbackMethodEvent;
import org.apache.cayenne.modeler.util.CayenneAction;
@@ -34,7 +35,7 @@
* @author Vasil Tarasevich
* @version 1.0 Oct 28, 2007
*/
-public abstract class AbstractRemoveCallbackMethodAction extends CayenneAction {
+public abstract class AbstractRemoveCallbackMethodAction extends RemoveAction {
/**
* Constructor.
@@ -63,8 +64,13 @@
* @param e event
*/
public final void performAction(ActionEvent e) {
+ ConfirmDeleteDialog dialog = getConfirmDeleteDialog();
+
if (getProjectController().getCurrentCallbackMethod() != null) {
- removeCallbackMethod(e);
+ if (dialog.shouldDelete("callback method", getProjectController()
+ .getCurrentCallbackMethod())) {
+ removeCallbackMethod(e);
+ }
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java Sat Mar 22 14:31:30 2008
@@ -47,6 +47,7 @@
import org.apache.cayenne.map.event.QueryEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.dialog.ConfirmDeleteDialog;
import org.apache.cayenne.modeler.util.CayenneAction;
import org.apache.cayenne.project.ApplicationProject;
import org.apache.cayenne.project.ProjectPath;
@@ -79,37 +80,58 @@
return KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
}
+ public ConfirmDeleteDialog getConfirmDeleteDialog() {
+ return new ConfirmDeleteDialog();
+ }
+
public void performAction(ActionEvent e) {
ProjectController mediator = getProjectController();
+ ConfirmDeleteDialog dialog = getConfirmDeleteDialog();
+
if (mediator.getCurrentObjEntity() != null) {
- removeObjEntity();
+ if (dialog.shouldDelete("ObjEntity", mediator.getCurrentObjEntity().getName())) {
+ removeObjEntity();
+ }
}
else if (mediator.getCurrentDbEntity() != null) {
- removeDbEntity();
+ if (dialog.shouldDelete("DbEntity", mediator.getCurrentDbEntity().getName())) {
+ removeDbEntity();
+ }
}
else if (mediator.getCurrentQuery() != null) {
- removeQuery();
+ if (dialog.shouldDelete("query", mediator.getCurrentQuery().getName())) {
+ removeQuery();
+ }
}
else if (mediator.getCurrentProcedure() != null) {
- removeProcedure();
+ if (dialog.shouldDelete("procedure", mediator.getCurrentProcedure().getName())) {
+ removeProcedure();
+ }
}
else if (mediator.getCurrentDataMap() != null) {
- // In context of Data node just remove from Data Node
- if (mediator.getCurrentDataNode() != null) {
- removeDataMapFromDataNode();
- }
- else {
- // Not under Data Node, remove completely
- removeDataMap();
+ if (dialog.shouldDelete("data map", mediator.getCurrentDataMap().getName())) {
+
+ // In context of Data node just remove from Data Node
+ if (mediator.getCurrentDataNode() != null) {
+ removeDataMapFromDataNode();
+ }
+ else {
+ // Not under Data Node, remove completely
+ removeDataMap();
+ }
}
}
else if (mediator.getCurrentDataNode() != null) {
- removeDataNode();
+ if (dialog.shouldDelete("data node", mediator.getCurrentDataNode().getName())) {
+ removeDataNode();
+ }
}
else if (mediator.getCurrentDataDomain() != null) {
- removeDomain();
+ if (dialog.shouldDelete("data domain", mediator.getCurrentDataDomain().getName())) {
+ removeDomain();
+ }
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java Sat Mar 22 14:31:30 2008
@@ -31,6 +31,7 @@
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.dialog.ConfirmDeleteDialog;
import org.apache.cayenne.modeler.util.ProjectUtil;
import org.apache.cayenne.project.ProjectPath;
@@ -64,11 +65,19 @@
}
public void performAction(ActionEvent e) {
+ ConfirmDeleteDialog dialog = getConfirmDeleteDialog();
+
if (getProjectController().getCurrentObjAttribute() != null) {
- removeObjAttribute();
+ if (dialog.shouldDelete("ObjAttribute", getProjectController()
+ .getCurrentObjAttribute().getName())) {
+ removeObjAttribute();
+ }
}
else if (getProjectController().getCurrentDbAttribute() != null) {
- removeDbAttribute();
+ if (dialog.shouldDelete("DbAttribute", getProjectController()
+ .getCurrentDbAttribute().getName())) {
+ removeDbAttribute();
+ }
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerAction.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerAction.java Sat Mar 22 14:31:30 2008
@@ -23,6 +23,7 @@
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.dialog.ConfirmDeleteDialog;
import org.apache.cayenne.modeler.event.EntityListenerEvent;
import org.apache.cayenne.modeler.util.CayenneAction;
@@ -33,7 +34,7 @@
* @author Vasil Tarasevich
* @version 1.0 Oct 30, 2007
*/
-public class RemoveEntityListenerAction extends CayenneAction {
+public class RemoveEntityListenerAction extends RemoveAction {
/**
* unique action name
*/
@@ -67,6 +68,19 @@
* @param e event
*/
public void performAction(ActionEvent e) {
+ ConfirmDeleteDialog dialog = getConfirmDeleteDialog();
+
+ if ((getProjectController().getCurrentObjEntity() != null) &&
+ (getProjectController().getCurrentListenerClass() != null)) {
+
+ if (dialog.shouldDelete("entity listener", getProjectController()
+ .getCurrentListenerClass())) {
+ removeEntityListener();
+ }
+ }
+ }
+
+ protected void removeEntityListener() {
ObjEntity objEnt = getProjectController().getCurrentObjEntity();
String listenerClass = getProjectController().getCurrentListenerClass();
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerForDataMapAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerForDataMapAction.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerForDataMapAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveEntityListenerForDataMapAction.java Sat Mar 22 14:31:30 2008
@@ -22,6 +22,7 @@
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.dialog.ConfirmDeleteDialog;
import org.apache.cayenne.modeler.event.EntityListenerEvent;
import org.apache.cayenne.modeler.util.CayenneAction;
@@ -32,7 +33,7 @@
* @author Vasil Tarasevich
* @version 1.0 Oct 30, 2007
*/
-public class RemoveEntityListenerForDataMapAction extends CayenneAction {
+public class RemoveEntityListenerForDataMapAction extends RemoveAction {
/**
* unique action name
*/
@@ -66,6 +67,17 @@
* @param e event
*/
public void performAction(ActionEvent e) {
+ ConfirmDeleteDialog dialog = getConfirmDeleteDialog();
+
+ if (getProjectController().getCurrentListenerClass() != null) {
+ if (dialog.shouldDelete("entity listener", getProjectController()
+ .getCurrentListenerClass())) {
+ removeDefaultEntityListener();
+ }
+ }
+ }
+
+ protected void removeDefaultEntityListener() {
String listenerClass = getProjectController().getCurrentListenerClass();
if (listenerClass != null) {
getProjectController().getCurrentDataMap().removeDefaultEntityListener(listenerClass);
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveProcedureParameterAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveProcedureParameterAction.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveProcedureParameterAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveProcedureParameterAction.java Sat Mar 22 14:31:30 2008
@@ -27,6 +27,7 @@
import org.apache.cayenne.map.event.ProcedureParameterEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.dialog.ConfirmDeleteDialog;
import org.apache.cayenne.project.ProjectPath;
/**
@@ -59,8 +60,13 @@
}
public void performAction(ActionEvent e) {
- if (getProjectController().getCurrentProcedure() != null) {
- removeProcedureParameter();
+ ConfirmDeleteDialog dialog = getConfirmDeleteDialog();
+
+ if (getProjectController().getCurrentProcedureParameter() != null) {
+ if (dialog.shouldDelete("procedure parameter", getProjectController()
+ .getCurrentProcedureParameter().getName())) {
+ removeProcedureParameter();
+ }
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveRelationshipAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveRelationshipAction.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveRelationshipAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveRelationshipAction.java Sat Mar 22 14:31:30 2008
@@ -31,6 +31,7 @@
import org.apache.cayenne.map.event.RelationshipEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.dialog.ConfirmDeleteDialog;
import org.apache.cayenne.modeler.util.ProjectUtil;
import org.apache.cayenne.project.ProjectPath;
@@ -64,11 +65,19 @@
}
public void performAction(ActionEvent e) {
+ ConfirmDeleteDialog dialog = getConfirmDeleteDialog();
+
if (getProjectController().getCurrentObjRelationship() != null) {
- removeObjRelationship();
+ if (dialog.shouldDelete("ObjRelationship", getProjectController()
+ .getCurrentObjRelationship().getName())) {
+ removeObjRelationship();
+ }
}
else if (getProjectController().getCurrentDbRelationship() != null) {
- removeDbRelationship();
+ if (dialog.shouldDelete("DbRelationship", getProjectController()
+ .getCurrentDbRelationship().getName())) {
+ removeDbRelationship();
+ }
}
}
Added: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ConfirmDeleteDialog.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ConfirmDeleteDialog.java?rev=640085&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ConfirmDeleteDialog.java (added)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ConfirmDeleteDialog.java Sat Mar 22 14:31:30 2008
@@ -0,0 +1,59 @@
+package org.apache.cayenne.modeler.dialog;
+
+import org.apache.cayenne.modeler.util.CayenneDialog;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.action.ConfigurePreferencesAction;
+import org.apache.cayenne.modeler.dialog.pref.PreferenceDialog;
+import org.apache.cayenne.modeler.dialog.pref.GeneralPreferences;
+import org.apache.cayenne.pref.PreferenceDetail;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ * Used to confirm deleting items in the model.
+ *
+ * @author Kevin Menard
+ */
+public class ConfirmDeleteDialog extends CayenneDialog {
+ private String type;
+ private String name;
+ private boolean shouldDelete = true;
+
+ public void show() {
+
+ PreferenceDetail pref = Application.getInstance().getPreferenceDomain().getDetail(GeneralPreferences.DELETE_PROMPT_PREFERENCE, true);
+
+ // See if the user has opted not to show the delete dialog.
+ if ((pref == null) || (false == pref.getBooleanProperty(GeneralPreferences.DELETE_PROMPT_PREFERENCE))) {
+ JCheckBox neverPromptAgainBox = new JCheckBox("Always delete without prompt.");
+
+ Object message[] = {String.format("Are you sure you would like to delete the %s named '%s'?", type, name), neverPromptAgainBox};
+
+ JOptionPane pane =
+ new JOptionPane(message,
+ JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
+
+ JDialog dialog = pane.createDialog(Application.getFrame(), "File exists");
+ dialog.setVisible(true);
+
+ Object selectedValue = pane.getValue();
+ shouldDelete = selectedValue.equals(JOptionPane.YES_OPTION);
+
+ // If the user clicks "no", we'll just ignore whatever's in the checkbox because it's non-sensical.
+ if (shouldDelete) {
+ pref.setBooleanProperty(GeneralPreferences.DELETE_PROMPT_PREFERENCE, neverPromptAgainBox.isSelected());
+ Application.getInstance().getPreferenceService().savePreferences();
+ }
+ }
+ }
+
+ public boolean shouldDelete(String type, String name) {
+ this.type = type;
+ this.name = name;
+
+ show();
+
+ return shouldDelete;
+ }
+}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java Sat Mar 22 14:31:30 2008
@@ -23,6 +23,7 @@
import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.modeler.util.CayenneController;
+import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.pref.CayennePreferenceEditor;
import org.apache.cayenne.pref.CayennePreferenceService;
import org.apache.cayenne.pref.Domain;
@@ -37,14 +38,17 @@
*/
public class GeneralPreferences extends CayenneController {
+ public static final String DELETE_PROMPT_PREFERENCE = "deletePrompt";
public static final String ENCODING_PREFERENCE = "encoding";
protected GeneralPreferencesView view;
protected CayennePreferenceEditor editor;
protected PreferenceDetail classGeneratorPreferences;
+ protected PreferenceDetail deletePromptPreference;
protected ObjectBinding saveIntervalBinding;
protected ObjectBinding encodingBinding;
+ protected ObjectBinding deletePromptBinding;
public GeneralPreferences(PreferenceDialog parentController) {
super(parentController);
@@ -58,6 +62,7 @@
saveIntervalBinding.updateView();
encodingBinding.updateView();
+ deletePromptBinding.updateView();
}
else {
this.view.setEnabled(false);
@@ -75,6 +80,10 @@
this.classGeneratorPreferences = classGeneratorDomain
.getDetail(ENCODING_PREFERENCE, true);
+ this.deletePromptPreference = editor.editableInstance(getApplication().getPreferenceDomain())
+ .getDetail(DELETE_PROMPT_PREFERENCE, true);
+
+
// build child controllers...
EncodingSelector encodingSelector = new EncodingSelector(this, view
.getEncodingSelector());
@@ -90,6 +99,9 @@
this.encodingBinding = builder.bindToProperty(encodingSelector,
"classGeneratorPreferences.property[\"encoding\"]",
EncodingSelector.ENCODING_PROPERTY_BINDING);
+
+ this.deletePromptBinding = builder.bindToCheckBox(view.getDeletePrompt(),
+ "deletePrompt");
}
public double getTimeInterval() {
@@ -105,6 +117,14 @@
}
this.editor.setSaveInterval(ms);
+ }
+
+ public boolean getDeletePrompt() {
+ return deletePromptPreference.getBooleanProperty(GeneralPreferences.DELETE_PROMPT_PREFERENCE);
+ }
+
+ public void setDeletePrompt(boolean deletePrompt) {
+ deletePromptPreference.setBooleanProperty(GeneralPreferences.DELETE_PROMPT_PREFERENCE, deletePrompt);
}
public PreferenceDetail getClassGeneratorPreferences() {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferencesView.java Sat Mar 22 14:31:30 2008
@@ -21,9 +21,7 @@
import java.awt.BorderLayout;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
+import javax.swing.*;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
@@ -38,16 +36,18 @@
protected JLabel saveIntervalLabel;
protected EncodingSelectorView encodingSelector;
protected JLabel encodingSelectorLabel;
+ protected JCheckBox deletePromptBox;
public GeneralPreferencesView() {
this.saveInterval = new JTextField();
this.encodingSelector = new EncodingSelectorView();
this.saveIntervalLabel = new JLabel("Preferences Save Interval (sec):");
this.encodingSelectorLabel = new JLabel("File Encoding:");
+ this.deletePromptBox = new JCheckBox("Always delete items without prompt.");
FormLayout layout = new FormLayout(
"right:pref, 3dlu, 30dlu, 3dlu, fill:70dlu",
- "p, 3dlu, p, 12dlu, p, 3dlu, fill:40dlu:grow");
+ "p, 3dlu, p, 12dlu, p, 40dlu, p, 3dlu, p, 3dlu, fill:40dlu:grow");
CellConstraints cc = new CellConstraints();
PanelBuilder builder = new PanelBuilder(layout);
@@ -58,6 +58,9 @@
builder.add(encodingSelectorLabel, cc.xy(1, 5));
builder.add(encodingSelector, cc.xywh(3, 5, 3, 3));
+ builder.addSeparator("Editor Preferences", cc.xywh(1, 7, 5, 1));
+ builder.add(deletePromptBox, cc.xy(1, 9));
+
this.setLayout(new BorderLayout());
this.add(builder.getPanel(), BorderLayout.CENTER);
}
@@ -76,5 +79,9 @@
public EncodingSelectorView getEncodingSelector() {
return encodingSelector;
+ }
+
+ public JCheckBox getDeletePrompt() {
+ return deletePromptBox;
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java Sat Mar 22 14:31:30 2008
@@ -99,7 +99,7 @@
}
/**
- * Returns preference domaing for this component view.
+ * Returns preference domain for this component view.
*/
protected Domain getViewDomain() {
return getApplication().getPreferenceDomain().getSubdomain(getView().getClass());
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java Sat Mar 22 14:31:30 2008
@@ -23,10 +23,7 @@
import java.util.HashMap;
import java.util.Map;
-import javax.swing.AbstractButton;
-import javax.swing.JComboBox;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
+import javax.swing.*;
/**
* A builder for component bindings that delegates the creation of the binding to the
@@ -158,6 +155,11 @@
public ObjectBinding bindToTextField(JTextField component, String property) {
ObjectBinding binding = factory.bindToTextField(component, property);
+ return initBinding(binding, delegate);
+ }
+
+ public ObjectBinding bindToCheckBox(JCheckBox component, String property) {
+ ObjectBinding binding = factory.bindToCheckBox(component, property);
return initBinding(binding, delegate);
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java Sat Mar 22 14:31:30 2008
@@ -21,11 +21,7 @@
import java.awt.Component;
-import javax.swing.AbstractButton;
-import javax.swing.JComboBox;
-import javax.swing.JTable;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
+import javax.swing.*;
/**
* A factory for a number of common bindings.
@@ -128,6 +124,11 @@
*/
public ObjectBinding bindToTextField(JTextField component, String property) {
TextBinding binding = new TextBinding(component, property);
+ return prepareBinding(binding);
+ }
+
+ public ObjectBinding bindToCheckBox(JCheckBox component, String property) {
+ CheckBoxBinding binding = new CheckBoxBinding(component, property);
return prepareBinding(binding);
}
Added: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java?rev=640085&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java (added)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java Sat Mar 22 14:31:30 2008
@@ -0,0 +1,52 @@
+package org.apache.cayenne.swing;
+
+import org.apache.cayenne.validation.ValidationException;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+/**
+ * A generic adapter that binds a check box to a bean property.
+ *
+ * @author Kevin Menard
+ */
+public class CheckBoxBinding extends BindingBase {
+
+ protected JCheckBox checkBox;
+
+ public CheckBoxBinding(JCheckBox checkBox, String propertyExpression) {
+ super(propertyExpression);
+ this.checkBox = checkBox;
+
+ this.checkBox.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(final ActionEvent event) {
+ if (!modelUpdateDisabled) {
+ updateModel();
+ }
+ }
+ });
+ }
+
+ public Component getView() {
+ return checkBox;
+ }
+
+ public void updateView() {
+ Boolean value = (Boolean) getValue();
+
+ modelUpdateDisabled = true;
+ try {
+ checkBox.setSelected(value.booleanValue());
+ }
+ finally {
+ modelUpdateDisabled = false;
+ }
+ }
+
+ protected void updateModel() {
+ setValue(Boolean.valueOf(checkBox.isSelected()));
+ }
+}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TextBinding.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TextBinding.java?rev=640085&r1=640084&r2=640085&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TextBinding.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TextBinding.java Sat Mar 22 14:31:30 2008
@@ -55,7 +55,9 @@
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
- updateModel();
+ if (!modelUpdateDisabled) {
+ updateModel();
+ }
}
});