001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.collab.provider.im.ui;
042:
043: /**
044: *
045: * @author Alexandr Scherbatiy
046: */
047:
048: import org.netbeans.modules.collab.core.Debug;
049: import org.openide.util.NbBundle;
050:
051: import org.netbeans.modules.collab.provider.im.IMReconnect;
052: import java.awt.Dialog;
053: import java.awt.Frame;
054: import org.openide.DialogDescriptor;
055: import org.openide.DialogDisplayer;
056: import org.openide.windows.WindowManager;
057:
058: public class ServerStatusPanel extends javax.swing.JPanel {
059:
060: //private boolean showDialog;
061: //private boolean doReconnect;
062:
063: private IMReconnect reconnectClass;
064: private boolean alive;
065: private String server;
066:
067: /** Creates new form NewJPanel */
068: public ServerStatusPanel(IMReconnect reconnectClass, String server) {
069: super ();
070: this .server = server;
071: initComponents();
072:
073: this .reconnectClass = reconnectClass;
074: alive = true;
075: createDialog();
076: }
077:
078: /** This method is called from within the constructor to
079: * initialize the form.
080: * WARNING: Do NOT modify this code. The content of this method is
081: * always regenerated by the Form Editor.
082: */
083: // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
084: private void initComponents() {
085: northPanel = new javax.swing.JPanel();
086: centerPanel = new javax.swing.JPanel();
087: labelPanel = new javax.swing.JPanel();
088: connectionInterruptedLabel = new javax.swing.JLabel();
089: attemptToReconnectLabel = new javax.swing.JLabel();
090: progressPanel = new javax.swing.JPanel();
091: progress = new javax.swing.JProgressBar();
092: workPanel = new javax.swing.JPanel();
093: checkBoxesPanel = new javax.swing.JPanel();
094: doNotReconnect = new javax.swing.JCheckBox();
095: doNotShow = new javax.swing.JCheckBox();
096: buttonPanel = new javax.swing.JPanel();
097: startStopPanel = new javax.swing.JPanel();
098: startButton = new javax.swing.JButton();
099: stopButton = new javax.swing.JButton();
100: okCancelPanel = new javax.swing.JPanel();
101: okButton = new javax.swing.JButton();
102: cancelButtton = new javax.swing.JButton();
103: westPanel = new javax.swing.JPanel();
104: eastPanel = new javax.swing.JPanel();
105: southPanel = new javax.swing.JPanel();
106:
107: FormListener formListener = new FormListener();
108:
109: setLayout(new java.awt.BorderLayout());
110:
111: setPreferredSize(new java.awt.Dimension(350, 175));
112: northPanel.setPreferredSize(new java.awt.Dimension(400, 15));
113: add(northPanel, java.awt.BorderLayout.NORTH);
114:
115: centerPanel.setLayout(new java.awt.BorderLayout());
116:
117: labelPanel.setLayout(new javax.swing.BoxLayout(labelPanel,
118: javax.swing.BoxLayout.Y_AXIS));
119:
120: connectionInterruptedLabel.setForeground(java.awt.Color.red);
121: org.openide.awt.Mnemonics.setLocalizedText(
122: connectionInterruptedLabel, org.openide.util.NbBundle
123: .getMessage(ServerStatusPanel.class,
124: "LBL_ConnectionInterrupted"));
125: labelPanel.add(connectionInterruptedLabel);
126: connectionInterruptedLabel.getAccessibleContext()
127: .setAccessibleDescription(
128: org.openide.util.NbBundle.getMessage(
129: ServerStatusPanel.class,
130: "A11Y_DESC_CONNECTIONLABEL"));
131:
132: org.openide.awt.Mnemonics.setLocalizedText(
133: attemptToReconnectLabel, org.openide.util.NbBundle
134: .getMessage(ServerStatusPanel.class,
135: "LBL_AttemptingToReconnect",
136: new Object[] { server }));
137: labelPanel.add(attemptToReconnectLabel);
138: attemptToReconnectLabel.getAccessibleContext()
139: .setAccessibleDescription(
140: org.openide.util.NbBundle.getMessage(
141: ServerStatusPanel.class,
142: "A11Y_DESC_ATTEMPTTOCONNECTLABEL"));
143:
144: centerPanel.add(labelPanel, java.awt.BorderLayout.NORTH);
145:
146: progress.setPreferredSize(new java.awt.Dimension(250, 20));
147: progress.setStringPainted(true);
148: progressPanel.add(progress);
149:
150: centerPanel.add(progressPanel, java.awt.BorderLayout.CENTER);
151:
152: workPanel.setLayout(new java.awt.BorderLayout());
153:
154: checkBoxesPanel.setLayout(new javax.swing.BoxLayout(
155: checkBoxesPanel, javax.swing.BoxLayout.Y_AXIS));
156:
157: org.openide.awt.Mnemonics.setLocalizedText(doNotReconnect,
158: org.openide.util.NbBundle.getMessage(
159: ServerStatusPanel.class, "LBL_DoNotReconnect"));
160: checkBoxesPanel.add(doNotReconnect);
161: doNotReconnect.getAccessibleContext().setAccessibleDescription(
162: org.openide.util.NbBundle.getMessage(
163: ServerStatusPanel.class,
164: "A11Y_DESC_NOTRECONNECTCKBOX"));
165:
166: org.openide.awt.Mnemonics.setLocalizedText(doNotShow,
167: org.openide.util.NbBundle.getMessage(
168: ServerStatusPanel.class, "LBL_DoNotShow"));
169: checkBoxesPanel.add(doNotShow);
170: doNotShow.getAccessibleContext().setAccessibleDescription(
171: org.openide.util.NbBundle.getMessage(
172: ServerStatusPanel.class,
173: "A11Y_DESC_NOTSHOWCKBOX"));
174:
175: workPanel.add(checkBoxesPanel, java.awt.BorderLayout.CENTER);
176:
177: buttonPanel.setLayout(new java.awt.BorderLayout());
178:
179: org.openide.awt.Mnemonics.setLocalizedText(startButton,
180: org.openide.util.NbBundle.getMessage(
181: ServerStatusPanel.class, "LBL_Start"));
182: startButton.addActionListener(formListener);
183:
184: startStopPanel.add(startButton);
185: startButton.getAccessibleContext().setAccessibleDescription(
186: org.openide.util.NbBundle.getMessage(
187: ServerStatusPanel.class, "A11Y_DESC_STARTBTN"));
188:
189: org.openide.awt.Mnemonics.setLocalizedText(stopButton,
190: org.openide.util.NbBundle.getMessage(
191: ServerStatusPanel.class, "LBL_Stop"));
192: stopButton.addActionListener(formListener);
193:
194: startStopPanel.add(stopButton);
195: stopButton.getAccessibleContext().setAccessibleDescription(
196: org.openide.util.NbBundle.getMessage(
197: ServerStatusPanel.class, "A11Y_DESC_STOPBTN"));
198:
199: buttonPanel.add(startStopPanel, java.awt.BorderLayout.WEST);
200:
201: org.openide.awt.Mnemonics.setLocalizedText(okButton,
202: org.openide.util.NbBundle.getMessage(
203: ServerStatusPanel.class, "LBL_OK"));
204: okButton.addActionListener(formListener);
205:
206: okCancelPanel.add(okButton);
207: okButton.getAccessibleContext().setAccessibleDescription(
208: org.openide.util.NbBundle.getMessage(
209: ServerStatusPanel.class, "A11Y_DESC_OKBTN"));
210:
211: org.openide.awt.Mnemonics.setLocalizedText(cancelButtton,
212: org.openide.util.NbBundle.getMessage(
213: ServerStatusPanel.class, "LBL_Cancel"));
214: cancelButtton.addActionListener(formListener);
215:
216: okCancelPanel.add(cancelButtton);
217: cancelButtton.getAccessibleContext()
218: .setAccessibleDescription(
219: org.openide.util.NbBundle.getMessage(
220: ServerStatusPanel.class,
221: "A11Y_DESC_CANCELBTN"));
222:
223: buttonPanel.add(okCancelPanel, java.awt.BorderLayout.EAST);
224:
225: workPanel.add(buttonPanel, java.awt.BorderLayout.SOUTH);
226:
227: centerPanel.add(workPanel, java.awt.BorderLayout.SOUTH);
228:
229: add(centerPanel, java.awt.BorderLayout.CENTER);
230:
231: westPanel.setPreferredSize(new java.awt.Dimension(15, 150));
232: add(westPanel, java.awt.BorderLayout.WEST);
233:
234: eastPanel.setPreferredSize(new java.awt.Dimension(15, 150));
235: add(eastPanel, java.awt.BorderLayout.EAST);
236:
237: southPanel.setPreferredSize(new java.awt.Dimension(400, 15));
238: add(southPanel, java.awt.BorderLayout.SOUTH);
239:
240: }
241:
242: // Code for dispatching events from components to event handlers.
243:
244: private class FormListener implements java.awt.event.ActionListener {
245: public void actionPerformed(java.awt.event.ActionEvent evt) {
246: if (evt.getSource() == startButton) {
247: ServerStatusPanel.this .startButtonActionPerformed(evt);
248: } else if (evt.getSource() == stopButton) {
249: ServerStatusPanel.this .stopButtonActionPerformed(evt);
250: } else if (evt.getSource() == okButton) {
251: ServerStatusPanel.this .okButtonActionPerformed(evt);
252: } else if (evt.getSource() == cancelButtton) {
253: ServerStatusPanel.this
254: .cancelButttonActionPerformed(evt);
255: }
256: }
257: }// </editor-fold>//GEN-END:initComponents
258:
259: private void cancelButttonActionPerformed(
260: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButttonActionPerformed
261: cancelAction();
262: }//GEN-LAST:event_cancelButttonActionPerformed
263:
264: private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
265: okAction();
266: }//GEN-LAST:event_okButtonActionPerformed
267:
268: private void stopButtonActionPerformed(
269: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stopButtonActionPerformed
270: stopAction();
271: }//GEN-LAST:event_stopButtonActionPerformed
272:
273: private void startButtonActionPerformed(
274: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startButtonActionPerformed
275: startAction();
276: }//GEN-LAST:event_startButtonActionPerformed
277:
278: public boolean isAlive() {
279: return alive;
280: }
281:
282: public void createDialog() {
283: //SyncWaitPanel panel=new SyncWaitPanel();
284: DialogDescriptor descriptor = new DialogDescriptor(this ,
285: NbBundle.getMessage(ServerStatusPanel.class,
286: "LBL_CollaborationServerReconnect")); // NOI18N
287:
288: final Object[] OPTIONS = new Object[0];
289: descriptor.setOptions(OPTIONS);
290: descriptor.setClosingOptions(OPTIONS);
291: descriptor.setModal(false);
292: descriptor.setOptionsAlign(DialogDescriptor.BOTTOM_ALIGN);
293:
294: dialog = DialogDisplayer.getDefault().createDialog(descriptor);
295: dialog.getAccessibleContext().setAccessibleDescription(
296: NbBundle.getMessage(ServerStatusPanel.class,
297: "A11Y_DESC_NbDialog"));
298: Frame mainWindow = WindowManager.getDefault().getMainWindow();
299: int windowX = mainWindow.getX();
300: int windowY = mainWindow.getY();
301: int windowWidth = mainWindow.getWidth();
302: int windowHeight = mainWindow.getHeight();
303: int dialogWidth = dialog.getWidth();
304: int dialogHeight = dialog.getHeight();
305: int dialogX = windowX + windowWidth - dialogWidth - 25;
306: int dialogY = windowY + 500;
307:
308: dialog.setLocation(dialogX, dialogY);
309: dialog.setVisible(true);
310: }
311:
312: public void startAction() {
313: progress.setString(NbBundle.getMessage(ServerStatusPanel.class,
314: "LBL_StartConnecting"));
315: progress.setIndeterminate(true);
316: startButton.setEnabled(false);
317: stopButton.setEnabled(true);
318: reconnectClass.startAction();
319: }
320:
321: public void stopAction() {
322: progress.setString(NbBundle.getMessage(ServerStatusPanel.class,
323: "LBL_StopConnecting"));
324: progress.setIndeterminate(false);
325: startButton.setEnabled(true);
326: stopButton.setEnabled(false);
327: reconnectClass.stopAction();
328:
329: }
330:
331: public void okAction() {
332: reconnectClass.setDoReconnect(!doNotReconnect.isSelected());
333: reconnectClass.setShowStatusDialog(!doNotShow.isSelected());
334: reconnectClass.okAction();
335:
336: endAction();
337: }
338:
339: public void cancelAction() {
340: reconnectClass.cancelAction();
341: endAction();
342: }
343:
344: public void endAction() {
345: alive = false;
346: setVisible(false);
347: dialog.dispose();
348: }
349:
350: private static Dialog dialog;
351:
352: // Variables declaration - do not modify//GEN-BEGIN:variables
353: private javax.swing.JLabel attemptToReconnectLabel;
354: private javax.swing.JPanel buttonPanel;
355: private javax.swing.JButton cancelButtton;
356: private javax.swing.JPanel centerPanel;
357: private javax.swing.JPanel checkBoxesPanel;
358: private javax.swing.JLabel connectionInterruptedLabel;
359: private javax.swing.JCheckBox doNotReconnect;
360: private javax.swing.JCheckBox doNotShow;
361: private javax.swing.JPanel eastPanel;
362: private javax.swing.JPanel labelPanel;
363: private javax.swing.JPanel northPanel;
364: private javax.swing.JButton okButton;
365: private javax.swing.JPanel okCancelPanel;
366: private javax.swing.JProgressBar progress;
367: private javax.swing.JPanel progressPanel;
368: private javax.swing.JPanel southPanel;
369: private javax.swing.JButton startButton;
370: private javax.swing.JPanel startStopPanel;
371: private javax.swing.JButton stopButton;
372: private javax.swing.JPanel westPanel;
373: private javax.swing.JPanel workPanel;
374: // End of variables declaration//GEN-END:variables
375:
376: }
|