/*******************************************************************************
* Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.tools.workbench.mappingsplugin.ui.db;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.Action;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.eclipse.persistence.tools.workbench.framework.context.WorkbenchContext;
import org.eclipse.persistence.tools.workbench.framework.ui.dialog.AbstractDialog;
import org.eclipse.persistence.tools.workbench.framework.uitools.SwingComponentFactory;
/**
* very simple dialog used for naming new tables added to the database
* and renaming existing tables; clients must check the validity of
* the name
*/
public class TableNameDialog
extends AbstractDialog
{
private JLabel messageLabel;
private JTextField catalogTextField;
private JTextField schemaTextField;
private JTextField shortNameTextField;
// ********** constructors/initialization **********
TableNameDialog(WorkbenchContext context, String title, String message) {
this(context, title, message, null);
}
TableNameDialog(WorkbenchContext context, String title, String message, String initialShortName) {
this(context, title, message, null, null, initialShortName);
}
TableNameDialog(WorkbenchContext context, String title, String message, String initialCatalog, String initialSchema, String initialShortName) {
super(context);
this.setTitle(title);
this.messageLabel = new JLabel(message);
this.catalogTextField = new JTextField(initialCatalog, 30);
this.schemaTextField = new JTextField(initialSchema, 30);
this.shortNameTextField = new JTextField(initialShortName, 30);
}
protected Component initialFocusComponent() {
return this.catalogTextField;
}
protected String helpTopicId() {
return "dialog.newTable";
}
protected Component buildMainPanel() {
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
// message label
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 1;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.LINE_START;
constraints.insets = new Insets(0, 0, 0, 0);
panel.add(this.messageLabel, constraints);
// catalog label
JLabel catalogLabel = SwingComponentFactory.buildLabel("NEW_CATALOG_LABEL", this.resourceRepository());
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.LINE_START;
constraints.insets = new Insets(5, 0, 0, 0);
panel.add(catalogLabel, constraints);
// catalog text field
this.helpManager().addTopicID(this.catalogTextField, this.helpTopicId() + ".catalog");
constraints.gridx = 0;
constraints.gridy = 2;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 1;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.anchor = GridBagConstraints.CENTER;
constraints.insets = new Insets(1, 0, 0, 0);
panel.add(this.catalogTextField, constraints);
catalogLabel.setLabelFor(this.catalogTextField);
// schema label
JLabel schemaLabel = SwingComponentFactory.buildLabel("NEW_SCHEMA_LABEL", this.resourceRepository());
constraints.gridx = 0;
constraints.gridy = 3;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.LINE_START;
constraints.insets = new Insets(5, 0, 0, 0);
panel.add(schemaLabel, constraints);
// schema text field
this.helpManager().addTopicID(this.schemaTextField, this.helpTopicId() + ".schema");
constraints.gridx = 0;
constraints.gridy = 4;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 1;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.anchor = GridBagConstraints.CENTER;
constraints.insets = new Insets(1, 0, 0, 0);
panel.add(this.schemaTextField, constraints);
schemaLabel.setLabelFor(this.schemaTextField);
// short name label
JLabel shortNameLabel = SwingComponentFactory.buildLabel("NEW_TABLE_NAME_LABEL", this.resourceRepository());
constraints.gridx = 0;
constraints.gridy = 5;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.LINE_START;
constraints.insets = new Insets(5, 0, 0, 0);
panel.add(shortNameLabel, constraints);
// short name text field
this.helpManager().addTopicID(this.shortNameTextField, this.helpTopicId() + ".name");
constraints.gridx = 0;
constraints.gridy = 6;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 1;
constraints.weighty = 1;
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.anchor = GridBagConstraints.CENTER;
constraints.insets = new Insets(1, 0, 0, 0);
panel.add(this.shortNameTextField, constraints);
this.shortNameTextField.getDocument().addDocumentListener(this.buildDocumentListener());
shortNameLabel.setLabelFor(this.shortNameTextField);
return panel;
}
// ********** behavior **********
private DocumentListener buildDocumentListener() {
return new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
// do nothing
}
public void insertUpdate(DocumentEvent e) {
TableNameDialog.this.getOKAction().setEnabled(e.getDocument().getLength() != 0);
}
public void removeUpdate(DocumentEvent e) {
TableNameDialog.this.getOKAction().setEnabled(e.getDocument().getLength() != 0);
}
};
}
/**
* broaden access to method a bit
*/
protected Action getOKAction() {
return super.getOKAction();
}
// ********** queries **********
String catalog() {
String catalog = this.catalogTextField.getText();
return (catalog.length() == 0) ? null : catalog;
}
String schema() {
String schema = this.schemaTextField.getText();
return (schema.length() == 0) ? null : schema;
}
String shortName() {
String shortName = this.shortNameTextField.getText();
return (shortName.length() == 0) ? null : shortName;
}
}