/***************************************************************** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.cayenne.modeler.dialog.db.gen; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; import javax.swing.SwingConstants; import javax.swing.UIManager; import com.jgoodies.forms.builder.PanelBuilder; import com.jgoodies.forms.factories.Borders; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import org.apache.cayenne.swing.components.TopBorder; /** * Wizard for generating the database from the data map. */ public class DBGeneratorOptionsView extends JDialog { protected JTextArea sql; protected JButton generateButton; protected JButton cancelButton; protected JButton saveSqlButton; protected JCheckBox dropTables; protected JCheckBox createTables; protected JCheckBox createFK; protected JCheckBox createPK; protected JCheckBox dropPK; protected Component tables; protected JTabbedPane tabs; protected JComboBox<String> adapters; public DBGeneratorOptionsView(Component tables) { // create widgets this.generateButton = new JButton("Generate"); getRootPane().setDefaultButton(generateButton); this.cancelButton = new JButton("Cancel"); this.saveSqlButton = new JButton("Save SQL"); this.dropTables = new JCheckBox("Drop Tables"); this.createTables = new JCheckBox("Create Tables"); this.createFK = new JCheckBox("Create FK Support"); this.createPK = new JCheckBox("Create Primary Key Support"); this.dropPK = new JCheckBox("Drop Primary Key Support"); this.tables = tables; this.tabs = new JTabbedPane(SwingConstants.TOP); this.adapters = new JComboBox<>(); adapters.setEditable(true); this.sql = new JTextArea(); sql.setEditable(false); sql.setLineWrap(true); sql.setWrapStyleWord(true); // assemble... JPanel optionsPane = new JPanel(new GridLayout(3, 2)); optionsPane.add(dropTables); optionsPane.add(createTables); optionsPane.add(new JLabel()); optionsPane.add(createFK); optionsPane.add(dropPK); optionsPane.add(createPK); JPanel sqlTextPanel = new JPanel(new BorderLayout()); sqlTextPanel.add(new JScrollPane( sql, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER); JPanel adapterPanel = new JPanel(new BorderLayout()); adapterPanel.add(adapters); CellConstraints cc = new CellConstraints(); PanelBuilder builder = new PanelBuilder(new FormLayout( "fill:min(50dlu;pref):grow", "p, 3dlu, p, 9dlu, p, 3dlu, p, 3dlu, p, 3dlu, fill:40dlu:grow")); builder.addSeparator("Options", cc.xywh(1, 1, 1, 1)); builder.add(optionsPane, cc.xy(1, 3, "left,fill")); builder.addSeparator("Adapter", cc.xywh(1, 5, 1, 1)); builder.add(adapterPanel, cc.xy(1, 7)); builder.addSeparator("Generated SQL", cc.xywh(1, 9, 1, 1)); builder.add(sqlTextPanel, cc.xy(1, 11)); builder.setBorder(BorderFactory .createCompoundBorder(UIManager.getBorder("ToolBar.border"), Borders.DIALOG_BORDER)); tabs.addTab("SQL Options", builder.getPanel()); tabs.addTab("Tables", new JScrollPane( tables, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED)); // we need the right preferred size so that dialog "pack()" produces decent // default size... tabs.setPreferredSize(new Dimension(450, 500)); tabs.setFocusable(false); JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT)); buttons.add(saveSqlButton); buttons.add(Box.createHorizontalStrut(20)); buttons.add(cancelButton); buttons.add(generateButton); buttons.setBorder(TopBorder.create()); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(tabs, BorderLayout.CENTER); contentPane.add(buttons, BorderLayout.SOUTH); } public JButton getCancelButton() { return cancelButton; } public JTabbedPane getTabs() { return tabs; } public JCheckBox getCreateFK() { return createFK; } public JCheckBox getCreatePK() { return createPK; } public JCheckBox getCreateTables() { return createTables; } public JCheckBox getDropPK() { return dropPK; } public JCheckBox getDropTables() { return dropTables; } public JButton getGenerateButton() { return generateButton; } public JButton getSaveSqlButton() { return saveSqlButton; } public JTextArea getSql() { return sql; } public JComboBox<String> getAdapters() { return adapters; } }