/*
* Copyright 2007 - 2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.sf.jailer.ui.databrowser;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.DefaultListModel;
import net.sf.jailer.datamodel.DataModel;
import net.sf.jailer.datamodel.Table;
import net.sf.jailer.ui.UIUtil;
/**
* Dialog for selecting the table for a new table browser.
*
* @author Ralf Wisser
*/
@SuppressWarnings("serial")
public abstract class NewTableBrowser extends javax.swing.JDialog {
/** Creates new form NewTableBrowser */
public NewTableBrowser(java.awt.Frame parent, DataModel datamodel, boolean offerAlternatives) {
super(parent, true);
initComponents();
UIUtil.wireComponentWithButton(tableList, okButton);
analyzeButton.setVisible(DataBrowserContext.isSupportsDataModelUpdates());
if (offerAlternatives) {
setTitle(DataBrowserContext.getAppName(true));
okButton.setText(" Open Table ");
} else {
analyzeButton.setVisible(false);
restoreSessionButton.setVisible(false);
}
DefaultListModel model = new DefaultListModel();
List<String> tables = new ArrayList<String>();
for (Table table: datamodel.getTables()) {
tables.add(datamodel.getDisplayName(table));
}
Collections.sort(tables);
for (String tn: tables) {
model.addElement(tn);
}
tableList.setModel(model);
pack();
setSize(Math.max(400, getWidth()), 400);
setLocation(300, 100);
setVisible(true);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
tableList = new javax.swing.JList();
okButton = new javax.swing.JButton();
analyzeButton = new javax.swing.JButton();
restoreSessionButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("New Table Browser");
jPanel1.setLayout(new java.awt.GridBagLayout());
jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED), "Tables"));
tableList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
tableList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
tableList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
tableListValueChanged(evt);
}
});
jScrollPane1.setViewportView(tableList);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
jPanel1.add(jScrollPane1, gridBagConstraints);
okButton.setText(" OK ");
okButton.setEnabled(false);
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.weightx = 1.0;
jPanel1.add(okButton, gridBagConstraints);
analyzeButton.setText(" Analyze Database ");
analyzeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
analyzeButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel1.add(analyzeButton, gridBagConstraints);
restoreSessionButton.setText(" Restore Layout ");
restoreSessionButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
restoreSessionButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 16);
jPanel1.add(restoreSessionButton, gridBagConstraints);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
private void tableListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_tableListValueChanged
okButton.setEnabled(true);
}//GEN-LAST:event_tableListValueChanged
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
setVisible(false);
Object s = tableList.getSelectedValue();
if (s instanceof String) {
openTableBrowser((String) s);
}
}//GEN-LAST:event_okButtonActionPerformed
private void analyzeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_analyzeButtonActionPerformed
setVisible(false);
openDatabaseAnalyzer();
}//GEN-LAST:event_analyzeButtonActionPerformed
private void restoreSessionButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_restoreSessionButtonActionPerformed
setVisible(false);
restoreSession();
}//GEN-LAST:event_restoreSessionButtonActionPerformed
abstract void openTableBrowser(String tableName);
abstract void openDatabaseAnalyzer();
abstract void restoreSession();
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton analyzeButton;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton okButton;
private javax.swing.JButton restoreSessionButton;
private javax.swing.JList tableList;
// End of variables declaration//GEN-END:variables
}