Files
ifogsim/src/org/fog/gui/dialog/AddVirtualNode.java
2021-04-06 00:45:28 +02:00

199 lines
5.8 KiB
Java

package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
import javax.swing.UIManager;
import org.fog.gui.core.Graph;
import org.fog.gui.core.SpringUtilities;
import org.fog.gui.core.VmNode;
import org.fog.gui.core.Node;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AddVirtualNode extends JDialog {
private static final long serialVersionUID = -5116677861770319577L;
private final Graph graph;
private JTextField tfName;
private JComboBox cType;
private JTextField tfSize;
private JTextField tfPes;
private JTextField tfMips;
private JTextField tfRam;
/**
* Constructor.
*
* @param frame the parent frame
*/
public AddVirtualNode(final Graph graph, final JFrame frame) {
this.graph = graph;
setLayout(new BorderLayout());
add(createInputPanelArea(), BorderLayout.CENTER);
add(createButtonPanel(), BorderLayout.PAGE_END);
// show dialog
setTitle("Add Virtual Node");
setModal(true);
setPreferredSize(new Dimension(350, 400));
setResizable(false);
pack();
setLocationRelativeTo(frame);
setVisible(true);
}
private JPanel createButtonPanel() {
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS));
JButton okBtn = new JButton("Ok");
JButton cancelBtn = new JButton("Cancel");
cancelBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
setVisible(false);
}
});
okBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
boolean catchedError = false;
if (tfName.getText() == null || tfName.getText().length() < 1) {
prompt("Please type VM name", "Error");
} else if (cType.getSelectedIndex() < 0) {
prompt("Please select VM type", "Error");
} else if (tfSize.getText() == null || tfSize.getText().length() < 1) {
prompt("Please type VM size", "Error");
} else if (tfPes.getText() == null || tfPes.getText().length() < 1) {
prompt("Please type pes", "Error");
} else if (tfMips.getText() == null || tfMips.getText().length() < 1) {
prompt("Please type VM mips", "Error");
} else if (tfRam.getText() == null || tfRam.getText().length() < 1) {
prompt("Please type VM RAM", "Error");
} else {
long t1 = 0;
int t2 = 0;
long t3 = 0;
int t4 = 0;
try {
t1 = Long.parseLong(tfSize.getText());
t2 = Integer.parseInt(tfPes.getText());
t3 = Long.parseLong(tfMips.getText());
t4 = Integer.parseInt(tfRam.getText());
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
Node node = new VmNode(tfName.getText().toString(), (String)cType.getSelectedItem(),
t1, t2, t3, t4);
graph.addNode(node);
setVisible(false);
}
}
}
});
buttonPanel.add(Box.createHorizontalGlue());
buttonPanel.add(okBtn);
buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPanel.add(cancelBtn);
buttonPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
return buttonPanel;
}
private JPanel createInputPanelArea() {
String[] vmType = {"vm"};
//Create and populate the panel.
JPanel springPanel = new JPanel(new SpringLayout());
springPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
JLabel lName = new JLabel("Name: ");
springPanel.add(lName);
tfName = new JTextField();
lName.setLabelFor(tfName);
springPanel.add(tfName);
JLabel lType = new JLabel("Type: ", JLabel.TRAILING);
springPanel.add(lType);
cType = new JComboBox(vmType);
lType.setLabelFor(cType);
cType.setSelectedIndex(-1);
cType.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
}
});
springPanel.add(cType);
JLabel lSize = new JLabel("Size: ");
springPanel.add(lSize);
tfSize = new JTextField();
lSize.setLabelFor(tfSize);
springPanel.add(tfSize);
JLabel lPes = new JLabel("Pes: ");
springPanel.add(lPes);
tfPes = new JTextField();
lPes.setLabelFor(tfPes);
springPanel.add(tfPes);
JLabel lMips = new JLabel("Mips: ");
springPanel.add(lMips);
tfMips = new JTextField();
lMips.setLabelFor(tfMips);
springPanel.add(tfMips);
JLabel lRam = new JLabel("Ram: ");
springPanel.add(lRam);
tfRam = new JTextField();
lRam.setLabelFor(tfRam);
springPanel.add(tfRam);
//Lay out the panel.
SpringUtilities.makeCompactGrid(springPanel,
6, 2, //rows, columns
6, 6, //initX, initY
6, 6); //xPad, yPad
return springPanel;
}
public static void setUIFont (javax.swing.plaf.FontUIResource f){
java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get (key);
if (value != null && value instanceof javax.swing.plaf.FontUIResource)
UIManager.put (key, f);
}
}
private void prompt(String msg, String type){
JOptionPane.showMessageDialog(AddVirtualNode.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}