// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.ui.components.prefeditor; import graphtea.platform.core.BlackBoard; import graphtea.platform.preferences.AbstractPreference; import graphtea.ui.components.GFrame; import graphtea.ui.components.gpropertyeditor.GPropertyEditor; import graphtea.ui.components.utils.GFrameLocationProvider; import javax.swing.*; import java.util.HashMap; import java.util.Objects; import java.util.Vector; import java.util.stream.Collectors; /** * @author Rouzbeh Ebrahimi * Email: ruzbehus@gmail.com */ public class GPrefPane extends GFrame { // Variables declaration - do not modify public HashMap<String, AbstractPreference> tabs; private javax.swing.JList list; private javax.swing.JScrollPane scrollPane; private GPropertyEditor tabPane; private JButton ok; private JButton cancel; private JButton apply; private JLabel label; // End of variables declaration /** * Creates new form prefForm */ public GPrefPane(BlackBoard bb, HashMap<String, AbstractPreference> items) { super(bb); java.awt.GridBagConstraints gridBagConstraints; tabs = items; tabPane = new GPropertyEditor(); scrollPane = new javax.swing.JScrollPane(); list = new JList(); ok = new JButton("Ok"); ok.addActionListener(e -> finished(true)); cancel = new JButton("Cancel"); cancel.addActionListener(e -> closeDialog()); apply = new JButton("Apply"); label = new JLabel("Preferences:"); setLayout(new java.awt.GridBagLayout()); // setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTab(); Vector<String> refined = items.keySet().stream().filter(s -> !Objects.equals(s, "Only Storable")).collect(Collectors.toCollection(Vector::new)); final String[] strs = refined.toArray(new String[refined.size()]); list.setModel(new javax.swing.AbstractListModel() { String[] strings = strs; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); list.addListSelectionListener(this::jList1ValueChanged); scrollPane.setViewportView(list); setList(); setCancel(); // setApply(); setOk(); // setLabel(); String s = (String) list.getModel().getElementAt(0); AbstractPreference ap = items.get(s); // GPropertyEditor gp = new GPropertyEditor(); // gp.connect(ap.attributeSet); // gp.setVisible(true); tabPane.connect(ap.attributeSet); tabPane.setVisible(true); setSize(GFrameLocationProvider.getPrefSize()); setLocation(GFrameLocationProvider.getLocation()); } private void setList() { java.awt.GridBagConstraints gridBagConstraints; gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.ipadx = 100; gridBagConstraints.ipady = 250; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(scrollPane, gridBagConstraints); } private void setLabel() { java.awt.GridBagConstraints gridBagConstraints; gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; // gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.ipadx = 20; gridBagConstraints.ipady = 20; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; add(label, gridBagConstraints); } private void setTab() { java.awt.GridBagConstraints gridBagConstraints; gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.ipadx = 250; gridBagConstraints.ipady = 250; gridBagConstraints.weightx = 6; gridBagConstraints.weighty = 6; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); add(tabPane, gridBagConstraints); } private void setCancel() { java.awt.GridBagConstraints gridBagConstraints; gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.ipadx = 30; gridBagConstraints.ipady = 8; gridBagConstraints.fill = java.awt.GridBagConstraints.EAST; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5); add(cancel, gridBagConstraints); } /*private void setApply(){ java.awt.GridBagConstraints gridBagConstraints; gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.ipadx = 30; gridBagConstraints.ipady = 8; gridBagConstraints.fill = java.awt.GridBagConstraints.CENTER; gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5); add(apply, gridBagConstraints); }*/ private void setOk() { java.awt.GridBagConstraints gridBagConstraints; gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.ipadx = 30; gridBagConstraints.ipady = 8; gridBagConstraints.fill = java.awt.GridBagConstraints.WEST; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5); add(ok, gridBagConstraints); } private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) { // tabPane=new gpropertyeditor(); String s = (String) list.getSelectedValue(); AbstractPreference ap = tabs.get(s); // GPropertyEditor gp = new GPropertyEditor(); // gp.connect(ap.attributeSet); // gp.setVisible(true); tabPane.connect(ap.attributeSet); tabPane.setVisible(true); setTab(); } private boolean status = false; private boolean finished = false; private void closeDialog() { finished = true; dispose(); } private void finished(boolean status) { this.status = status; closeDialog(); dispose(); } }