1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
31
32
33
34
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
148 }
149
150
151
152
153
154
155
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
190
191 public JComponent $$$getRootComponent$$$() {
192 return rootComponent;
193 }
194 }