/*
* This software is subject to the terms of the Eclipse Public License v1.0
* Agreement, available at the following URL:
* http://www.eclipse.org/legal/epl-v10.html.
* You must accept the terms of that agreement to use this software.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package mondrian.gui;
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;
import java.util.List;
import javax.swing.*;
import javax.swing.table.TableModel;
/**
*
* @author swood
*/
public class PreferencesSchemasDialog extends JDialog {
PreferencesDialog preferences = null;
JdbcMetaData jdbcMetadata = null;
String selectedSchemaString = null;
boolean accepted = false;
public PreferencesSchemasDialog() {
initComponents();
}
public PreferencesSchemasDialog(
PreferencesDialog preferences,
JdbcMetaData jdbcMetadata)
{
this.preferences = preferences;
this.jdbcMetadata = jdbcMetadata;
initComponents();
}
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
cancelButton = new javax.swing.JButton();
okButton = new javax.swing.JButton();
setLayout(new java.awt.GridBagLayout());
addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
closeDialog(evt);
}
});
jTable1.setModel(getSchemaTableModel());
jTable1.setRowSelectionAllowed(false);
jScrollPane1.setViewportView(jTable1);
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(jScrollPane1, gridBagConstraints);
cancelButton.setText(
getResourceConverter().getString(
"preferences.cancelButton.title",
"Cancel"));
cancelButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
closeDialog(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(cancelButton, gridBagConstraints);
cancelButton.setText(
getResourceConverter().getString(
"preferences.okButton.title",
"OK"));
okButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
acceptButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(okButton, gridBagConstraints);
pack();
}
private void acceptButtonActionPerformed(ActionEvent evt) {
TableModel tm = jTable1.getModel();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < tm.getRowCount(); i++) {
Boolean selected = (Boolean) tm.getValueAt(i, 0);
if (selected) {
if (sb.length() > 0) {
sb.append(",");
}
sb.append((String) tm.getValueAt(i, 1));
}
}
selectedSchemaString = sb.toString();
accepted = true;
setVisible(false);
dispose();
}
private void closeDialog(WindowEvent evt) {
setVisible(false);
dispose();
}
private void closeDialog(ActionEvent evt) {
setVisible(false);
dispose();
}
public boolean isAccepted() {
return accepted;
}
public TableModel getSchemaTableModel() {
List<String> allSchemaNames = jdbcMetadata.listAllSchemas();
String currentSchemas = preferences.getDatabaseSchema();
boolean selectedSchemas[] = new boolean[allSchemaNames.size()];
Arrays.fill(selectedSchemas, false);
// Validate entered schemas
if (currentSchemas != null && currentSchemas.trim().length() > 0) {
String schemasArray[] = currentSchemas.trim().split("[,;]");
for (int i = 0; i < schemasArray.length; i++) {
// trim the names, removing empties
String enteredSchemaName = schemasArray[i].trim();
if (enteredSchemaName.length() > 0) {
for (int j = 0; j < allSchemaNames.size(); j++) {
String actualSchemaName = allSchemaNames.get(j);
if (actualSchemaName.equalsIgnoreCase(
enteredSchemaName))
{
selectedSchemas[j] = true;
break;
}
}
}
}
}
Object [][] table = new Object [allSchemaNames.size()][2];
for (int i = 0; i < allSchemaNames.size(); i++) {
table[i][0] = new Boolean(selectedSchemas[i]);
table[i][1] = allSchemaNames.get(i);
}
return new javax.swing.table.DefaultTableModel(
table,
new String [] {
"Select", "Schema"
})
{
Class[] types = {Boolean.class, String.class};
boolean[] canEdit = {true, false};
public Class getColumnClass(int columnIndex) {
return types[columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit[columnIndex];
}
};
}
/**
* @return the workbench i18n converter
*/
public I18n getResourceConverter() {
return preferences.getResourceConverter();
}
private javax.swing.JButton cancelButton;
private javax.swing.JButton okButton;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
}
// End PreferencesSchemasDialog.java