KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > ozoneDB > adminGui > main > ConnectionDialog


1 // You can redistribute this software and/or modify it under the terms of
2
// the Ozone Library License version 1 published by ozone-db.org.
3
//
4
// The original code and portions created by SMB are
5
// Copyright (C) 1997-@year@ by SMB GmbH. All rights reserved.
6
//
7
// $Id: $
8
package org.ozoneDB.adminGui.main;
9
10 import org.ozoneDB.adminGui.res.Images;
11 import org.ozoneDB.adminGui.widget.MessageBox;
12 import org.ozoneDB.adminGui.util.ThreadWorker;
13 import org.ozoneDB.ExternalDatabase;
14
15 import javax.swing.*;
16 import java.awt.*;
17 import java.awt.event.ActionListener JavaDoc;
18 import java.awt.event.ActionEvent JavaDoc;
19 import java.awt.event.WindowAdapter JavaDoc;
20 import java.awt.event.WindowEvent JavaDoc;
21
22 /**
23  * @author Per Nyfelt
24  */

25 public class ConnectionDialog extends JDialog {
26     private static final Dimension DIMENSION_DIALOG = new Dimension(450, 300);
27     private static final Dimension DIMENSION_BUTTON = new Dimension(20, 10);
28     private JTextField dbURLTextField;
29     private ExternalDatabase db;
30     private boolean dbHasChanged = false;
31     private String JavaDoc url;
32
33     public ConnectionDialog(JFrame owner, String JavaDoc title) {
34         super(owner, title, true);
35         layoutDialog();
36     }
37
38     public boolean isDbChanged() {
39         return dbHasChanged;
40     }
41
42     public ExternalDatabase getDb() {
43         return db;
44     }
45
46     public String JavaDoc getUrl() {
47         return url;
48     }
49
50     private void layoutDialog() {
51         setSize(DIMENSION_DIALOG);
52         setLocationRelativeTo(null);
53         this.addWindowListener(new ConnectionDialog.CloseWindowListener());
54
55         Container cp = getContentPane();
56         cp.setBackground(Color.white);
57
58         //Add Logo
59
JLabel logo = new JLabel(new ImageIcon(this.getClass().getResource(Images.IMAGE_CONNECT)));
60         cp.add(logo, BorderLayout.NORTH);
61
62         //Add input panel
63
cp.add(createInputPanel(), BorderLayout.CENTER);
64
65         //Add button panel
66
cp.add(createButtonPanel(), BorderLayout.SOUTH);
67     }
68
69     private JPanel createInputPanel() {
70         JPanel inputPanel = new JPanel();
71
72         inputPanel.setLayout(new GridBagLayout());
73         inputPanel.setBackground(Color.white);
74
75         //GBC for labels
76
GridBagConstraints gbcLabel = new GridBagConstraints();
77         gbcLabel.anchor = GridBagConstraints.EAST;
78         gbcLabel.insets = new Insets(10, 0, 0, 5);
79         gbcLabel.weightx = 0;
80         gbcLabel.weighty = 0;
81
82         //GBC for values
83
GridBagConstraints gbcValue = new GridBagConstraints();
84         gbcValue.anchor = GridBagConstraints.WEST;
85         gbcValue.insets = new Insets(10, 0, 0, 0);
86         gbcValue.weightx = 0;
87         gbcValue.weighty = 0;
88
89         //Add UserName
90
JLabel dbURLLabel = new JLabel("DB URL");
91         dbURLLabel.setForeground(Color.darkGray);
92         inputPanel.add(dbURLLabel, gbcLabel);
93         dbURLTextField = new JTextField("ozonedb:remote://localhost:3333");
94         inputPanel.add(dbURLTextField, gbcValue);
95
96         return inputPanel;
97     }
98
99     private JPanel createButtonPanel() {
100         JPanel buttonPanel = new JPanel();
101         buttonPanel.setBackground(Color.white);
102
103         JButton logonButton = new JButton("Connect");
104         logonButton.setMinimumSize(DIMENSION_BUTTON);
105         logonButton.setDefaultCapable(true);
106         buttonPanel.add(logonButton);
107
108         JButton cancelButton = new JButton("Cancel");
109         cancelButton.setMinimumSize(DIMENSION_BUTTON);
110         buttonPanel.add(cancelButton);
111
112         logonButton.addActionListener(new ConnectionDialog.ConnectListener());
113         cancelButton.addActionListener(new ConnectionDialog.cancelListener());
114         getRootPane().setDefaultButton(logonButton);
115
116         return buttonPanel;
117     }
118
119     private class ConnectListener implements ActionListener JavaDoc {
120         public void actionPerformed(ActionEvent JavaDoc ae) {
121             ThreadWorker worker = new ThreadWorker() {
122                 public Object JavaDoc construct() {
123                     setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
124                     return dbURLTextField.getText();
125                 }
126
127                 public void finished() {
128                     String JavaDoc dbURL = (String JavaDoc) get();
129                     if (dbURL.equals("")) {
130                         setCursor(Cursor.getDefaultCursor());
131                         MessageBox.showError("Error opening db", "No URL specified");
132                         ConnectionDialog.this.setCursor(Cursor.getDefaultCursor());
133                         return;
134                     }
135                     try {
136                         db = ExternalDatabase.openDatabase(dbURL);
137                         dbHasChanged = true;
138                         url = dbURL;
139                         ConnectionDialog.this.setVisible(false);
140                         ConnectionDialog.this.setCursor(Cursor.getDefaultCursor());
141                         setCursor(Cursor.getDefaultCursor());
142                     } catch (Exception JavaDoc e) {
143                         e.printStackTrace();
144                         setCursor(Cursor.getDefaultCursor());
145                         MessageBox.showError("Error opening db", e.toString());
146                         ConnectionDialog.this.setCursor(Cursor.getDefaultCursor());
147                     }
148                 }
149             };
150             worker.start();
151         }
152
153     }
154
155     private class cancelListener implements ActionListener JavaDoc {
156         public void actionPerformed(ActionEvent JavaDoc ae) {
157             ConnectionDialog.this.setVisible(false);
158             ConnectionDialog.this.dispose();
159         }
160     }
161
162     private class CloseWindowListener extends WindowAdapter JavaDoc {
163         public void windowClosing(WindowEvent JavaDoc we) {
164             ConnectionDialog.this.setVisible(false);
165             ConnectionDialog.this.dispose();
166         }
167     }
168 }
169
Popular Tags