123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- package ui.view.outliner;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.util.ArrayList;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JTabbedPane;
- import javax.swing.event.TreeModelEvent;
- import javax.swing.event.TreeModelListener;
- import javax.swing.tree.DefaultMutableTreeNode;
- import ui.controller.Control;
- import ui.model.Consumer;
- import ui.model.DecoratedCable;
- import ui.model.DecoratedHolonObject.HolonObjectState;
- import ui.model.DecoratedNetwork;
- import ui.model.DecoratedState;
- import ui.model.DecoratedSwitch;
- import ui.model.MinimumNetwork;
- import ui.model.Model;
- import ui.model.Passiv;
- import ui.model.Supplier;
- import utility.Event;
- import utility.ImageImport;
- //Combines High Level views on the Network
- //TODO seperate ListPanel and StatePanel in self-contained classes
- public class Outliner extends JFrame {
- JTabbedPane tabbedPane = new JTabbedPane();
- JPanel listPanel = new JPanel(new BorderLayout());
- JPanel statePanel = new JPanel(new BorderLayout());
- Event outlinerUpdate = new Event();
-
- HolonView holonView;
- public boolean isClosed = false;
- ArrayList<MinimumNetwork> list;
- public Outliner(JFrame parentFrame, Model model, Control control){
- setBounds(0, 0, 400, parentFrame.getHeight());
- this.setIconImage(ImageImport.loadImage("/Images/Holeg.png", 30, 30));
- this.setTitle("Outliner");
- setLocationRelativeTo(parentFrame);
- this.setVisible(true);
- repaintWithDecoratedState(control.getSimManager().getActualDecorState());
- this.getContentPane().add(tabbedPane);
- this.addWindowListener(new java.awt.event.WindowAdapter() {
- @Override
- public void windowClosing(java.awt.event.WindowEvent windowEvent) {
- isClosed = true;
- }
- });
- tabbedPane.addTab("List", listPanel);
- tabbedPane.addTab("State", statePanel);
- tabbedPane.addTab("Holon", holonView = new HolonView(this, control));
- }
- public void repaintWithDecoratedState(DecoratedState decoratedState) {
- outlinerUpdate.broadcast();
- listPanel.removeAll();
- statePanel.removeAll();
- DefaultMutableTreeNode topListPanel = new DefaultMutableTreeNode();
- DefaultMutableTreeNode objects = new DefaultMutableTreeNode("HolonObjects");
- DefaultMutableTreeNode switches = new DefaultMutableTreeNode("Switches");
- DefaultMutableTreeNode nodes = new DefaultMutableTreeNode("Nodes");
- DefaultMutableTreeNode cables = new DefaultMutableTreeNode("Cable");
- topListPanel.add(objects);
- topListPanel.add(switches);
- topListPanel.add(nodes);
- topListPanel.add(cables);
- DefaultMutableTreeNode topStatePanel = new DefaultMutableTreeNode("Networks");
-
- for(DecoratedSwitch dSwitch: decoratedState.getDecoratedSwitches()) {
- switches.add(new DefaultMutableTreeNode(dSwitch.getModel().getName()));
- }
-
- for(DecoratedNetwork dNet: decoratedState.getNetworkList()) {
- DefaultMutableTreeNode network = new DefaultMutableTreeNode("Network");
- if(!dNet.getConsumerList().isEmpty() || !dNet.getConsumerSelfSuppliedList().isEmpty()) {
- DefaultMutableTreeNode consumer = new DefaultMutableTreeNode("ConsumerList");
- for (Consumer con : dNet.getConsumerList()) {
- DefaultMutableTreeNode consumerNode = new ColoredTreeNode(con.toString(),con.getState().toString(), getStateColor(con.getState()) );
- consumer.add(consumerNode);
- objects.add(new DefaultMutableTreeNode(con.getModel().getName()));
- }
- for (Consumer con : dNet.getConsumerSelfSuppliedList()) {
- DefaultMutableTreeNode consumerNode = new DefaultMutableTreeNode(con.toString() + con.getState());
- consumer.add(consumerNode);
- objects.add(new DefaultMutableTreeNode(con.getModel().getName()));
- }
- network.add(consumer);
- }
- if(!dNet.getSupplierList().isEmpty()) {
- DefaultMutableTreeNode supplier = new DefaultMutableTreeNode("SupplierList");
- for (Supplier sup : dNet.getSupplierList()) {
- supplier.add(new DefaultMutableTreeNode(sup.toString()));
- objects.add(new DefaultMutableTreeNode(sup.getModel().getName()));
- }
- network.add(supplier);
- }
- for(Passiv pas: dNet.getPassivNoEnergyList()) {
- objects.add(new DefaultMutableTreeNode(pas.getModel().getName()));
- }
- topStatePanel.add(network);
- for(DecoratedCable cable : dNet.getDecoratedCableList()) {
- cables.add(new DefaultMutableTreeNode(cable.getModel().toString()));
- }
- }
-
- for(DecoratedCable cable : decoratedState.getLeftOverEdges()) {
- cables.add(new DefaultMutableTreeNode(cable.getModel().toString()));
- }
-
- listPanel.add(TreeUtils.makePanelFromNode(topListPanel));
- statePanel.add(TreeUtils.makePanelFromNode(topStatePanel));
-
- listPanel.revalidate();
- statePanel.revalidate();
- listPanel.repaint();
- }
-
- class MyTreeModelListener implements TreeModelListener {
- @Override
- public void treeNodesChanged(TreeModelEvent tmE) {
- // TODO Auto-generated method stub
- System.out.println("treeNodesChanged");
- }
- @Override
- public void treeNodesInserted(TreeModelEvent tmE) {
- // TODO Auto-generated method stub
- System.out.println("treeNodesInserted");
- }
- @Override
- public void treeNodesRemoved(TreeModelEvent tmE) {
- // TODO Auto-generated method stub
- System.out.println("treeNodesRemoved");
- }
- @Override
- public void treeStructureChanged(TreeModelEvent tmE) {
- // TODO Auto-generated method stub
- System.out.println("treeStructureChanged");
- }
-
- }
- private Color getStateColor(HolonObjectState state) {
- switch(state) {
- case NOT_SUPPLIED:
- return new Color(230, 120, 100);
- case NO_ENERGY:
- return Color.white;
- case OVER_SUPPLIED:
- return new Color(166, 78, 229);
- case PARTIALLY_SUPPLIED:
- return Color.yellow;
- case PRODUCER:
- return Color.lightGray;
- case SUPPLIED:
- return new Color(13, 175, 28);
- default:
- return Color.BLACK;
- }
- }
-
-
- class ColoredTreeNode extends DefaultMutableTreeNode{
- private Color color;
- public ColoredTreeNode(String string, String state, Color color) {
- //"<html>Some text <font color='red'>" + "bla" + "some text in red</font></html>"
- //Integer.toHexString(color.getRGB()).substring(2)
- //String c = string + "<html><font bgcolor='#132122'>" + state +"</font></html>";
- super(( "<html>" + string + "<font bgcolor='#" + Integer.toHexString(color.getRGB()).substring(2) + "'>" + state +"</font></html>"));
- //this.color = color;
- }
- public Color getColor(){
- return color;
- }
- public void setColor(Color color) {
- this.color = color;
- }
-
- }
-
- }
|