// 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.utils;
import graphtea.platform.attribute.NotifiableAttributeSet;
import graphtea.platform.extension.Extension;
import graphtea.ui.components.gpropertyeditor.GPropertyEditor;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class GAttrFrame extends javax.swing.JDialog {
/**
*
*/
private static final long serialVersionUID = 722213016758300314L;
private NotifiableAttributeSet atr;
/**
* Creates new form GAttrFrame
*/
public GAttrFrame(java.awt.Frame parent, NotifiableAttributeSet atr, boolean modal) {
super(parent, modal);
this.atr = atr;
initComponents();
}
/**
* @return the return status of this dialog - true-> the ok presses, false-> cancelled by user
*/
public boolean getReturnStatus() {
return status;
}
GPropertyEditor table;
private void initComponents() {
setAlwaysOnTop(true);
JPanel buttonPanel = new JPanel();
JButton cancelButton = new JButton("cancel");
table = new GPropertyEditor();
table.connect(atr);
JButton okButton = new JButton("ok");
setDefaultCloseOperation(HIDE_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog();
}
});
okButton.addActionListener(evt -> finished(true));
cancelButton.addActionListener(evt -> finished(false));
okButton.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
finished(true);
}
}
});
buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
add(buttonPanel, java.awt.BorderLayout.SOUTH);
add(table, java.awt.BorderLayout.CENTER);
okButton.setSelected(true);
validate();
okButton.setSelected(true);
pack();
okButton.grabFocus();
}
private boolean status = false;
private boolean finished = false;
private void closeDialog() {
finished = true;
}
private void finished(boolean status) {
this.status = status;
if (status)
if (table.getTable().isEditing()) {
table.getTable().getCellEditor().stopCellEditing();
}
closeDialog();
dispose();
}
public static GAttrFrame showEditDialog(NotifiableAttributeSet input) {
return showEditDialog(input, true);
}
/**
* Shows a Property editor to edit the attributes in the input.
* the modal is like the modal in JDialog
*/
public static GAttrFrame showEditDialog(NotifiableAttributeSet input, boolean modal) {
String title = "Edit Attributes";
if (input instanceof Extension) {
title = ((Extension) input).getName();
}
GAttrFrame gAttrFrame = new GAttrFrame(new JFrame(), input, modal);
gAttrFrame.setTitle(title);
gAttrFrame.setVisible(true);
return gAttrFrame;
}
/**
* return the GProertyEditor which is the main editor of NotifiableAttributeSet
*/
public GPropertyEditor getPropertyEditor() {
return table;
}
}