View Javadoc

1   /**
2    * Copyright (C) 2008 Atlassian
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *    http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.atlassian.theplugin.idea.config.serverconfig;
18  
19  import com.atlassian.theplugin.commons.ServerType;
20  import com.atlassian.theplugin.commons.configuration.*;
21  import com.atlassian.theplugin.idea.config.ContentPanel;
22  import com.intellij.uiDesigner.core.GridConstraints;
23  import com.intellij.uiDesigner.core.GridLayoutManager;
24  import com.intellij.uiDesigner.core.Spacer;
25  
26  import javax.swing.*;
27  import java.awt.*;
28  
29  /**
30   * Created by IntelliJ IDEA.
31   * User: Jacek
32   * Date: 2008-03-07
33   * Time: 11:30:05
34   * To change this template use File | Settings | File Templates.
35   */
36  public class CrucibleGeneralForm extends JComponent implements ContentPanel {
37  	private JPanel rootComponent;
38  	private JSpinner pollTimeSpinner;
39  	private JRadioButton unreadCrucibleReviews;
40  	private JRadioButton never;
41  	private SpinnerModel model;
42  
43  	private transient PluginConfiguration globalPluginConfiguration;
44  
45  	private transient CrucibleConfigurationBean crucibleConfiguration;
46  
47  	private transient PluginConfiguration localPluginConfigurationCopy;
48  	private static CrucibleGeneralForm instance;
49  
50  	private CrucibleGeneralForm(PluginConfiguration globalPluginConfiguration) {
51  
52  		this.globalPluginConfiguration = globalPluginConfiguration;
53  
54  		$$$setupUI$$$();
55  
56  		model = new SpinnerNumberModel(1, 1, 1000, 1);
57  		pollTimeSpinner.setModel(model);
58  
59  		this.setLayout(new BorderLayout());
60  		add(rootComponent, BorderLayout.WEST);
61  	}
62  
63  	public static CrucibleGeneralForm getInstance(PluginConfiguration globalPluginConfiguration) {
64  		if (instance == null) {
65  			instance = new CrucibleGeneralForm(globalPluginConfiguration);
66  		}
67  		return instance;
68  	}
69  
70  
71  	@Override
72      public boolean isEnabled() {
73  		return true;
74  	}
75  
76  	public boolean isModified() {
77  		if (crucibleConfiguration.getCrucibleTooltipOption() != null) {
78  			if (crucibleConfiguration.getCrucibleTooltipOption() != getCrucibleTooltipOption()) {
79  				return true;
80  			}
81  		} else if (getCrucibleTooltipOption() != CrucibleTooltipOption.UNREAD_REVIEWS) {
82  			return true;
83  		}
84  		return (Integer) model.getValue() != crucibleConfiguration.getPollTime();
85  	}
86  
87  	public String getTitle() {
88  		return "Crucible";
89  	}
90  
91  	private CrucibleTooltipOption getCrucibleTooltipOption() {
92  		if (unreadCrucibleReviews.isSelected()) {
93  			return CrucibleTooltipOption.UNREAD_REVIEWS;
94  		} else if (never.isSelected()) {
95  			return CrucibleTooltipOption.NEVER;
96  		} else {
97  			return getDefaultTooltipOption();
98  		}
99  	}
100 
101 	public void saveData() {
102 		getLocalPluginConfigurationCopy().getCrucibleConfigurationData().setCrucibleTooltipOption(getCrucibleTooltipOption());
103 		globalPluginConfiguration.getCrucibleConfigurationData().setCrucibleTooltipOption(getCrucibleTooltipOption());
104 		getLocalPluginConfigurationCopy().getCrucibleConfigurationData().setPollTime((Integer) model.getValue());
105 		globalPluginConfiguration.getCrucibleConfigurationData().setPollTime((Integer) model.getValue());
106 	}
107 
108 	public void setData(PluginConfiguration config) {
109 
110 		localPluginConfigurationCopy = config;
111 
112 		crucibleConfiguration = localPluginConfigurationCopy.getCrucibleConfigurationData();
113 		CrucibleTooltipOption configOption = this.crucibleConfiguration.getCrucibleTooltipOption();
114 
115 		if (configOption != null) {
116 			switch (configOption) {
117 				case UNREAD_REVIEWS:
118 					unreadCrucibleReviews.setSelected(true);
119 					break;
120 				case NEVER:
121 					never.setSelected(true);
122 					break;
123 				default:
124 					never.setSelected(true);
125 					break;
126 			}
127 		} else {
128 			setDefaultTooltipOption();
129 		}
130 
131 		model.setValue(crucibleConfiguration.getPollTime());
132 	}
133 
134 	private void setDefaultTooltipOption() {
135 		unreadCrucibleReviews.setSelected(true);
136 	}
137 
138 	private CrucibleTooltipOption getDefaultTooltipOption() {
139 		return CrucibleTooltipOption.UNREAD_REVIEWS;
140 	}
141 
142 	public PluginConfiguration getLocalPluginConfigurationCopy() {
143 		return localPluginConfigurationCopy;
144 	}
145 
146 	private void createUIComponents() {
147 		// TODO: place custom component creation code here
148 	}
149 
150 	/**
151 	 * Method generated by IntelliJ IDEA GUI Designer
152 	 * >>> IMPORTANT!! <<<
153 	 * DO NOT edit this method OR call it in your code!
154 	 *
155 	 * @noinspection ALL
156 	 */
157 	private void $$$setupUI$$$() {
158 		rootComponent = new JPanel();
159 		rootComponent.setLayout(new GridLayoutManager(4, 3, new Insets(0, 0, 0, 0), -1, -1));
160 		rootComponent.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12), null));
161 		final JLabel label1 = new JLabel();
162 		label1.setText("Polling Time [minutes]:");
163 		rootComponent.add(label1, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
164 		final JPanel panel1 = new JPanel();
165 		panel1.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
166 		rootComponent.add(panel1, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
167 		pollTimeSpinner = new JSpinner();
168 		panel1.add(pollTimeSpinner, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(50, -1), null, 0, false));
169 		final Spacer spacer1 = new Spacer();
170 		rootComponent.add(spacer1, new GridConstraints(2, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false));
171 		final Spacer spacer2 = new Spacer();
172 		rootComponent.add(spacer2, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(70, 14), null, 0, false));
173 		final JLabel label2 = new JLabel();
174 		label2.setText("Show Popup:");
175 		rootComponent.add(label2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
176 		unreadCrucibleReviews = new JRadioButton();
177 		unreadCrucibleReviews.setText("Unread crucible reviews exist");
178 		rootComponent.add(unreadCrucibleReviews, new GridConstraints(0, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
179 		never = new JRadioButton();
180 		never.setText("Never");
181 		rootComponent.add(never, new GridConstraints(1, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
182 		ButtonGroup buttonGroup;
183 		buttonGroup = new ButtonGroup();
184 		buttonGroup.add(unreadCrucibleReviews);
185 		buttonGroup.add(never);
186 	}
187 
188 	/**
189 	 * @noinspection ALL
190 	 */
191 	public JComponent $$$getRootComponent$$$() {
192 		return rootComponent;
193 	}
194 }