Package net.sourceforge.squirrel_sql.plugins.mssql.gui

Source Code of net.sourceforge.squirrel_sql.plugins.mssql.gui.GenerateSqlDialog

package net.sourceforge.squirrel_sql.plugins.mssql.gui;

/*
* Copyright (C) 2004 Ryan Walberg <generalpf@yahoo.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.DefaultTableModel;

import net.sourceforge.squirrel_sql.client.gui.builders.UIFactory;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.schemainfo.ObjFilterMatcher;
import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo;
import net.sourceforge.squirrel_sql.fw.sql.IProcedureInfo;
import net.sourceforge.squirrel_sql.fw.sql.ITableInfo;
import net.sourceforge.squirrel_sql.fw.sql.IUDTInfo;
import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin;
import net.sourceforge.squirrel_sql.plugins.mssql.util.DatabaseObjectInfoRenderer;
import net.sourceforge.squirrel_sql.plugins.mssql.util.DatabaseObjectInfoTableModel;
import net.sourceforge.squirrel_sql.plugins.mssql.util.MssqlIntrospector;

import com.jgoodies.forms.builder.ButtonBarBuilder;
import com.jgoodies.forms.factories.Borders;

public class GenerateSqlDialog extends JDialog {

  private static final StringManager s_stringMgr =
    StringManagerFactory.getStringManager(GenerateSqlDialog.class);


    private ISession _session;
    private MssqlPlugin _plugin;
    private IDatabaseObjectInfo[] _dbObjs;
   
    private JTable _availableTable;
    private JTable _selectedTable;
    private JCheckBox _generateCreateCheckbox;
    private JCheckBox _generateDropCheckbox;
    private JCheckBox _generateDependentCheckbox;
    private JCheckBox _includeHeadersCheckbox;
    private JCheckBox _extendedPropsCheckbox;
    private JCheckBox _onlySevenCheckbox;
    private JTextArea _templateArea;
    private JCheckBox _scriptDatabaseCheckbox;
    private JCheckBox _scriptUsersAndRolesCheckbox;
    private JCheckBox _scriptLoginsCheckbox;
    private JCheckBox _scriptPermissionsCheckbox;
    private JCheckBox _scriptIndexesCheckbox;
    private JCheckBox _scriptFTIndexesCheckbox;
    private JCheckBox _scriptTriggersCheckbox;
    private JCheckBox _scriptConstraintsCheckbox;
    private JRadioButton _OEMRadio;
    private JRadioButton _ANSIRadio;
    private JRadioButton _UnicodeRadio;
    private JRadioButton _oneFileRadio;
    private JRadioButton _separateFilesRadio;
   
    private boolean _wasCompleted;

    public GenerateSqlDialog(ISession session, MssqlPlugin plugin, IDatabaseObjectInfo[] dbObjs) throws SQLException {
    super(ctorHelper(session, plugin, dbObjs), true);

    _session = session;
        _plugin = plugin;
        _dbObjs = dbObjs;
       
        _wasCompleted = false;
       
        createGUI();
  }

  private void createGUI() throws SQLException {
    // i18n[mssql.generateSqlScript=Generate SQL Script]
    setTitle(s_stringMgr.getString("mssql.generateSqlScript"));
    setContentPane(buildContentPane());
  }

  private JComponent buildContentPane() throws SQLException {
    final JPanel pnl = new JPanel(new BorderLayout());
    pnl.add(buildMainPanel(), BorderLayout.CENTER);
    pnl.add(buildToolBar(), BorderLayout.SOUTH);
    pnl.setBorder(Borders.TABBED_DIALOG_BORDER);

    return pnl;
    }

  private JTabbedPane buildMainPanel() throws SQLException {
    final JTabbedPane tabPanel = UIFactory.getInstance().createTabbedPane();
    // i18n[mssql.general=General]
    tabPanel.addTab(s_stringMgr.getString("mssql.general"),null,buildGeneralPanel());
    // i18n[mssql.foematting=Formatting]
        tabPanel.addTab(s_stringMgr.getString("mssql.foematting"),null,buildFormattingPanel());
    // i18n[mssql.options=Options]
      tabPanel.addTab(s_stringMgr.getString("mssql.options"),null,buildOptionsPanel());
    return tabPanel;
  }
   
    private JPanel buildGeneralPanel() {
        JPanel panel = new JPanel();
        GridBagLayout gridBag = new GridBagLayout();
        panel.setLayout(gridBag);
       
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.BOTH;
        c.weightx = 0.0;
       
        JLabel objectsLabel = new JLabel();
     // i18n[mssql.toScript=Objects to script:]
      objectsLabel.setText(s_stringMgr.getString("mssql.toScript"));
        gridBag.setConstraints(objectsLabel, c);
        panel.add(objectsLabel);

     // i18n[mssql.allObjects=All objects]
      final JCheckBox allObjectsCheckbox = new JCheckBox(s_stringMgr.getString("mssql.allObjects"));
     // i18n[mssql.allTables=All tables]
        final JCheckBox allTablesCheckbox = new JCheckBox(s_stringMgr.getString("mssql.allTables"));
     // i18n[mssql.allRules=All rules]
        final JCheckBox allRulesCheckbox = new JCheckBox(s_stringMgr.getString("mssql.allRules"));
     // i18n[mssql.allViews=All views]
        final JCheckBox allViewsCheckbox = new JCheckBox(s_stringMgr.getString("mssql.allViews"));
     // i18n[mssql.allUserDef=All user-defined data types]
        final JCheckBox allUddtCheckbox = new JCheckBox(s_stringMgr.getString("mssql.allUserDef"));
     // i18n[mssql.allSps=All stored procedures]
        final JCheckBox allProceduresCheckbox = new JCheckBox(s_stringMgr.getString("mssql.allSps"));
     // i18n[mssql.allUDFs=All user-defined functions]
        final JCheckBox allUdfsCheckbox = new JCheckBox(s_stringMgr.getString("mssql.allUDFs"));
     // i18n[mssql.allDefaults=All defaults]
        final JCheckBox allDefaultsCheckbox = new JCheckBox(s_stringMgr.getString("mssql.allDefaults"));
       
        c.gridx = 0;
        c.gridy = 1;
        allObjectsCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED)
                    transferObjectsOfType(0,(DatabaseObjectInfoTableModel) _availableTable.getModel(),(DatabaseObjectInfoTableModel) _selectedTable.getModel());
                else if (e.getStateChange() == ItemEvent.DESELECTED)
                    transferObjectsOfType(0,(DatabaseObjectInfoTableModel) _selectedTable.getModel(),(DatabaseObjectInfoTableModel) _availableTable.getModel());
               
                boolean isSelected = (e.getStateChange() == ItemEvent.SELECTED);
               
                allTablesCheckbox.setSelected(isSelected);
                allRulesCheckbox.setSelected(isSelected);
                allViewsCheckbox.setSelected(isSelected);
                allUddtCheckbox.setSelected(isSelected);
                allProceduresCheckbox.setSelected(isSelected);
                allUdfsCheckbox.setSelected(isSelected);
                allDefaultsCheckbox.setSelected(isSelected);
               
                allTablesCheckbox.setEnabled(!isSelected);
                allRulesCheckbox.setEnabled(!isSelected);
                allViewsCheckbox.setEnabled(!isSelected);
                allUddtCheckbox.setEnabled(!isSelected);
                allProceduresCheckbox.setEnabled(!isSelected);
                allUdfsCheckbox.setEnabled(!isSelected);
                allDefaultsCheckbox.setEnabled(!isSelected);
            }
        });
        gridBag.setConstraints(allObjectsCheckbox, c);
        panel.add(allObjectsCheckbox);
       
        c.gridx = 0;
        c.gridy = 2;
        allTablesCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_TABLE,(DatabaseObjectInfoTableModel) _availableTable.getModel(),(DatabaseObjectInfoTableModel) _selectedTable.getModel());
                else if (e.getStateChange() == ItemEvent.DESELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_TABLE,(DatabaseObjectInfoTableModel) _selectedTable.getModel(),(DatabaseObjectInfoTableModel) _availableTable.getModel());
            }
        });
        gridBag.setConstraints(allTablesCheckbox, c);
        panel.add(allTablesCheckbox);
       
        c.gridx = 2;
        c.gridy = 2;
        allRulesCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_RULE,(DatabaseObjectInfoTableModel) _availableTable.getModel(),(DatabaseObjectInfoTableModel) _selectedTable.getModel());
                else if (e.getStateChange() == ItemEvent.DESELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_RULE,(DatabaseObjectInfoTableModel) _selectedTable.getModel(),(DatabaseObjectInfoTableModel) _availableTable.getModel());
            }
        });
        gridBag.setConstraints(allRulesCheckbox, c);
        panel.add(allRulesCheckbox);
       
        c.gridx = 0;
        c.gridy = 3;
        allViewsCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_VIEW,(DatabaseObjectInfoTableModel) _availableTable.getModel(),(DatabaseObjectInfoTableModel) _selectedTable.getModel());
                else if (e.getStateChange() == ItemEvent.DESELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_VIEW,(DatabaseObjectInfoTableModel) _selectedTable.getModel(),(DatabaseObjectInfoTableModel) _availableTable.getModel());
            }
        });
        gridBag.setConstraints(allViewsCheckbox, c);
        panel.add(allViewsCheckbox);
       
        c.gridx = 2;
        c.gridy = 3;
        allUddtCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_UDT,(DatabaseObjectInfoTableModel) _availableTable.getModel(),(DatabaseObjectInfoTableModel) _selectedTable.getModel());
                else if (e.getStateChange() == ItemEvent.DESELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_UDT,(DatabaseObjectInfoTableModel) _selectedTable.getModel(),(DatabaseObjectInfoTableModel) _availableTable.getModel());
            }
        });
        gridBag.setConstraints(allUddtCheckbox, c);
        panel.add(allUddtCheckbox);
       
        c.gridx = 0;
        c.gridy = 4;
        allProceduresCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_STOREDPROCEDURE,(DatabaseObjectInfoTableModel) _availableTable.getModel(),(DatabaseObjectInfoTableModel) _selectedTable.getModel());
                else if (e.getStateChange() == ItemEvent.DESELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_STOREDPROCEDURE,(DatabaseObjectInfoTableModel) _selectedTable.getModel(),(DatabaseObjectInfoTableModel) _availableTable.getModel());
            }
        });
        gridBag.setConstraints(allProceduresCheckbox, c);
        panel.add(allProceduresCheckbox);
       
        c.gridx = 2;
        c.gridy = 4;
        allUdfsCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_UDF,(DatabaseObjectInfoTableModel) _availableTable.getModel(),(DatabaseObjectInfoTableModel) _selectedTable.getModel());
                else if (e.getStateChange() == ItemEvent.DESELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_UDF,(DatabaseObjectInfoTableModel) _selectedTable.getModel(),(DatabaseObjectInfoTableModel) _availableTable.getModel());
            }
        });
        gridBag.setConstraints(allUdfsCheckbox, c);
        panel.add(allUdfsCheckbox);
       
        c.gridx = 0;
        c.gridy = 5;
        allDefaultsCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_DEFAULT,(DatabaseObjectInfoTableModel) _availableTable.getModel(),(DatabaseObjectInfoTableModel) _selectedTable.getModel());
                else if (e.getStateChange() == ItemEvent.DESELECTED)
                    transferObjectsOfType(MssqlIntrospector.MSSQL_DEFAULT,(DatabaseObjectInfoTableModel) _selectedTable.getModel(),(DatabaseObjectInfoTableModel) _availableTable.getModel());
            }
        });
        gridBag.setConstraints(allDefaultsCheckbox, c);
        panel.add(allDefaultsCheckbox);
       
        JLabel availableLabel = new JLabel();
        c.gridx = 0;
        c.gridy = 6;

      // i18n[mssql.objectsOn=Objects on {0}:]
       objectsLabel.setText(s_stringMgr.getString("mssql.objectsOn", _dbObjs[0].getCatalogName()));
        gridBag.setConstraints(availableLabel, c);
        panel.add(availableLabel);
       
        JLabel selectedLabel = new JLabel();
        c.gridx = 2;
        c.gridy = 6;
      // i18n[mssql.objectsToBeScripted=Objects to be scripted]
      objectsLabel.setText("Objects to be scripted:");
        gridBag.setConstraints(selectedLabel, c);
        panel.add(selectedLabel);
       
        JButton addButton = new JButton();
        c.gridx = 1;
        c.gridy = 8;
     // i18n[mssql.add=Add >>]
        addButton.setText(s_stringMgr.getString("mssql.add"));
     // i18n[mssql.add_Menmonic="]
        addButton.setMnemonic("A".charAt(0));
        addButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                transferSelectedItems(_availableTable,_selectedTable);
            }
        });
        gridBag.setConstraints(addButton, c);
        panel.add(addButton);
       
        JButton removeButton = new JButton();
        c.gridx = 1;
        c.gridy = 9;
      // i18n[mssql.remove=<< Remove]
      removeButton.setText(s_stringMgr.getString("mssql.remove"));
      // i18n[mssql.remove_Mnemonic=R]
      removeButton.setMnemonic(s_stringMgr.getString("mssql.remove_Mnemonic").charAt(0));
        removeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                transferSelectedItems(_selectedTable,_availableTable);
            }
        });
        gridBag.setConstraints(removeButton, c);
        panel.add(removeButton);
       
        /*Component glue = Box.createGlue();
        c.gridx = 1;
        c.gridy = 10;
        gridBag.setConstraints(glue, c);
        panel.add(glue);*/
       
        _availableTable = new JTable(new DefaultTableModel(0,0));
        _availableTable.setModel(new DatabaseObjectInfoTableModel());
        _availableTable.getColumnModel().getColumn(0).setCellRenderer(new DatabaseObjectInfoRenderer());
        JScrollPane availablePane = new JScrollPane(_availableTable);
        c.gridx = 0;
        c.gridy = 7;
        c.gridheight = 3;
        gridBag.setConstraints(availablePane, c);
        panel.add(availablePane);
       
        populateAvailableTable(_availableTable);
       
        _selectedTable = new JTable(new DefaultTableModel(0,0));
        _selectedTable.setModel(new DatabaseObjectInfoTableModel());
        _selectedTable.getColumnModel().getColumn(0).setCellRenderer(new DatabaseObjectInfoRenderer());
        JScrollPane selectedPane = new JScrollPane(_selectedTable);
        c.gridx = 2;
        c.gridy = 7;
        c.gridheight = 3;
        gridBag.setConstraints(selectedPane, c);
        panel.add(selectedPane);
       
        return panel;
    }
   
    private void transferObjectsOfType(int mssqlType, DatabaseObjectInfoTableModel fromModel, DatabaseObjectInfoTableModel toModel) {
        int i = 0;
        while (i < fromModel.getRowCount()) {
            IDatabaseObjectInfo oi = (IDatabaseObjectInfo) fromModel.getValueAt(i,0);
            if (mssqlType == 0 || MssqlIntrospector.getObjectInfoType(oi) == mssqlType) {
                if (fromModel.removeElement(oi))
                    toModel.addElement(oi);
                // don't increment i if you're removing something; otherwise, you'd skip the next item.
            }
            else
                i++;
        }
    }
   
    private void transferSelectedItems(JTable fromTable, JTable toTable) {
        DatabaseObjectInfoTableModel fromModel = (DatabaseObjectInfoTableModel) fromTable.getModel();
        DatabaseObjectInfoTableModel toModel = (DatabaseObjectInfoTableModel) toTable.getModel();
        int[] selectedRows = fromTable.getSelectedRows();
       
        /* we must iterate through this in descending order to avoid removing, say, item #2, making
         * item #4 into item #3, inadvertently removing item #5. */
        for (int i = selectedRows.length - 1; i >= 0 ; i--) {
            IDatabaseObjectInfo oi = (IDatabaseObjectInfo) fromModel.getValueAt(selectedRows[i],0);
            if (fromModel.removeElement(oi))
                toModel.addElement(oi);
        }
       
        /* TODO: sort the list. */
    }
   
    private void populateAvailableTable(JTable table) {
        DatabaseObjectInfoTableModel model = (DatabaseObjectInfoTableModel) table.getModel();
       
        try {
            String catalog = _session.getSQLConnection().getCatalog();
            SQLDatabaseMetaData metaData = _session.getSQLConnection().getSQLMetaData();

            int i;

            /* add the tables. */
            ITableInfo[] tables = _session.getSchemaInfo().getITableInfos(catalog,null,new ObjFilterMatcher(),new String[] { "TABLE" });
            for (i = 0; i < tables.length; i++)
                model.addElement(tables[i]);
           
            /* add the views. */
            ITableInfo[] views = _session.getSchemaInfo().getITableInfos(catalog,null,new ObjFilterMatcher(),new String[] { "VIEW" });
            for (i = 0; i < views.length; i++)
                model.addElement(views[i]);
           
            /* add the procedures. */
            //IProcedureInfo[] procs = metaData.getProcedures(catalog,null,null);
            IProcedureInfo[] procs = _session.getSchemaInfo().getStoredProceduresInfos(catalog,null,new ObjFilterMatcher());
            for (i = 0; i < procs.length; i++)
                if (!procs[i].getSimpleName().startsWith("dt_"))
                    model.addElement(procs[i]);

            /* add the UDTs. */
            IUDTInfo[] udts = metaData.getUDTs(catalog,null,null,null);
            for (i = 0; i < udts.length; i++)
                model.addElement(udts[i]);
        }
        catch (SQLException ex) {
            _session.getApplication().showErrorDialog(ex.getMessage(),ex);
        }
    }
   
    private JPanel buildFormattingPanel() {
        JPanel panel = new JPanel();
        GridBagLayout gridBag = new GridBagLayout();
        panel.setLayout(gridBag);
       
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.BOTH;
        c.weightx = 0.0;
       
        JLabel optionsLabel = new JLabel();
      // i18n[mssql.scriptingOptionsDlg=Scripting options allow you to specify how an object will be scripted.]
      optionsLabel.setText(s_stringMgr.getString("mssql.scriptingOptionsDlg"));
        gridBag.setConstraints(optionsLabel, c);
        panel.add(optionsLabel);

      // i18n[mssql.genereateCreate=Generate the CREATE <object> command for each object]
      _generateCreateCheckbox = new JCheckBox(s_stringMgr.getString("mssql.genereateCreate"),true);
        c.gridx = 0;
        c.gridy = 1;
        _generateCreateCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
               scriptOptionsChanged();
            }
        });
        gridBag.setConstraints(_generateCreateCheckbox, c);
        panel.add(_generateCreateCheckbox);

      // i18n[mssql.generateDrop=Generate the DROP <object> command for each object]
      _generateDropCheckbox = new JCheckBox(s_stringMgr.getString("mssql.generateDrop"),true);
        c.gridx = 0;
        c.gridy = 2;
        _generateDropCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
               scriptOptionsChanged();
            }
        });
        gridBag.setConstraints(_generateDropCheckbox, c);
        panel.add(_generateDropCheckbox);

      // i18n[mssql.generateDependend=Generate scripts for all dependent objects]
      _generateDependentCheckbox = new JCheckBox(s_stringMgr.getString("mssql.generateDependend"),false);
        c.gridx = 0;
        c.gridy = 3;
        _generateDependentCheckbox.setEnabled(false);
        _generateDependentCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
               scriptOptionsChanged();
            }
        });
        gridBag.setConstraints(_generateDependentCheckbox, c);
        panel.add(_generateDependentCheckbox);
       
        // i18n[mssql.includeHeaders=Include descriptive headers in the script files]
      _includeHeadersCheckbox = new JCheckBox(s_stringMgr.getString("mssql.includeHeaders"),false);
        c.gridx = 0;
        c.gridy = 4;
        _includeHeadersCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
               scriptOptionsChanged();
            }
        });
        gridBag.setConstraints(_includeHeadersCheckbox, c);
        panel.add(_includeHeadersCheckbox);

      // i18n[mssql.extProps=Include extended properties]
      _extendedPropsCheckbox = new JCheckBox(s_stringMgr.getString("mssql.extProps"),false);
        c.gridx = 0;
        c.gridy = 5;
        _extendedPropsCheckbox.setEnabled(false);
        _extendedPropsCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
               scriptOptionsChanged();
            }
        });
        gridBag.setConstraints(_extendedPropsCheckbox, c);
        panel.add(_extendedPropsCheckbox);

      // i18n[mssql.only70compatible=Only script 7.0 compatible features]
      _onlySevenCheckbox = new JCheckBox(s_stringMgr.getString("mssql.only70compatible"),false);
        c.gridx = 0;
        c.gridy = 6;
        _onlySevenCheckbox.setEnabled(false);
        _onlySevenCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
               scriptOptionsChanged();
            }
        });
        gridBag.setConstraints(_onlySevenCheckbox, c);
        panel.add(_onlySevenCheckbox);
       
        JLabel templateLabel = new JLabel();
        c.gridx = 0;
        c.gridy = 7;
      // i18n[mssql.scriptTemplate=Script template]
      templateLabel.setText(s_stringMgr.getString("mssql.scriptTemplate"));
        gridBag.setConstraints(templateLabel, c);
        panel.add(templateLabel);
       
        _templateArea = new JTextArea();
        JScrollPane templatePane = new JScrollPane(_templateArea);
        c.gridx = 0;
        c.gridy = 8;
        c.weightx = 2.0;
        c.weighty = 2.0;
        _templateArea.setEditable(false);
        gridBag.setConstraints(templatePane, c);
        panel.add(templatePane);
       
        scriptOptionsChanged();
       
        return panel;
    }
   
    private void scriptOptionsChanged() {
        boolean generateCreate = _generateCreateCheckbox.isSelected();
        boolean generateDrop = _generateDropCheckbox.isSelected();
        boolean generateDependent = _generateDependentCheckbox.isSelected();
        boolean includeHeaders = _includeHeadersCheckbox.isSelected();
       
        StringBuffer buf = new StringBuffer();
       
        if (includeHeaders)
            buf.append("/* OBJECT: table: SampleTable  SCRIPT DATE: 1/1/1999 */\n\n");
        if (generateDependent)
            buf.append("sp_addtype SampleUDT, int\nGO\n\n");
        if (generateDrop)
            buf.append("DROP TABLE SampleTable\nGO\n\n");
        if (generateCreate)
            buf.append("CREATE TABLE SampleTable\n(SampleColumn1 datetime NULL,\nSampleColumn2 SampleUDT)\nGO\n\n");
      
        _templateArea.setText(buf.toString());
    }
   
    private JPanel buildOptionsPanel() {
        JPanel panel = new JPanel();
        GridBagLayout gridBag = new GridBagLayout();
        panel.setLayout(gridBag);
       
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.BOTH;
        c.weightx = 0.0;
       
        /* --- SECURITY PANEL ---------------------------------------------- */
        JPanel securityPanel = new JPanel();
        securityPanel.setBorder(BorderFactory.createTitledBorder("Security Scripting Options"));
        GridBagLayout securityBag = new GridBagLayout();
        securityPanel.setLayout(securityBag);
        c.gridx = 0;
        c.gridy = 0;
        gridBag.setConstraints(securityPanel,c);
        panel.add(securityPanel);

      // i18n[mssql.scriptDatabase=Script database]
      _scriptDatabaseCheckbox = new JCheckBox(s_stringMgr.getString("mssql.scriptDatabase"));
        c.gridx = 0;
        c.gridy = 0;
        securityBag.setConstraints(_scriptDatabaseCheckbox, c);
        securityPanel.add(_scriptDatabaseCheckbox);

      // i18n[mssql.scriptUsers=Script database users and database roles]
      _scriptUsersAndRolesCheckbox = new JCheckBox(s_stringMgr.getString("mssql.scriptUsers"));
        c.gridx = 0;
        c.gridy = 1;
        securityBag.setConstraints(_scriptUsersAndRolesCheckbox, c);
        securityPanel.add(_scriptUsersAndRolesCheckbox);

      // i18n[mssql.scriptLogins=Script SQL Server logins (Windows and SQL Server logins)]
      _scriptLoginsCheckbox = new JCheckBox(s_stringMgr.getString("mssql.scriptLogins"));
        c.gridx = 0;
        c.gridy = 2;
        _scriptLoginsCheckbox.setEnabled(false);
        securityBag.setConstraints(_scriptLoginsCheckbox, c);
        securityPanel.add(_scriptLoginsCheckbox);

      // i18n[mssql.scriptPermission=Script object-level permissions]
      _scriptPermissionsCheckbox = new JCheckBox(s_stringMgr.getString("mssql.scriptPermission"));
        c.gridx = 0;
        c.gridy = 3;
        securityBag.setConstraints(_scriptPermissionsCheckbox, c);
        securityPanel.add(_scriptPermissionsCheckbox);
        /* ----------------------------------------------------------------- */
       
        /* --- TABLE SCRIPTING PANEL ---------------------------------------------- */
        JPanel tablePanel = new JPanel();
      // i18n[mssql.scriptingOptions=Table Scripting Options]
      tablePanel.setBorder(BorderFactory.createTitledBorder(s_stringMgr.getString("mssql.scriptingOptions")));
        GridBagLayout tableBag = new GridBagLayout();
        tablePanel.setLayout(tableBag);
        c.gridx = 0;
        c.gridy = 1;
        gridBag.setConstraints(tablePanel,c);
        panel.add(tablePanel);

      // i18n[mssql.scriptIndexses=Script indexes]
      _scriptIndexesCheckbox = new JCheckBox(s_stringMgr.getString("mssql.scriptIndexses"));
        c.gridx = 0;
        c.gridy = 0;
        tableBag.setConstraints(_scriptIndexesCheckbox, c);
        tablePanel.add(_scriptIndexesCheckbox);

      // i18n[mssql.scriptFullText=Script full-text indexes]
      _scriptFTIndexesCheckbox = new JCheckBox(s_stringMgr.getString("mssql.scriptFullText"));
        c.gridx = 0;
        c.gridy = 1;
        _scriptFTIndexesCheckbox.setEnabled(false);
        tableBag.setConstraints(_scriptFTIndexesCheckbox, c);
        tablePanel.add(_scriptFTIndexesCheckbox);
       
        _scriptTriggersCheckbox = new JCheckBox("Script triggers");
        c.gridx = 0;
        c.gridy = 2;
        tableBag.setConstraints(_scriptTriggersCheckbox, c);
        tablePanel.add(_scriptTriggersCheckbox);

      // i18n[mssql.scriptPrimary=Script PRIMARY keys, FOREIGN keys, defaults, and check constraints]
      _scriptConstraintsCheckbox = new JCheckBox(s_stringMgr.getString("mssql.scriptPrimary"));
        c.gridx = 0;
        c.gridy = 3;
        tableBag.setConstraints(_scriptConstraintsCheckbox, c);
        tablePanel.add(_scriptConstraintsCheckbox);
        /* ----------------------------------------------------------------- */
       
        /* --- TABLE SCRIPTING PANEL ---------------------------------------------- */
        JPanel fileOptionsPanel = new JPanel();
      // i18n[mssql.fileOptions=File Options]
      fileOptionsPanel.setBorder(BorderFactory.createTitledBorder(s_stringMgr.getString("mssql.fileOptions")));
        c.gridx = 0;
        c.gridy = 2;
        gridBag.setConstraints(fileOptionsPanel,c);
        panel.add(fileOptionsPanel);
       
        JPanel fileFormatPanel = new JPanel();
      // i18n[mssql.fileFormat=File Format]
      fileFormatPanel.setBorder(BorderFactory.createTitledBorder(s_stringMgr.getString("mssql.fileFormat")));
        fileOptionsPanel.add(fileFormatPanel);
       
        ButtonGroup fileFormatGroup = new ButtonGroup();
      // i18n[mssql.msdos=MS-DOS text (OEM)]
      _OEMRadio = new JRadioButton(s_stringMgr.getString("mssql.msdos"));
      // i18n[mssql.windows=Windows text (ANSI)]
      _ANSIRadio = new JRadioButton(s_stringMgr.getString("mssql.windows"));
      // i18n[mssql.unicode=International text (Unicode)]
      _UnicodeRadio = new JRadioButton(s_stringMgr.getString("mssql.unicode"),true);
        fileFormatGroup.add(_OEMRadio);
        fileFormatGroup.add(_ANSIRadio);
        fileFormatGroup.add(_UnicodeRadio);
        fileFormatPanel.add(_OEMRadio);
        fileFormatPanel.add(_ANSIRadio);
        fileFormatPanel.add(_UnicodeRadio);
        _OEMRadio.setEnabled(false);
        _ANSIRadio.setEnabled(false);
       
        JPanel generatePanel = new JPanel();
      // i18n[mssql.filesToGenerate=Files to Generate]
      generatePanel.setBorder(BorderFactory.createTitledBorder(s_stringMgr.getString("mssql.filesToGenerate")));
        fileOptionsPanel.add(generatePanel);
       
        ButtonGroup generateGroup = new ButtonGroup();
      // i18n[mssql.oneFile=Create one file]
      _oneFileRadio = new JRadioButton(s_stringMgr.getString("mssql.oneFile"),true);
      // i18n[mssql.oneFilePerObject=Create one file per object]
      _separateFilesRadio = new JRadioButton(s_stringMgr.getString("mssql.oneFilePerObject"));
        generateGroup.add(_oneFileRadio);
        generateGroup.add(_separateFilesRadio);
        generatePanel.add(_oneFileRadio);
        generatePanel.add(_separateFilesRadio);
        /* ----------------------------------------------------------------- */
       
        return panel;
    }

  private JPanel buildToolBar() {
    final ButtonBarBuilder builder = new ButtonBarBuilder();
    builder.addGlue();
        final GenerateSqlDialog dlg = this;

      // i18n[mssql.ok=OK]
      JButton okButton = new JButton(s_stringMgr.getString("mssql.ok"));
        okButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               _wasCompleted = true;
               dlg.setVisible(false);
            }
        });
    builder.addGridded(okButton);
       
    builder.addRelatedGap();

     // i18n[mssql.cancel=Cancel]
      JButton cancelButton = new JButton(s_stringMgr.getString("mssql.cancel"));
        cancelButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                _wasCompleted = false;
                dlg.setVisible(false);
            }
        });
        builder.addGridded(cancelButton);

    return builder.getPanel();
  }

  private static Frame ctorHelper(ISession session, MssqlPlugin plugin, IDatabaseObjectInfo[] dbObjs)  {
    if (session == null)
      throw new IllegalArgumentException("ISession == null");
    if (plugin == null)
      throw new IllegalArgumentException("MssqlPlugin == null");
    if (dbObjs == null)
      throw new IllegalArgumentException("IDatabaseObjectInfo[] is null");

    return session.getApplication().getMainFrame();
  }
   
    public ArrayList<IDatabaseObjectInfo> getSelectedItems() {
        return ((DatabaseObjectInfoTableModel) (_selectedTable.getModel())).getContents();
    }
   
    public boolean getGenerateCreate() {
        return _generateCreateCheckbox.isSelected();
    }
   
    public boolean getGenerateDrop() {
        return _generateDropCheckbox.isSelected();
    }
   
    public boolean getGenerateDependent() {
        return _generateDependentCheckbox.isSelected();
    }
   
    public boolean getIncludeHeaders() {
        return _includeHeadersCheckbox.isSelected();
    }
   
    public boolean getExtendedProps() {
        return _extendedPropsCheckbox.isSelected();
    }
   
    public boolean getOnlySeven() {
        return _onlySevenCheckbox.isSelected();
    }
   
    public boolean getScriptDatabase() {
        return _scriptDatabaseCheckbox.isSelected();
    }
   
    public boolean getScriptUsersAndRoles() {
    return _scriptUsersAndRolesCheckbox.isSelected();
    }

    public boolean getScriptLogins() {
    return _scriptLoginsCheckbox.isSelected();
    }

    public boolean getScriptPermissions() {
        return _scriptPermissionsCheckbox.isSelected();
    }
   
    public boolean getScriptIndexes() {
        return _scriptIndexesCheckbox.isSelected();
    }
   
    public boolean getScriptFTIndexes() {
        return _scriptFTIndexesCheckbox.isSelected();
    }
   
    public boolean getScriptTriggers() {
        return _scriptTriggersCheckbox.isSelected();
    }
   
    public boolean getScriptConstraints() {
        return _scriptConstraintsCheckbox.isSelected();
    }
   
    public boolean getOEM() {
        return _OEMRadio.isSelected();
    }
   
    public boolean getANSI() {
        return _ANSIRadio.isSelected();
    }
   
    public boolean getUnicode() {
    return _UnicodeRadio.isSelected();
    }

    public boolean getOneFile() {
        return _oneFileRadio.isSelected();
    }
   
    public boolean showGeneralSqlDialog() {
        this.setVisible(true);
        return _wasCompleted;
    }
   
    public void preselectObjects(IDatabaseObjectInfo[] objs) {
        /* this works because all the IDatabaseObjectInfo objects come from the same source, so
         * their references are equal. */
       
        DatabaseObjectInfoTableModel fromModel = (DatabaseObjectInfoTableModel) _availableTable.getModel();
        DatabaseObjectInfoTableModel toModel = (DatabaseObjectInfoTableModel) _selectedTable.getModel();
       
        for (int i = 0; i < objs.length; i++) {
            if (fromModel.removeElement(objs[i]))
                toModel.addElement(objs[i]);
        }
    }
}
TOP

Related Classes of net.sourceforge.squirrel_sql.plugins.mssql.gui.GenerateSqlDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.