Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/model/value/swing/RadioButtonModelAdapterUITest.java')
-rw-r--r--common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/model/value/swing/RadioButtonModelAdapterUITest.java260
1 files changed, 260 insertions, 0 deletions
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/model/value/swing/RadioButtonModelAdapterUITest.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/model/value/swing/RadioButtonModelAdapterUITest.java
new file mode 100644
index 0000000000..0b4ff59108
--- /dev/null
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/model/value/swing/RadioButtonModelAdapterUITest.java
@@ -0,0 +1,260 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.common.utility.tests.internal.model.value.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.ButtonModel;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.WindowConstants;
+
+import org.eclipse.jpt.common.utility.internal.ArrayTools;
+import org.eclipse.jpt.common.utility.internal.model.AbstractModel;
+import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel;
+import org.eclipse.jpt.common.utility.internal.model.value.swing.RadioButtonModelAdapter;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.common.utility.model.value.WritablePropertyValueModel;
+
+
+/**
+ * Play around with a set of radio buttons.
+ */
+@SuppressWarnings("nls")
+public class RadioButtonModelAdapterUITest {
+
+ private TestModel testModel;
+ private WritablePropertyValueModel<TestModel> testModelHolder;
+ private WritablePropertyValueModel<Object> colorHolder;
+ private ButtonModel redButtonModel;
+ private ButtonModel greenButtonModel;
+ private ButtonModel blueButtonModel;
+
+ public static void main(String[] args) throws Exception {
+ new RadioButtonModelAdapterUITest().exec();
+ }
+
+ private RadioButtonModelAdapterUITest() {
+ super();
+ }
+
+ private void exec() throws Exception {
+ this.testModel = new TestModel();
+ this.testModelHolder = new SimplePropertyValueModel<TestModel>(this.testModel);
+ this.colorHolder = this.buildColorHolder(this.testModelHolder);
+ this.redButtonModel = this.buildRadioButtonModelAdapter(this.colorHolder, TestModel.RED);
+ this.greenButtonModel = this.buildRadioButtonModelAdapter(this.colorHolder, TestModel.GREEN);
+ this.blueButtonModel = this.buildRadioButtonModelAdapter(this.colorHolder, TestModel.BLUE);
+ this.openWindow();
+ }
+
+ private WritablePropertyValueModel<Object> buildColorHolder(PropertyValueModel<TestModel> subjectHolder) {
+ return new PropertyAspectAdapter<TestModel, Object>(subjectHolder, TestModel.COLOR_PROPERTY) {
+ @Override
+ protected Object buildValue_() {
+ return this.subject.getColor();
+ }
+ @Override
+ protected void setValue_(Object value) {
+ this.subject.setColor((String) value);
+ }
+ };
+ }
+
+ private ButtonModel buildRadioButtonModelAdapter(WritablePropertyValueModel<Object> colorPVM, String color) {
+ return new RadioButtonModelAdapter(colorPVM, color);
+ }
+
+ private void openWindow() {
+ JFrame window = new JFrame(this.getClass().getName());
+ window.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+ window.addWindowListener(this.buildWindowListener());
+ window.getContentPane().add(this.buildMainPanel(), "Center");
+ window.setSize(400, 100);
+ window.setLocation(200, 200);
+ window.setVisible(true);
+ }
+
+ private WindowListener buildWindowListener() {
+ return new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ e.getWindow().setVisible(false);
+ System.exit(0);
+ }
+ };
+ }
+
+ private Component buildMainPanel() {
+ JPanel mainPanel = new JPanel(new BorderLayout());
+ mainPanel.add(this.buildRadioButtonPanel(), BorderLayout.NORTH);
+ mainPanel.add(this.buildControlPanel(), BorderLayout.SOUTH);
+ return mainPanel;
+ }
+
+ private Component buildRadioButtonPanel() {
+ JPanel taskListPanel = new JPanel(new GridLayout(1, 0));
+ taskListPanel.add(this.buildRedRadioButton());
+ taskListPanel.add(this.buildGreenRadioButton());
+ taskListPanel.add(this.buildBlueRadioButton());
+ return taskListPanel;
+ }
+
+ private JRadioButton buildRedRadioButton() {
+ JRadioButton radioButton = new JRadioButton();
+ radioButton.setText("red");
+ radioButton.setModel(this.redButtonModel);
+ return radioButton;
+ }
+
+ private JRadioButton buildGreenRadioButton() {
+ JRadioButton radioButton = new JRadioButton();
+ radioButton.setText("green");
+ radioButton.setModel(this.greenButtonModel);
+ return radioButton;
+ }
+
+ private JRadioButton buildBlueRadioButton() {
+ JRadioButton radioButton = new JRadioButton();
+ radioButton.setText("blue");
+ radioButton.setModel(this.blueButtonModel);
+ return radioButton;
+ }
+
+ private Component buildControlPanel() {
+ JPanel controlPanel = new JPanel(new GridLayout(1, 0));
+ controlPanel.add(this.buildResetColorButton());
+ controlPanel.add(this.buildClearModelButton());
+ controlPanel.add(this.buildRestoreModelButton());
+ controlPanel.add(this.buildPrintModelButton());
+ return controlPanel;
+ }
+
+ private JButton buildResetColorButton() {
+ return new JButton(this.buildResetColorAction());
+ }
+
+ private Action buildResetColorAction() {
+ Action action = new AbstractAction("reset color") {
+ public void actionPerformed(ActionEvent event) {
+ RadioButtonModelAdapterUITest.this.resetColor();
+ }
+ };
+ action.setEnabled(true);
+ return action;
+ }
+
+ void resetColor() {
+ this.testModel.setColor(TestModel.DEFAULT_COLOR);
+ }
+
+ private JButton buildClearModelButton() {
+ return new JButton(this.buildClearModelAction());
+ }
+
+ private Action buildClearModelAction() {
+ Action action = new AbstractAction("clear model") {
+ public void actionPerformed(ActionEvent event) {
+ RadioButtonModelAdapterUITest.this.clearModel();
+ }
+ };
+ action.setEnabled(true);
+ return action;
+ }
+
+ void clearModel() {
+ this.testModelHolder.setValue(null);
+ }
+
+ private JButton buildRestoreModelButton() {
+ return new JButton(this.buildRestoreModelAction());
+ }
+
+ private Action buildRestoreModelAction() {
+ Action action = new AbstractAction("restore model") {
+ public void actionPerformed(ActionEvent event) {
+ RadioButtonModelAdapterUITest.this.restoreModel();
+ }
+ };
+ action.setEnabled(true);
+ return action;
+ }
+
+ void restoreModel() {
+ this.testModelHolder.setValue(this.testModel);
+ }
+
+ private JButton buildPrintModelButton() {
+ return new JButton(this.buildPrintModelAction());
+ }
+
+ private Action buildPrintModelAction() {
+ Action action = new AbstractAction("print model") {
+ public void actionPerformed(ActionEvent event) {
+ RadioButtonModelAdapterUITest.this.printModel();
+ }
+ };
+ action.setEnabled(true);
+ return action;
+ }
+
+ void printModel() {
+ System.out.println(this.testModel);
+ }
+
+
+ private static class TestModel extends AbstractModel {
+ private String color;
+ public static final String COLOR_PROPERTY = "color";
+ public static final String RED = "red";
+ public static final String GREEN = "green";
+ public static final String BLUE = "blue";
+ public static final String DEFAULT_COLOR = RED;
+ public static final String[] VALID_COLORS = {
+ RED,
+ GREEN,
+ BLUE
+ };
+
+ public TestModel() {
+ this(DEFAULT_COLOR);
+ }
+ public TestModel(String color) {
+ this.color = color;
+ }
+ public String getColor() {
+ return this.color;
+ }
+ public void setColor(String color) {
+ if ( ! ArrayTools.contains(VALID_COLORS, color)) {
+ throw new IllegalArgumentException(color);
+ }
+ Object old = this.color;
+ this.color = color;
+ this.firePropertyChanged(COLOR_PROPERTY, old, color);
+ }
+ @Override
+ public String toString() {
+ return "TestModel(" + this.color + ")";
+ }
+ }
+
+}

Back to the top