This commit is contained in:
2021-04-06 00:45:28 +02:00
commit 17fabc368e
836 changed files with 3042963 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
package org.fog.gui.dialog;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
@SuppressWarnings("serial")
class About extends JDialog {
public About() {
initUI();
}
public final void initUI() {
setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
add(Box.createRigidArea(new Dimension(0, 10)));
ImageIcon icon = new ImageIcon("src/logo.png");
JLabel label = new JLabel(icon);
label.setAlignmentX(0.5f);
add(label);
add(Box.createRigidArea(new Dimension(0, 10)));
JLabel name = new JLabel("CloudSim SDN, 1.00");
name.setFont(new Font("Serif", Font.BOLD, 15));
name.setAlignmentX(0.5f);
add(name);
add(Box.createRigidArea(new Dimension(0, 50)));
JButton close = new JButton("Close");
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
dispose();
}
});
close.setAlignmentX(0.5f);
add(close);
setModalityType(ModalityType.APPLICATION_MODAL);
setTitle("About CloudSim");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setSize(350, 300);
}
}

View File

@@ -0,0 +1,136 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
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.ActuatorGui;
import org.fog.gui.core.Graph;
import org.fog.gui.core.SpringUtilities;
@SuppressWarnings({ "rawtypes" })
public class AddActuator extends JDialog {
private static final long serialVersionUID = -511667786177319577L;
private final Graph graph;
private JTextField actuatorName;
private JTextField actuatorType;
/**
* Constructor.
*
* @param frame the parent frame
*/
public AddActuator(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 Actuator");
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 (actuatorName.getText() == null || actuatorName.getText().length() < 1) {
prompt("Please type Actuator name", "Error");
} else {
if(!catchedError){
ActuatorGui actuator = new ActuatorGui(actuatorName.getText(),
actuatorType.getText().toString());
graph.addNode(actuator);
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() {
//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);
actuatorName = new JTextField();
lName.setLabelFor(actuatorName);
springPanel.add(actuatorName);
JLabel lType = new JLabel("Actuator Type : ");
springPanel.add(lType);
actuatorType = new JTextField();
lName.setLabelFor(actuatorType);
springPanel.add(actuatorType);
//Lay out the panel.
SpringUtilities.makeCompactGrid(springPanel,
2, 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(AddActuator.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,134 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
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.ActuatorModule;
import org.fog.gui.core.Graph;
import org.fog.gui.core.Node;
import org.fog.gui.core.SpringUtilities;
@SuppressWarnings({ "rawtypes" })
public class AddActuatorModule extends JDialog {
private static final long serialVersionUID = -5116677861770319577L;
private final Graph graph;
private JTextField actuatorType;
/**
* Constructor.
*
* @param frame the parent frame
*/
public AddActuatorModule(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 Sensor Module");
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 (actuatorType.getText() == null || actuatorType.getText().length() < 1) {
prompt("Please enter Actuator Type", "Error");
} else {
try {
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
Node node = new ActuatorModule(actuatorType.getText().toString());
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() {
//Create and populate the panel.
JPanel springPanel = new JPanel(new SpringLayout());
springPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
JLabel lName = new JLabel("Sensor Type: ");
springPanel.add(lName);
actuatorType = new JTextField();
lName.setLabelFor(actuatorType);
springPanel.add(actuatorType);
//Lay out the panel.
SpringUtilities.makeCompactGrid(springPanel,
1, 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(AddActuatorModule.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,244 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
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 org.fog.gui.core.Edge;
import org.fog.gui.core.Graph;
import org.fog.gui.core.Node;
import org.fog.gui.core.NodeCellRenderer;
import org.fog.gui.core.SpringUtilities;
/** A dialog to add a new edge */
public class AddAppEdge extends JDialog {
private static final long serialVersionUID = 4794808969864918000L;
private final Graph graph;
private JComboBox sourceNode;
private JComboBox targetNode;
private JTextField tupleType;
private JTextField tupleCpuLen;
private JTextField tupleNwLen;
public AddAppEdge(final Graph graph, final JFrame frame) {
this.graph = graph;
setLayout(new BorderLayout());
add(createInputPanel(), BorderLayout.CENTER);
add(createButtonPanel(), BorderLayout.PAGE_END);
// show dialog
setTitle("Add Application edge");
setModal(true);
setPreferredSize(new Dimension(400, 250));
setResizable(false);
pack();
setLocationRelativeTo(frame); // must be called between pack and setVisible to work properly
setVisible(true);
}
@SuppressWarnings("unchecked")
private JPanel createInputPanel() {
Component rigid = Box.createRigidArea(new Dimension(10, 0));
JPanel inputPanelWrapper = new JPanel();
inputPanelWrapper.setLayout(new BoxLayout(inputPanelWrapper, BoxLayout.PAGE_AXIS));
JPanel inputPanel = new JPanel();
inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.LINE_AXIS));
JPanel textAreaPanel = new JPanel();
textAreaPanel.setLayout(new BoxLayout(textAreaPanel, BoxLayout.LINE_AXIS));
JPanel textAreaPanel2 = new JPanel();
textAreaPanel2.setLayout(new BoxLayout(textAreaPanel2, BoxLayout.LINE_AXIS));
ComboBoxModel sourceNodeModel = new DefaultComboBoxModel(graph.getAdjacencyList().keySet().toArray());
sourceNodeModel.setSelectedItem(null);
sourceNode = new JComboBox(sourceNodeModel);
targetNode = new JComboBox();
sourceNode.setMaximumSize(sourceNode.getPreferredSize());
sourceNode.setMinimumSize(new Dimension(150, sourceNode.getPreferredSize().height));
sourceNode.setPreferredSize(new Dimension(150, sourceNode.getPreferredSize().height));
targetNode.setMaximumSize(targetNode.getPreferredSize());
targetNode.setMinimumSize(new Dimension(150, targetNode.getPreferredSize().height));
targetNode.setPreferredSize(new Dimension(150, targetNode.getPreferredSize().height));
NodeCellRenderer renderer = new NodeCellRenderer();
sourceNode.setRenderer(renderer);
targetNode.setRenderer(renderer);
sourceNode.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// only display nodes which do not have already an edge
targetNode.removeAllItems();
Node selectedNode = (Node) sourceNode.getSelectedItem();
if (selectedNode != null) {
List<Node> nodesToDisplay = new ArrayList<Node>();
Set<Node> allNodes = graph.getAdjacencyList().keySet();
// get edged for selected node and throw out all target nodes where already an edge exists
List<Edge> edgesForSelectedNode = graph.getAdjacencyList().get(selectedNode);
Set<Node> nodesInEdges = new HashSet<Node>();
for (Edge edge : edgesForSelectedNode) {
nodesInEdges.add(edge.getNode());
}
for (Node node : allNodes) {
if (!node.equals(selectedNode) && !nodesInEdges.contains(node)) {
nodesToDisplay.add(node);
}
}
ComboBoxModel targetNodeModel = new DefaultComboBoxModel(nodesToDisplay.toArray());
targetNode.setModel(targetNodeModel);
}
}
});
inputPanel.add(sourceNode);
inputPanel.add(new Label("--->"));
inputPanel.add(targetNode);
inputPanel.add(Box.createHorizontalGlue());
inputPanelWrapper.add(inputPanel);
JPanel springPanel = new JPanel(new SpringLayout());
//springPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
JLabel tupleTypeLabel = new JLabel("Tuple Type : ");
springPanel.add(tupleTypeLabel);
tupleType = new JTextField();
tupleTypeLabel.setLabelFor(tupleType);
springPanel.add(tupleType);
JLabel tupleCpuLenLabel = new JLabel("Tuple CPU Len : ");
springPanel.add(tupleCpuLenLabel);
tupleCpuLen = new JTextField();
tupleCpuLenLabel.setLabelFor(tupleCpuLen);
springPanel.add(tupleCpuLen);
JLabel tupleNwLenLabel = new JLabel("Tuple NW Len : ");
springPanel.add(tupleNwLenLabel);
tupleNwLen = new JTextField();
tupleNwLenLabel.setLabelFor(tupleNwLen);
springPanel.add(tupleNwLen);
SpringUtilities.makeCompactGrid(springPanel,
3, 2, //rows, cols
6, 6, //initX, initY
6, 6); //xPad, yPad
inputPanelWrapper.add(springPanel);
return inputPanelWrapper;
}
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() {
@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
});
okBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = "default";
long bandwidth = 0;
boolean catchedError = false;
if (tupleType.getText() == null || tupleType.getText().isEmpty()) {
catchedError = true;
prompt("Please enter Tuple Type", "Error");
} else if (tupleCpuLen.getText() == null || tupleCpuLen.getText().isEmpty()) {
catchedError = true;
prompt("Please enter Tuple CPU Length", "Error");
} else if (tupleNwLen.getText() == null || tupleNwLen.getText().isEmpty()) {
catchedError = true;
prompt("Please enter Tuple NW Length", "Error");
}
else {
name = ((Node)sourceNode.getSelectedItem()).getName()+"-"+((Node)sourceNode.getSelectedItem()).getName();
}
if (!catchedError) {
if (sourceNode.getSelectedItem() == null || targetNode.getSelectedItem() == null) {
prompt("Please select node", "Error");
} else {
Node source = (Node) sourceNode.getSelectedItem();
Node target = (Node) targetNode.getSelectedItem();
Edge edge = new Edge(target, name, bandwidth);
graph.addEdge(source, edge);
setVisible(false);
}
}
}
});
buttonPanel.add(Box.createHorizontalGlue());
buttonPanel.add(okBtn);
buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPanel.add(cancelBtn);
buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return buttonPanel;
}
private void prompt(String msg, String type){
JOptionPane.showMessageDialog(AddAppEdge.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,134 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
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.AppModule;
import org.fog.gui.core.Graph;
import org.fog.gui.core.Node;
import org.fog.gui.core.SpringUtilities;
@SuppressWarnings({ "rawtypes" })
public class AddApplicationModule extends JDialog {
private static final long serialVersionUID = -5116677861770319577L;
private final Graph graph;
private JTextField tfName;
/**
* Constructor.
*
* @param frame the parent frame
*/
public AddApplicationModule(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 Application Module");
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 {
try {
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
Node node = new AppModule(tfName.getText().toString());
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() {
//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);
//Lay out the panel.
SpringUtilities.makeCompactGrid(springPanel,
1, 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(AddApplicationModule.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,201 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
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.FogDeviceGui;
import org.fog.gui.core.Graph;
import org.fog.gui.core.SpringUtilities;
@SuppressWarnings({ "rawtypes" })
public class AddFogDevice extends JDialog {
private static final long serialVersionUID = -5116677861770319577L;
private final Graph graph;
private JLabel deviceNameLabel;
private JLabel upBwLabel;
private JLabel downBwLabel;
private JLabel mipsLabel;
private JLabel ramLabel;
private JLabel levelLabel;
private JLabel rateLabel;
private JTextField deviceName;
private JTextField upBw;
private JTextField downBw;
private JTextField mips;
private JTextField ram;
private JTextField level;
private JTextField rate;
public AddFogDevice(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 Fog Device");
setModal(true);
setPreferredSize(new Dimension(350, 380));
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 (deviceName.getText() == null || deviceName.getText().length() < 1) {
prompt("Please type VM name", "Error");
} else if (upBw.getText() == null || upBw.getText().length() < 1) {
prompt("Please enter uplink BW", "Error");
} else if (downBw.getText() == null || downBw.getText().length() < 1) {
prompt("Please enter downlink BW", "Error");
} else if (mips.getText() == null || mips.getText().length() < 1) {
prompt("Please enter MIPS", "Error");
} else if (ram.getText() == null || ram.getText().length() < 1) {
prompt("Please enter RAM", "Error");
} else if (level.getText() == null || level.getText().length() < 1) {
prompt("Please enter Level", "Error");
} else if (rate.getText() == null || rate.getText().length() < 1) {
prompt("Please enter Rate", "Error");
}
long upBw_=-1, downBw_=-1, mips_=-1; int ram_=-1, level_=-1;double rate_ = -1;
try {
upBw_ = Long.parseLong(upBw.getText());
downBw_ = Long.parseLong(downBw.getText());
mips_ = Long.parseLong(mips.getText());
ram_ = Integer.parseInt(ram.getText());
level_ = Integer.parseInt(level.getText());
rate_ = Double.parseDouble(rate.getText());
catchedError = false;
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
FogDeviceGui fogDevice = new FogDeviceGui(deviceName.getText().toString(), mips_, ram_, upBw_, downBw_, level_, rate_);
graph.addNode(fogDevice);
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() {
//Create and populate the panel.
JPanel springPanel = new JPanel(new SpringLayout());
//springPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
deviceNameLabel = new JLabel("Name: ");
springPanel.add(deviceNameLabel);
deviceName = new JTextField();
deviceNameLabel.setLabelFor(deviceName);
springPanel.add(deviceName);
levelLabel = new JLabel("Level: ");
springPanel.add(levelLabel);
level = new JTextField();
levelLabel.setLabelFor(level);
springPanel.add(level);
upBwLabel = new JLabel("Uplink Bw: ");
springPanel.add(upBwLabel);
upBw = new JTextField();
upBwLabel.setLabelFor(upBw);
springPanel.add(upBw);
downBwLabel = new JLabel("Downlink Bw: ");
springPanel.add(downBwLabel);
downBw = new JTextField();
downBwLabel.setLabelFor(downBw);
springPanel.add(downBw);
/** switch and host */
mipsLabel = new JLabel("Mips: ");
springPanel.add(mipsLabel);
mips = new JTextField();
mipsLabel.setLabelFor(mips);
springPanel.add(mips);
ramLabel = new JLabel("Ram: ");
springPanel.add(ramLabel);
ram = new JTextField();
ramLabel.setLabelFor(ram);
springPanel.add(ram);
rateLabel = new JLabel("Rate/MIPS: ");
springPanel.add(rateLabel);
rate = new JTextField();
rateLabel.setLabelFor(rate);
springPanel.add(rate);
//Lay out the panel.
SpringUtilities.makeCompactGrid(springPanel,
7, 2, //rows, cols
6, 6, //initX, initY
6, 6); //xPad, yPad
//updatePanel("core");
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(AddFogDevice.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,222 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
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 org.fog.gui.core.Edge;
import org.fog.gui.core.Graph;
import org.fog.gui.core.Link;
import org.fog.gui.core.Node;
import org.fog.gui.core.NodeCellRenderer;
/** A dialog to add a new edge */
public class AddLink extends JDialog {
private static final long serialVersionUID = 4794808969864918000L;
private final Graph graph;
private JComboBox sourceNode;
private JComboBox targetNode;
private JTextField tfLatency;
public AddLink(final Graph graph, final JFrame frame) {
this.graph = graph;
setLayout(new BorderLayout());
add(createInputPanel(), BorderLayout.CENTER);
add(createButtonPanel(), BorderLayout.PAGE_END);
// show dialog
setTitle("Add Link");
setModal(true);
setPreferredSize(new Dimension(400, 200));
setResizable(false);
pack();
setLocationRelativeTo(frame); // must be called between pack and setVisible to work properly
setVisible(true);
}
@SuppressWarnings("unchecked")
private JPanel createInputPanel() {
Component rigid = Box.createRigidArea(new Dimension(10, 0));
JPanel inputPanelWrapper = new JPanel();
inputPanelWrapper.setLayout(new BoxLayout(inputPanelWrapper, BoxLayout.PAGE_AXIS));
JPanel inputPanel = new JPanel();
inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.LINE_AXIS));
JPanel textAreaPanel = new JPanel();
textAreaPanel.setLayout(new BoxLayout(textAreaPanel, BoxLayout.LINE_AXIS));
ComboBoxModel sourceNodeModel = new DefaultComboBoxModel(graph.getAdjacencyList().keySet().toArray());
sourceNodeModel.setSelectedItem(null);
sourceNode = new JComboBox(sourceNodeModel);
targetNode = new JComboBox();
sourceNode.setMaximumSize(sourceNode.getPreferredSize());
sourceNode.setMinimumSize(new Dimension(150, sourceNode.getPreferredSize().height));
sourceNode.setPreferredSize(new Dimension(150, sourceNode.getPreferredSize().height));
targetNode.setMaximumSize(targetNode.getPreferredSize());
targetNode.setMinimumSize(new Dimension(150, targetNode.getPreferredSize().height));
targetNode.setPreferredSize(new Dimension(150, targetNode.getPreferredSize().height));
NodeCellRenderer renderer = new NodeCellRenderer();
sourceNode.setRenderer(renderer);
targetNode.setRenderer(renderer);
sourceNode.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// only display nodes which do not have already an edge
targetNode.removeAllItems();
Node selectedNode = (Node) sourceNode.getSelectedItem();
if (selectedNode != null) {
List<Node> nodesToDisplay = new ArrayList<Node>();
Set<Node> allNodes = graph.getAdjacencyList().keySet();
// get edged for selected node and throw out all target nodes where already an edge exists
List<Edge> edgesForSelectedNode = graph.getAdjacencyList().get(selectedNode);
Set<Node> nodesInEdges = new HashSet<Node>();
for (Edge edge : edgesForSelectedNode) {
nodesInEdges.add(edge.getNode());
}
if(!(selectedNode.getType().equals("SENSOR")||selectedNode.getType().equals("ACTUATOR")) || edgesForSelectedNode.size()==0){
for (Node node : allNodes) {
if((selectedNode.getType().equals("SENSOR")||selectedNode.getType().equals("ACTUATOR")) && !node.getType().equals("FOG_DEVICE"))
continue;
if (!node.equals(selectedNode) && !nodesInEdges.contains(node)) {
nodesToDisplay.add(node);
}
}
}
ComboBoxModel targetNodeModel = new DefaultComboBoxModel(nodesToDisplay.toArray());
targetNode.setModel(targetNodeModel);
}
}
});
inputPanel.add(sourceNode);
inputPanel.add(new Label("---->"));
inputPanel.add(targetNode);
inputPanel.add(Box.createHorizontalGlue());
inputPanelWrapper.add(inputPanel);
textAreaPanel.add(Box.createRigidArea(new Dimension(10, 0)));
textAreaPanel.add(new JLabel("Latency: "));
tfLatency = new JTextField();
tfLatency.setMaximumSize(tfLatency.getPreferredSize());
tfLatency.setMinimumSize(new Dimension(150, tfLatency.getPreferredSize().height));
tfLatency.setPreferredSize(new Dimension(150, tfLatency.getPreferredSize().height));
textAreaPanel.add(tfLatency);
textAreaPanel.add(Box.createHorizontalGlue());
inputPanelWrapper.add(textAreaPanel);
inputPanelWrapper.add(Box.createVerticalGlue());
inputPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return inputPanelWrapper;
}
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() {
@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
});
okBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double latency = 0;
boolean catchedError = false;
if (tfLatency.getText() == null || tfLatency.getText().isEmpty()) {
catchedError = true;
prompt("Please type latency", "Error");
}else {
try {
latency = Double.valueOf(tfLatency.getText());
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Latency should be double type", "Error");
}
}
if (!catchedError) {
if (sourceNode.getSelectedItem() == null || targetNode.getSelectedItem() == null) {
prompt("Please select node", "Error");
} else {
Node source = (Node) sourceNode.getSelectedItem();
Node target = (Node) targetNode.getSelectedItem();
Link edge = new Link(target, latency);
graph.addEdge(source, edge);
setVisible(false);
}
}
}
});
buttonPanel.add(Box.createHorizontalGlue());
buttonPanel.add(okBtn);
buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPanel.add(cancelBtn);
buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return buttonPanel;
}
private void prompt(String msg, String type){
JOptionPane.showMessageDialog(AddLink.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,217 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
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 org.fog.gui.core.Edge;
import org.fog.gui.core.Graph;
import org.fog.gui.core.Node;
import org.fog.gui.core.NodeCellRenderer;
/** A dialog to add a new edge */
public class AddPhysicalEdge extends JDialog {
private static final long serialVersionUID = 4794808969864918000L;
private final Graph graph;
private JComboBox sourceNode;
private JComboBox targetNode;
private JTextField tfLatency;
public AddPhysicalEdge(final Graph graph, final JFrame frame) {
this.graph = graph;
setLayout(new BorderLayout());
add(createInputPanel(), BorderLayout.CENTER);
add(createButtonPanel(), BorderLayout.PAGE_END);
// show dialog
setTitle("Add Physical Topology edge");
setModal(true);
setPreferredSize(new Dimension(400, 200));
setResizable(false);
pack();
setLocationRelativeTo(frame); // must be called between pack and setVisible to work properly
setVisible(true);
}
@SuppressWarnings("unchecked")
private JPanel createInputPanel() {
Component rigid = Box.createRigidArea(new Dimension(10, 0));
JPanel inputPanelWrapper = new JPanel();
inputPanelWrapper.setLayout(new BoxLayout(inputPanelWrapper, BoxLayout.PAGE_AXIS));
JPanel inputPanel = new JPanel();
inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.LINE_AXIS));
JPanel textAreaPanel = new JPanel();
textAreaPanel.setLayout(new BoxLayout(textAreaPanel, BoxLayout.LINE_AXIS));
ComboBoxModel sourceNodeModel = new DefaultComboBoxModel(graph.getAdjacencyList().keySet().toArray());
sourceNodeModel.setSelectedItem(null);
sourceNode = new JComboBox(sourceNodeModel);
targetNode = new JComboBox();
sourceNode.setMaximumSize(sourceNode.getPreferredSize());
sourceNode.setMinimumSize(new Dimension(150, sourceNode.getPreferredSize().height));
sourceNode.setPreferredSize(new Dimension(150, sourceNode.getPreferredSize().height));
targetNode.setMaximumSize(targetNode.getPreferredSize());
targetNode.setMinimumSize(new Dimension(150, targetNode.getPreferredSize().height));
targetNode.setPreferredSize(new Dimension(150, targetNode.getPreferredSize().height));
NodeCellRenderer renderer = new NodeCellRenderer();
sourceNode.setRenderer(renderer);
targetNode.setRenderer(renderer);
sourceNode.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// only display nodes which do not have already an edge
targetNode.removeAllItems();
Node selectedNode = (Node) sourceNode.getSelectedItem();
if (selectedNode != null) {
List<Node> nodesToDisplay = new ArrayList<Node>();
Set<Node> allNodes = graph.getAdjacencyList().keySet();
// get edged for selected node and throw out all target nodes where already an edge exists
List<Edge> edgesForSelectedNode = graph.getAdjacencyList().get(selectedNode);
Set<Node> nodesInEdges = new HashSet<Node>();
for (Edge edge : edgesForSelectedNode) {
nodesInEdges.add(edge.getNode());
}
for (Node node : allNodes) {
if (!node.equals(selectedNode) && !nodesInEdges.contains(node)) {
nodesToDisplay.add(node);
}
}
ComboBoxModel targetNodeModel = new DefaultComboBoxModel(nodesToDisplay.toArray());
targetNode.setModel(targetNodeModel);
}
}
});
inputPanel.add(sourceNode);
inputPanel.add(new Label(" <20><>"));
inputPanel.add(targetNode);
inputPanel.add(Box.createHorizontalGlue());
inputPanelWrapper.add(inputPanel);
textAreaPanel.add(Box.createRigidArea(new Dimension(10, 0)));
textAreaPanel.add(new JLabel("Latency: "));
tfLatency = new JTextField();
tfLatency.setMaximumSize(tfLatency.getPreferredSize());
tfLatency.setMinimumSize(new Dimension(150, tfLatency.getPreferredSize().height));
tfLatency.setPreferredSize(new Dimension(150, tfLatency.getPreferredSize().height));
textAreaPanel.add(tfLatency);
textAreaPanel.add(Box.createHorizontalGlue());
inputPanelWrapper.add(textAreaPanel);
inputPanelWrapper.add(Box.createVerticalGlue());
inputPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return inputPanelWrapper;
}
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() {
@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
});
okBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double latency = 0;
boolean catchedError = false;
if (tfLatency.getText() == null || tfLatency.getText().isEmpty()) {
catchedError = true;
prompt("Please type latency", "Error");
}else {
try {
latency = Double.valueOf(tfLatency.getText());
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Latency should be double type", "Error");
}
}
if (!catchedError) {
if (sourceNode.getSelectedItem() == null || targetNode.getSelectedItem() == null) {
prompt("Please select node", "Error");
} else {
Node source = (Node) sourceNode.getSelectedItem();
Node target = (Node) targetNode.getSelectedItem();
Edge edge = new Edge(target, latency);
graph.addEdge(source, edge);
setVisible(false);
}
}
}
});
buttonPanel.add(Box.createHorizontalGlue());
buttonPanel.add(okBtn);
buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPanel.add(cancelBtn);
buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return buttonPanel;
}
private void prompt(String msg, String type){
JOptionPane.showMessageDialog(AddPhysicalEdge.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,290 @@
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.Node;
import org.fog.gui.core.SpringUtilities;
import org.fog.gui.core.SwitchNode;
import org.fog.gui.core.HostNode;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AddPhysicalNode extends JDialog {
private static final long serialVersionUID = -5116677861770319577L;
private final Graph graph;
private JLabel lName;
private JLabel lType;
private JLabel lBw;
private JLabel lop1;
private JLabel lop2;
private JLabel lop3;
private JLabel lop4;
private JTextField tfName;
private JComboBox cType;
private JTextField tfBw;
private JTextField top1;
private JTextField top2;
private JTextField top3;
private JTextField top4;
public AddPhysicalNode(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 Physical Node");
setModal(true);
setPreferredSize(new Dimension(350, 380));
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 (tfBw.getText() == null || tfBw.getText().length() < 1) {
prompt("Please type VM Bw", "Error");
} else if(cType.getSelectedIndex() < 0) {
prompt("Please type VM Type", "Error");
}else{
String type = (String)cType.getSelectedItem();
if("host"==getType(type)){
if (top1.getText() == null || top1.getText().length() < 1) {
prompt("Please type pes", "Error");
} else if (top2.getText() == null || top2.getText().length() < 1) {
prompt("Please type VM mips", "Error");
} else if (top3.getText() == null || top3.getText().length() < 1) {
prompt("Please type VM RAM", "Error");
} else if (top4.getText() == null || top4.getText().length() < 1) {
prompt("Please type VM Storage", "Error");
} else {
long t1 = 0;
long t2 = 0;
int t3 = 0;
long t4 = 0;
long t5 = 0;
try {
t1 = Long.parseLong(top1.getText());
t2 = Long.parseLong(top2.getText());
t3 = Integer.parseInt(top3.getText());
t4 = Long.parseLong(top4.getText());
t5 = Long.parseLong(tfBw.getText());
catchedError = false;
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
Node node = new HostNode(tfName.getText().toString(), type, t1, t2, t3, t4, t5);
graph.addNode(node);
setVisible(false);
}
}
}else if("switch"==getType(type)){
if (top1.getText() == null || top1.getText().length() < 1) {
prompt("Please type Iops", "Error");
} else if (top2.getText() == null || top2.getText().length() < 1) {
prompt("Please type upports", "Error");
} else if (top3.getText() == null || top3.getText().length() < 1) {
prompt("Please type VM downports", "Error");
} else {
long t1 = 0;
int t2 = 0;
int t3 = 0;
long t4 = 0;
try {
t1 = Long.parseLong(top1.getText());
t2 = Integer.parseInt(top2.getText());
t3 = Integer.parseInt(top3.getText());
t4 = Long.parseLong(tfBw.getText());
catchedError = false;
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
Node node = new SwitchNode(tfName.getText().toString(), type, 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 void updatePanel(String type){
switch(type){
case "core":
case "edge":
lop1.setText("Iops: ");
lop2.setText("Upports: ");
lop3.setText("Downports: ");
lop4.setVisible(false);
top1.setText("");
top2.setText("");
top3.setText("");
top4.setVisible(false);
break;
case "host":
lop1.setText("Pes: ");
lop2.setText("Mips: ");
lop3.setText("Ram: ");
lop4.setVisible(true);
lop4.setText("Storage: ");
top1.setText("");
top2.setText("");
top3.setText("");
top4.setVisible(true);
top4.setText("");
break;
}
}
private String getType(String type){
if("core"==type || "edge"==type){
return "switch";
} else if("host"==type){
return "host";
}
return "";
}
private JPanel createInputPanelArea() {
String[] vmType = {"core","edge","host"};
//Create and populate the panel.
JPanel springPanel = new JPanel(new SpringLayout());
springPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
lName = new JLabel("Name: ");
springPanel.add(lName);
tfName = new JTextField();
lName.setLabelFor(tfName);
springPanel.add(tfName);
lType = new JLabel("Type: "); //, JLabel.TRAILING);
springPanel.add(lType);
cType = new JComboBox(vmType);
lType.setLabelFor(cType);
cType.setSelectedIndex(0);
cType.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
JComboBox ctype = (JComboBox)e.getSource();
String item = (String)ctype.getSelectedItem();
updatePanel(item);
}
});
springPanel.add(cType);
lBw = new JLabel("Bw: ");
springPanel.add(lBw);
tfBw = new JTextField();
lBw.setLabelFor(tfBw);
springPanel.add(tfBw);
/** switch and host */
lop1 = new JLabel("Pes: ");
springPanel.add(lop1);
top1 = new JTextField();
lop1.setLabelFor(top1);
springPanel.add(top1);
lop2 = new JLabel("Mips: ");
springPanel.add(lop2);
top2 = new JTextField();
lop2.setLabelFor(top2);
springPanel.add(top2);
lop3 = new JLabel("Ram: ");
springPanel.add(lop3);
top3 = new JTextField();
lop3.setLabelFor(top3);
springPanel.add(top3);
lop4 = new JLabel("Storage: ");
springPanel.add(lop4);
top4 = new JTextField();
lop4.setLabelFor(top4);
springPanel.add(top4);
//Lay out the panel.
SpringUtilities.makeCompactGrid(springPanel,
7, 2, //rows, cols
6, 6, //initX, initY
6, 6); //xPad, yPad
updatePanel("core");
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(AddPhysicalNode.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,270 @@
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.entities.Sensor;
import org.fog.gui.core.Graph;
import org.fog.gui.core.SensorGui;
import org.fog.gui.core.SpringUtilities;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AddSensor extends JDialog {
private static final long serialVersionUID = -511667786177319577L;
private final Graph graph;
private JTextField sensorName;
private JTextField sensorType;
private JComboBox distribution;
private JTextField uniformLowerBound;
private JTextField uniformUpperBound;
private JTextField deterministicValue;
private JTextField normalMean;
private JTextField normalStdDev;
/**
* Constructor.
*
* @param frame the parent frame
*/
public AddSensor(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 Sensor");
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 (sensorName.getText() == null || sensorName.getText().length() < 1) {
prompt("Please type Sensor name", "Error");
} else if (sensorType.getText() == null || sensorType.getText().length() < 1) {
prompt("Please type Sensor Type", "Error");
} else if (distribution.getSelectedIndex() < 0) {
prompt("Please select Emission time distribution", "Error");
} else {
double normalMean_ = -1;
double normalStdDev_ = -1;
double uniformLow_ = -1;
double uniformUp_ = -1;
double deterministicVal_ = -1;
String _sensorType = sensorType.getText();
String dist = (String)distribution.getSelectedItem();
if(dist.equals("Normal")){
try {
normalMean_ = Double.parseDouble(normalMean.getText());
normalStdDev_ = Double.parseDouble(normalStdDev.getText());
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
SensorGui sensor = new SensorGui(sensorName.getText().toString(), _sensorType, (String)distribution.getSelectedItem(),
normalMean_, normalStdDev_, uniformLow_, uniformUp_, deterministicVal_);
graph.addNode(sensor);
setVisible(false);
}
} else if(dist.equals("Uniform")){
try {
uniformLow_ = Double.parseDouble(uniformLowerBound.getText());
uniformUp_ = Double.parseDouble(uniformUpperBound.getText());
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
SensorGui sensor = new SensorGui(sensorName.getText().toString(), _sensorType, (String)distribution.getSelectedItem(),
normalMean_, normalStdDev_, uniformLow_, uniformUp_, deterministicVal_);
graph.addNode(sensor);
setVisible(false);
}
} else if(dist.equals("Deterministic")){
try {
deterministicVal_ = Double.parseDouble(deterministicValue.getText());
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
SensorGui sensor = new SensorGui(sensorName.getText().toString(), _sensorType, (String)distribution.getSelectedItem(),
normalMean_, normalStdDev_, uniformLow_, uniformUp_, deterministicVal_);
graph.addNode(sensor);
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[] distributionType = {"Normal", "Uniform", "Deterministic"};
//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);
sensorName = new JTextField();
lName.setLabelFor(sensorName);
springPanel.add(sensorName);
JLabel lType = new JLabel("Type: ");
springPanel.add(lType);
sensorType = new JTextField();
lType.setLabelFor(sensorType);
springPanel.add(sensorType);
JLabel distLabel = new JLabel("Distribution Type: ", JLabel.TRAILING);
springPanel.add(distLabel);
distribution = new JComboBox(distributionType);
distLabel.setLabelFor(distribution);
distribution.setSelectedIndex(-1);
distribution.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
JComboBox ctype = (JComboBox)e.getSource();
String item = (String)ctype.getSelectedItem();
updatePanel(item);
}
});
springPanel.add(distribution);
JLabel normalMeanLabel = new JLabel("Mean: ");
springPanel.add(normalMeanLabel);
normalMean = new JTextField();
normalMeanLabel.setLabelFor(normalMean);
springPanel.add(normalMean);
JLabel normalStdDevLabel = new JLabel("StdDev: ");
springPanel.add(normalStdDevLabel);
normalStdDev = new JTextField();
normalStdDevLabel.setLabelFor(normalStdDev);
springPanel.add(normalStdDev);
JLabel uniformLowLabel = new JLabel("Min: ");
springPanel.add(uniformLowLabel);
uniformLowerBound = new JTextField();
uniformLowLabel.setLabelFor(uniformLowerBound);
springPanel.add(uniformLowerBound);
JLabel uniformUpLabel = new JLabel("Max: ");
springPanel.add(uniformUpLabel);
uniformUpperBound = new JTextField();
uniformUpLabel.setLabelFor(uniformUpperBound);
springPanel.add(uniformUpperBound);
JLabel deterministicValueLabel = new JLabel("Value: ");
springPanel.add(deterministicValueLabel);
deterministicValue = new JTextField();
uniformLowLabel.setLabelFor(deterministicValue);
springPanel.add(deterministicValue);
//Lay out the panel.
SpringUtilities.makeCompactGrid(springPanel,
8, 2, //rows, columns
6, 6, //initX, initY
6, 6); //xPad, yPad
return springPanel;
}
protected void updatePanel(String item) {
switch(item){
case "Normal":
normalMean.setVisible(true);
normalStdDev.setVisible(true);
uniformLowerBound.setVisible(false);
uniformUpperBound.setVisible(false);
deterministicValue.setVisible(false);
break;
case "Uniform":
normalMean.setVisible(false);
normalStdDev.setVisible(false);
uniformLowerBound.setVisible(true);
uniformUpperBound.setVisible(true);
deterministicValue.setVisible(false);
break;
case "Deterministic":
normalMean.setVisible(false);
normalStdDev.setVisible(false);
uniformLowerBound.setVisible(false);
uniformUpperBound.setVisible(false);
deterministicValue.setVisible(true);
break;
default:
break;
}
}
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(AddSensor.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,134 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
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.Node;
import org.fog.gui.core.SensorModule;
import org.fog.gui.core.SpringUtilities;
@SuppressWarnings({ "rawtypes" })
public class AddSensorModule extends JDialog {
private static final long serialVersionUID = -5116677861770319577L;
private final Graph graph;
private JTextField sensorType;
/**
* Constructor.
*
* @param frame the parent frame
*/
public AddSensorModule(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 Sensor Module");
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 (sensorType.getText() == null || sensorType.getText().length() < 1) {
prompt("Please entyer Sensor Type", "Error");
} else {
try {
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Input should be numerical character", "Error");
}
if(!catchedError){
Node node = new SensorModule(sensorType.getText().toString());
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() {
//Create and populate the panel.
JPanel springPanel = new JPanel(new SpringLayout());
springPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
JLabel lName = new JLabel("Sensor Type: ");
springPanel.add(lName);
sensorType = new JTextField();
lName.setLabelFor(sensorType);
springPanel.add(sensorType);
//Lay out the panel.
SpringUtilities.makeCompactGrid(springPanel,
1, 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(AddSensorModule.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,241 @@
package org.fog.gui.dialog;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
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 org.fog.gui.core.Edge;
import org.fog.gui.core.Graph;
import org.fog.gui.core.Node;
import org.fog.gui.core.NodeCellRenderer;
/** A dialog to add a new edge */
public class AddVirtualEdge extends JDialog {
private static final long serialVersionUID = 4794808969864918000L;
private final Graph graph;
private JComboBox sourceNode;
private JComboBox targetNode;
private JTextField tfName;
private JTextField tfBandwidth;
public AddVirtualEdge(final Graph graph, final JFrame frame) {
this.graph = graph;
setLayout(new BorderLayout());
add(createInputPanel(), BorderLayout.CENTER);
add(createButtonPanel(), BorderLayout.PAGE_END);
// show dialog
setTitle("Add Virtual Topology edge");
setModal(true);
setPreferredSize(new Dimension(400, 250));
setResizable(false);
pack();
setLocationRelativeTo(frame); // must be called between pack and setVisible to work properly
setVisible(true);
}
@SuppressWarnings("unchecked")
private JPanel createInputPanel() {
Component rigid = Box.createRigidArea(new Dimension(10, 0));
JPanel inputPanelWrapper = new JPanel();
inputPanelWrapper.setLayout(new BoxLayout(inputPanelWrapper, BoxLayout.PAGE_AXIS));
JPanel inputPanel = new JPanel();
inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.LINE_AXIS));
JPanel textAreaPanel = new JPanel();
textAreaPanel.setLayout(new BoxLayout(textAreaPanel, BoxLayout.LINE_AXIS));
JPanel textAreaPanel2 = new JPanel();
textAreaPanel2.setLayout(new BoxLayout(textAreaPanel2, BoxLayout.LINE_AXIS));
ComboBoxModel sourceNodeModel = new DefaultComboBoxModel(graph.getAdjacencyList().keySet().toArray());
sourceNodeModel.setSelectedItem(null);
sourceNode = new JComboBox(sourceNodeModel);
targetNode = new JComboBox();
sourceNode.setMaximumSize(sourceNode.getPreferredSize());
sourceNode.setMinimumSize(new Dimension(150, sourceNode.getPreferredSize().height));
sourceNode.setPreferredSize(new Dimension(150, sourceNode.getPreferredSize().height));
targetNode.setMaximumSize(targetNode.getPreferredSize());
targetNode.setMinimumSize(new Dimension(150, targetNode.getPreferredSize().height));
targetNode.setPreferredSize(new Dimension(150, targetNode.getPreferredSize().height));
NodeCellRenderer renderer = new NodeCellRenderer();
sourceNode.setRenderer(renderer);
targetNode.setRenderer(renderer);
sourceNode.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// only display nodes which do not have already an edge
targetNode.removeAllItems();
Node selectedNode = (Node) sourceNode.getSelectedItem();
if (selectedNode != null) {
List<Node> nodesToDisplay = new ArrayList<Node>();
Set<Node> allNodes = graph.getAdjacencyList().keySet();
// get edged for selected node and throw out all target nodes where already an edge exists
List<Edge> edgesForSelectedNode = graph.getAdjacencyList().get(selectedNode);
Set<Node> nodesInEdges = new HashSet<Node>();
for (Edge edge : edgesForSelectedNode) {
nodesInEdges.add(edge.getNode());
}
for (Node node : allNodes) {
if (!node.equals(selectedNode) && !nodesInEdges.contains(node)) {
nodesToDisplay.add(node);
}
}
ComboBoxModel targetNodeModel = new DefaultComboBoxModel(nodesToDisplay.toArray());
targetNode.setModel(targetNodeModel);
}
}
});
inputPanel.add(sourceNode);
// inputPanel.add(Box.createRigidArea(new Dimension(10, 0)));
inputPanel.add(new Label(" <20><>"));
inputPanel.add(targetNode);
inputPanel.add(Box.createHorizontalGlue());
inputPanelWrapper.add(inputPanel);
textAreaPanel.add(Box.createRigidArea(new Dimension(10, 0)));
textAreaPanel.add(new JLabel("Edge Name: "));
tfName = new JTextField();
tfName.setMaximumSize(tfName.getPreferredSize());
tfName.setMinimumSize(new Dimension(180, tfName.getPreferredSize().height));
tfName.setPreferredSize(new Dimension(180, tfName.getPreferredSize().height));
textAreaPanel.add(tfName);
textAreaPanel.add(Box.createHorizontalGlue());
inputPanelWrapper.add(textAreaPanel);
inputPanelWrapper.add(Box.createVerticalGlue());
textAreaPanel2.add(Box.createRigidArea(new Dimension(10, 0)));
textAreaPanel2.add(new JLabel("Bandwidth: "));
tfBandwidth = new JTextField();
tfBandwidth.setMaximumSize(tfBandwidth.getPreferredSize());
tfBandwidth.setMinimumSize(new Dimension(180, tfBandwidth.getPreferredSize().height));
tfBandwidth.setPreferredSize(new Dimension(180, tfBandwidth.getPreferredSize().height));
textAreaPanel2.add(tfBandwidth);
textAreaPanel2.add(Box.createHorizontalGlue());
inputPanelWrapper.add(textAreaPanel2);
inputPanelWrapper.add(Box.createVerticalGlue());
inputPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return inputPanelWrapper;
}
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() {
@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
});
okBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = "default";
long bandwidth = 0;
boolean catchedError = false;
if (tfName.getText() == null || tfName.getText().isEmpty()) {
catchedError = true;
prompt("Please type Edge Name", "Error");
}else {
name = (String)tfName.getText();
}
if (tfBandwidth.getText() == null || tfBandwidth.getText().isEmpty()) {
catchedError = true;
prompt("Please type Bandwidth", "Error");
}else {
try {
bandwidth = Long.valueOf(tfBandwidth.getText());
} catch (NumberFormatException e1) {
catchedError = true;
prompt("Bandwidth should be long type", "Error");
}
}
if (!catchedError) {
if (sourceNode.getSelectedItem() == null || targetNode.getSelectedItem() == null) {
prompt("Please select node", "Error");
} else {
Node source = (Node) sourceNode.getSelectedItem();
Node target = (Node) targetNode.getSelectedItem();
Edge edge = new Edge(target, name, bandwidth);
graph.addEdge(source, edge);
setVisible(false);
}
}
}
});
buttonPanel.add(Box.createHorizontalGlue());
buttonPanel.add(okBtn);
buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPanel.add(cancelBtn);
buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return buttonPanel;
}
private void prompt(String msg, String type){
JOptionPane.showMessageDialog(AddVirtualEdge.this, msg, type, JOptionPane.ERROR_MESSAGE);
}
}

View File

@@ -0,0 +1,198 @@
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);
}
}

View File

@@ -0,0 +1,174 @@
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.io.BufferedReader;
import java.io.FileReader;
import java.util.concurrent.ExecutionException;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingWorker;
import javax.swing.Timer;
import org.cloudbus.cloudsim.sdn.graph.example.GraphicSDNExample;
public class SDNRun extends JDialog {
private static final long serialVersionUID = -8313194085507492462L;
private String physicalTopologyFile = ""; //physical
private String deploymentFile = ""; //virtual
private String workloads_background = ""; //workload
private String workloads = ""; //workload
private JPanel panel;
private JScrollPane pane;
private JTextArea outputArea;
private JLabel imageLabel;
private JLabel msgLabel;
private JComponent space;
private int counter = 0;
private Timer timer;
private GraphicSDNExample sdn;
public SDNRun(final String phy, final String vir, final String wlbk, final String wl, final JFrame frame){
physicalTopologyFile = phy;
deploymentFile = vir;
workloads_background = wlbk;
workloads = wl;
setLayout(new BorderLayout());
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
initUI();
run();
add(panel, BorderLayout.CENTER);
setDefaultCloseOperation(DISPOSE_ON_CLOSE );
setTitle("Run Simulation");
setModal(true);
setPreferredSize(new Dimension(900, 600));
setResizable(false);
pack();
setLocationRelativeTo(frame); // must be called between pack and setVisible to work properly
setVisible(true);
}
private void initUI(){
ImageIcon ii = new ImageIcon(this.getClass().getResource("/src/1.gif"));
imageLabel = new JLabel(ii);
imageLabel.setAlignmentX(CENTER_ALIGNMENT);
msgLabel = new JLabel("Simulation is executing");
msgLabel.setAlignmentX(CENTER_ALIGNMENT);
space = (JComponent)Box.createRigidArea(new Dimension(0, 200));
panel.add(space);
panel.add(msgLabel);
panel.add(imageLabel);
pane = new JScrollPane();
outputArea = new JTextArea();
outputArea.setLineWrap(true);
outputArea.setWrapStyleWord(true);
outputArea.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
outputArea.setEditable(false);
//outputArea.setText("wo ai bei jin tian an men");
//readFile(physicalTopologyFile, outputArea);
pane.getViewport().add(outputArea);
panel.add(pane);
pane.setVisible(false);
}
private void run(){
sdn = new GraphicSDNExample(physicalTopologyFile, deploymentFile, workloads_background, workloads, outputArea);
SwingWorker<Boolean, Void> worker = new SwingWorker<Boolean, Void>() {
protected Boolean doInBackground() throws Exception {
boolean success = false;
success = sdn.simulate();
if(success){
sdn.output();
append("<<<<<<<<<< Simulation completed >>>>>>>>>");
}else{
append("<<<<<<<<<< Running Error >>>>>>>>>>");
}
return success;
}
protected void done() {
boolean status;
try {
status = get();
panel.remove(space);
panel.remove(imageLabel);
panel.remove(msgLabel);
pane.setVisible(true);
panel.revalidate();
panel.repaint();
} catch (InterruptedException e) {
} catch (ExecutionException e) {
}
}
};
worker.execute();
}
private void append(String content){
outputArea.append(content+"\n");
}
/** below only used for testing reading file to textarea */
private void startTest(){
ActionListener updateProBar = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
if(counter>=100){
timer.stop();
panel.remove(space);
panel.remove(imageLabel);
panel.remove(msgLabel);
pane.setVisible(true);
panel.revalidate();
panel.repaint();
}else{
counter +=2;
}
}
};
timer = new Timer(50, updateProBar);
timer.start();
}
private void readFile(String path, JTextArea area) {
try{
FileReader reader = new FileReader(path);
BufferedReader br = new BufferedReader(reader);
area.read( br, null );
br.close();
area.requestFocus();
}catch(Exception e2) {
System.out.println(e2);
}
}
}