/****************************************************************************** * Copyright: GPL v3 * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * ******************************************************************************/ package dba.gui.auxClasses.toolBars; import dba.gui.CustomTree; import dba.gui.auxClasses.GuiLogic; import dba.gui.auxClasses.RelationDetailsView; import dba.gui.auxClasses.RelationLogic; import dba.gui.auxClasses.RelationView; import dba.gui.auxClasses.navBarPanels.DatabaseTreePanel; import dba.utils.TreeEnum; import dbaCore.data.NormalForm; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * Class to provide the ToolBar for Relations (extends ToolBar class) * * @author Andreas Freitag */ public class ToolBarRelation extends ToolBar { private CustomTree tree; private RelationLogic relLogic; private JButton btn2NF; private JButton btn3NF; private JButton btnBCNF; private JButton btnNewFd; /** * */ private static final long serialVersionUID = -3843390455939145286L; public ToolBarRelation(DatabaseTreePanel dbTreePanel, RelationView relationView, RelationDetailsView relationDetailsView, GuiLogic logic) { super(relationView, relationDetailsView, logic); tree = dbTreePanel.getTree(); relLogic = new RelationLogic(); JButton btnNewAttribute = new JButton(super.getIcons.getTbAttribute()); btnNewFd = new JButton(super.getIcons.getTbFd()); JButton btnEdit = new JButton(super.getIcons.getTbEdit()); JButton btnDelete = new JButton(super.getIcons.getTbDelete()); JButton btnRename = new JButton(super.getIcons.getTbRename()); JButton btnInspect = new JButton(super.getIcons.getTbInspect()); btn2NF = new JButton(super.getIcons.getTb2NF()); btn3NF = new JButton(super.getIcons.getTb3NF()); btnBCNF = new JButton(super.getIcons.getTbBCNF()); btnNewAttribute.setToolTipText(super.locale.getString("Attribute")); btnNewFd.setToolTipText(super.locale.getString("FunctionalDependency")); btnEdit.setToolTipText(super.locale.getString("TREE_RelEditWizard")); btnDelete.setToolTipText(super.locale.getString("Delete")); btnRename.setToolTipText(super.locale.getString("Rename")); btnInspect.setToolTipText(super.locale.getString("TREE_RelInspect")); btn2NF.setToolTipText(super.locale.getString("Optimize") + " - " + super.locale.getString("TREE_Rel2NF")); btn3NF.setToolTipText(super.locale.getString("Optimize") + " - " + super.locale.getString("TREE_Rel3NF")); btnBCNF.setToolTipText(super.locale.getString("Optimize") + " - " + super.locale.getString("TREE_RelBCNF")); btnNewAttribute.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { int x = tree.getNewSelectedItem(TreeEnum.AddAttribute); relLogic.addAttribute(); tree.setSelectedItem(x); } }); btnNewFd.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { int x = tree.getNewSelectedItem(TreeEnum.AddFD); relLogic.addFd(); tree.setSelectedItem(x); } }); btnEdit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { int x = tree.getNewSelectedItem(TreeEnum.EditRel); relLogic.editRelationWizard(); tree.setSelectedItem(x); } }); btnDelete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { delRel(); } }); KeyStroke delete = KeyStroke.getKeyStroke("DELETE"); InputMap inputMapDel = btnDelete.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMapDel.put(delete, "Delete"); ActionMap actionMapDel = btnDelete.getActionMap(); actionMapDel.put("Delete", new CustomActionListenerDelRel()); btnDelete.setActionMap(actionMapDel); btnRename.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { renRel(); } }); KeyStroke f2 = KeyStroke.getKeyStroke("F2"); InputMap inputMapRen = btnRename.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMapRen.put(f2, "Rename"); ActionMap actionMapRen = btnRename.getActionMap(); actionMapRen.put("Rename", new CustomActionListenerRenRel()); btnRename.setActionMap(actionMapRen); btnInspect.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { int x = tree.getNewSelectedItem(TreeEnum.InspectRel); relLogic.inspectRelation(); tree.setSelectedItem(x); } }); btn2NF.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int x = tree.getNewSelectedItem(TreeEnum.OptimizeRel); relLogic.optimizeRelation(NormalForm.SECOND); tree.setSelectedItem(x); } }); btn3NF.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int x = tree.getNewSelectedItem(TreeEnum.OptimizeRel); relLogic.optimizeRelation(NormalForm.THIRD); tree.setSelectedItem(x); } }); btnBCNF.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int x = tree.getNewSelectedItem(TreeEnum.OptimizeRel); relLogic.optimizeRelation(NormalForm.BOYCECODD); tree.setSelectedItem(x); } }); add(btnNewAttribute); add(btnNewFd); add(btnEdit); add(btnDelete); add(btnRename); add(btnInspect); add(btn2NF); add(btn3NF); add(btnBCNF); // add(cbOptimize); } public void setEnabledOpti2NF(boolean enabled) { btn2NF.setEnabled(enabled); } public void setEnabledOpti3NF(boolean enabled) { btn3NF.setEnabled(enabled); } public void setEnabledOpti(boolean enabled) { btnBCNF.setEnabled(enabled); } public void setEnabledFD(boolean enabled) { btnNewFd.setEnabled(enabled); } private void delRel() { int x = tree.getNewSelectedItem(TreeEnum.DelRelation); relLogic.deleteRelation(); tree.setSelectedItem(x); } private void renRel() { int x = tree.getNewSelectedItem(TreeEnum.RenameRel); relLogic.renameRelation(); tree.setSelectedItem(x); } private class CustomActionListenerDelRel extends AbstractAction { @Override public void actionPerformed(ActionEvent actionEvent) { delRel(); } } private class CustomActionListenerRenRel extends AbstractAction { @Override public void actionPerformed(ActionEvent actionEvent) { renRel(); } } }