1
/*FreeMind - A Program for creating and viewing Mindmaps
2
*Copyright (C) 2000-2008 Joerg Mueller, Daniel Polansky, Christian Foltin and others.
4
*See COPYING for Details
6
*This program is free software; you can redistribute it and/or
7
*modify it under the terms of the GNU General Public License
8
*as published by the Free Software Foundation; either version 2
9
*of the License, or (at your option) any later version.
11
*This program is distributed in the hope that it will be useful,
12
*but WITHOUT ANY WARRANTY; without even the implied warranty of
13
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
*GNU General Public License for more details.
16
*You should have received a copy of the GNU General Public License
17
*along with this program; if not, write to the Free Software
18
*Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20
* Created on 28.12.2008
22
/* $Id: DatabaseBasics.java,v 1.1.2.4 2009/02/04 19:31:21 christianfoltin Exp $ */
23
package plugins.collaboration.database;
25
import java.awt.BorderLayout;
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28
import java.awt.event.WindowAdapter;
29
import java.awt.event.WindowEvent;
30
import java.beans.PropertyChangeEvent;
31
import java.beans.PropertyChangeListener;
32
import java.sql.ResultSet;
33
import java.util.Arrays;
34
import java.util.Iterator;
35
import java.util.List;
36
import java.util.Vector;
38
import javax.swing.AbstractAction;
39
import javax.swing.Action;
40
import javax.swing.JButton;
41
import javax.swing.JDialog;
42
import javax.swing.WindowConstants;
44
import com.jgoodies.forms.builder.DefaultFormBuilder;
45
import com.jgoodies.forms.factories.ButtonBarFactory;
46
import com.jgoodies.forms.layout.FormLayout;
48
import freemind.common.NumberProperty;
49
import freemind.common.PropertyBean;
50
import freemind.common.PropertyControl;
51
import freemind.main.Tools;
52
import freemind.modes.MindMapNode;
53
import freemind.modes.mindmapmode.MindMapController;
54
import freemind.modes.mindmapmode.hooks.MindMapNodeHookAdapter;
56
public class DatabaseBasics extends MindMapNodeHookAdapter {
58
public final static String SLAVE_HOOK_NAME = "plugins/collaboration/database/database_slave_plugin";
59
public final static String SLAVE_STARTER_NAME = "plugins/collaboration/database/database_slave_starter_plugin";
60
protected static final String ROW_PK = "PK";
61
protected static final String ROW_ACTION = "do_action";
62
protected static final String TABLE_XML_ACTIONS = "XmlActions";
63
protected static final String ROW_UNDOACTION = "undo_action";
64
protected static final String ROW_MAP = "map";
65
private static final String PORT_PROPERTY = "plugins.collaboration.database.port";
66
protected static java.util.logging.Logger logger = null;
67
protected UpdateThread mUpdateThread = null;
69
public interface ResultHandler {
70
void processResults(ResultSet rs);
73
public DatabaseBasics() {
77
public void startupMapHook() {
78
super.startupMapHook();
80
logger = freemind.main.Resources.getInstance().getLogger(
81
this.getClass().getName());
85
protected static void togglePermanentHook(MindMapController controller) {
86
MindMapNode rootNode = controller.getRootNode();
87
List selecteds = Arrays.asList(new MindMapNode[] { rootNode });
88
controller.addHook(rootNode, selecteds, SLAVE_HOOK_NAME);
92
protected void setPortProperty(final NumberProperty portProperty) {
93
getMindMapController().getFrame().setProperty(PORT_PROPERTY,
94
portProperty.getValue());
97
protected NumberProperty getPortProperty() {
98
final NumberProperty portProperty = new NumberProperty(
99
"The port to open", "Port", 1024, 32767, 1);
101
portProperty.setValue(""
102
+ getMindMapController().getFrame().getIntProperty(PORT_PROPERTY, 9001));
106
public static abstract class FormDialogValidator {
108
* @return true, if ok should be enabled.
110
public abstract boolean isValid();
113
public static class FormDialog extends JDialog implements
114
PropertyChangeListener {
115
private final MindMapController mController2;
116
private boolean mSuccess = false;
117
private JButton mOkButton;
118
private FormDialogValidator mFormDialogValidator;
120
public boolean isSuccess() {
124
public FormDialog(MindMapController pController) {
125
super(pController.getFrame().getJFrame());
126
mController2 = pController;
129
public void setUp(Vector controls) {
130
setUp(controls, new FormDialogValidator() {
132
public boolean isValid() {
138
public void setUp(Vector controls, FormDialogValidator pValidator) {
139
mFormDialogValidator = pValidator;
141
getContentPane().setLayout(new BorderLayout());
142
FormLayout formLayout = new FormLayout(
143
"right:max(40dlu;p), 4dlu, 80dlu, 7dlu", "");
144
DefaultFormBuilder builder = new DefaultFormBuilder(formLayout);
145
builder.setDefaultDialogBorder();
146
for (Iterator it = controls.iterator(); it.hasNext();) {
147
PropertyControl prop = (PropertyControl) it.next();
148
prop.layout(builder, mController2);
149
PropertyBean bean = (PropertyBean) prop;
150
bean.addPropertyChangeListener(this);
152
getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
153
JButton cancelButton = new JButton(getText("Cancel"));
154
cancelButton.addActionListener(new ActionListener() {
156
public void actionPerformed(ActionEvent arg0) {
161
mOkButton = new JButton(getText("OK"));
162
mOkButton.addActionListener(new ActionListener() {
164
public void actionPerformed(ActionEvent arg0) {
170
getRootPane().setDefaultButton(mOkButton);
171
getContentPane().add(
172
ButtonBarFactory.buildOKCancelBar(cancelButton, mOkButton),
174
setTitle("Enter Password Dialog");
175
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
176
addWindowListener(new WindowAdapter() {
177
public void windowClosing(WindowEvent event) {
181
Action action = new AbstractAction() {
183
public void actionPerformed(ActionEvent arg0) {
187
Action actionSuccess = new AbstractAction() {
189
public void actionPerformed(ActionEvent arg0) {
194
Tools.addEscapeActionToDialog(this, action);
195
Tools.addKeyActionToDialog(this, actionSuccess, "ENTER",
203
private void closeWindow() {
207
String getText(String text) {
211
public void propertyChange(PropertyChangeEvent pEvt) {
212
logger.info("Property change " + pEvt);
213
mOkButton.setEnabled(mFormDialogValidator.isValid());
218
public void setUpdateThread(UpdateThread pUpdateThread) {
219
mUpdateThread = pUpdateThread;
222
public UpdateThread getUpdateThread() {
223
return mUpdateThread;
b'\\ No newline at end of file'