diff --git a/src/ui/JMenuBarTurtle.java b/src/ui/JMenuBarTurtle.java index 34f8fede4087a5f4b7f7691b1518792400232ebc..9fc2612f84a38d784e6c580ca8f68463a35b1d79 100755 --- a/src/ui/JMenuBarTurtle.java +++ b/src/ui/JMenuBarTurtle.java @@ -536,6 +536,9 @@ public class JMenuBarTurtle extends JMenuBar { menuItem = tool.add(mgui.actions[TGUIAction.ACT_GEN_DOC]); menuItem.addMouseListener(mgui.mouseHandler); + menuItem = tool.add(mgui.actions[TGUIAction.ACT_GEN_DOC_REQ]); + menuItem.addMouseListener(mgui.mouseHandler); + if ((ConfigurationTTool.ExternalCommand1.length() > 0) && (ConfigurationTTool.ExternalCommand1Host.length() > 0)) { menuItem = tool.add(mgui.actions[TGUIAction.EXTERNAL_ACTION_1]); menuItem.addMouseListener(mgui.mouseHandler); diff --git a/src/ui/MainGUI.java b/src/ui/MainGUI.java index 2f2e792d765375166b870b332b0eb9aec41903bd..74ab8afa0af96d76276b674edbf5b6d30164ba8f 100755 --- a/src/ui/MainGUI.java +++ b/src/ui/MainGUI.java @@ -3502,7 +3502,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener { System.out.println("Frame Req"); JFrameRequirementTable jfrt = new JFrameRequirementTable("Requirement table", tabs); jfrt.setIconImage(IconManager.img8); - jfrt.setSize(600, 600); + jfrt.setSize(1024, 768); GraphicLib.centerOnParent(jfrt); jfrt.setVisible(true); System.out.println("Done"); diff --git a/src/ui/req/Requirement.java b/src/ui/req/Requirement.java index d1a4aeb6d5b152145b3feb717921f754fc58d0f1..5377f06c79b8ca42533461a2429c0846b3c067ab 100755 --- a/src/ui/req/Requirement.java +++ b/src/ui/req/Requirement.java @@ -63,7 +63,7 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit protected int textY = 22; protected int lineHeight = 30; private double dlineHeight = 0.0; - protected int type = 0; + protected int reqType = 0; // 0: normal, 1: formal, 2: security //protected int startFontSize = 10; protected Graphics graphics; @@ -158,7 +158,7 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit userResizable = true; multieditable = true; - type = 0; + reqType = 0; id = "0"; @@ -226,10 +226,10 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit if (displayText) { size = currentFontSize - 2; g.setFont(myFont.deriveFont((float)(myFont.getSize() - 2))); - if (type == 1) { + if (reqType == 1) { drawLimitedString(g, FORMAL_REQ, x, y + size, width, 1); } else { - if (type == 0) { + if (reqType == 0) { drawLimitedString(g, REGULAR_REQ, x, y + size, width, 1); } else { drawLimitedString(g, SECURITY_REQ, x, y + size, width, 1); @@ -263,7 +263,7 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit g.setFont(myFont); String texti; - if (type == 1) { + if (reqType == 1) { texti = "TRDD"; } else { texti = "Text"; @@ -301,7 +301,7 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit if (size < (height - 2)) { drawLimitedString(g, "Risk=\"" + criticality + "\"", x + textX, y + size, width, 0); size += currentFontSize; - if ((size < (height - 2)) && (type == 2)) { + if ((size < (height - 2)) && (reqType == 2)) { drawLimitedString(g, "Attack Tree Nodes=\"" + attackTreeNode + "\"", x + textX, y + size, width, 0); } } @@ -370,7 +370,7 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit public boolean editAttributes() { //String oldValue = value; - JDialogRequirement jdr = new JDialogRequirement(tdp.getGUI().getFrame(), "Setting attributes of Requirement " + getRequirementName(), id, text, kind, criticality, violatedAction, type, attackTreeNode); + JDialogRequirement jdr = new JDialogRequirement(tdp.getGUI().getFrame(), "Setting attributes of Requirement " + getRequirementName(), id, text, kind, criticality, violatedAction, reqType, attackTreeNode); jdr.setSize(750, 400); GraphicLib.centerOnParent(jdr); jdr.show(); @@ -413,13 +413,23 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit } public boolean isFormal() { - return (type == 1); + return (reqType == 1); } - public void setType(int _type) { - type = _type; + public void setRequirementType(int _type) { + reqType = _type; } + public int getRequirementType() { + return reqType; + } + + public boolean isSatisfied() { + return satisfied; + } + + + public int getType() { return TGComponentManager.TREQ_REQUIREMENT; } @@ -467,15 +477,15 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit String s = e.getActionCommand(); if (s.indexOf("regular") > -1) { //System.out.println("Set to regular"); - type = 0; + reqType = 0; } else { if (s.indexOf("formal") > 1) { //System.out.println("Set to formal"); - type = 1; + reqType = 1; } else { if (s.indexOf("security") > 1) { //System.out.println("Set to formal"); - type = 2; + reqType = 2; } else { if (s.indexOf("non") > 1) { satisfied = false; @@ -497,10 +507,10 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit ret += "ID=" + id; - if (type == 1) { + if (reqType == 1) { ret = ret + " " + FORMAL_REQ; } else { - if (type == 0) { + if (reqType == 0) { ret = ret + " " + REGULAR_REQ; } else { ret = ret + " " + SECURITY_REQ; @@ -510,11 +520,11 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit ret += " " + text; ret += " criticality=" + criticality; - if (type == 1) { + if (reqType == 1) { ret += " violatedAction=" + violatedAction; } - if (type == 2) { + if (reqType == 2) { ret += " attackTreeNode =" + attackTreeNode; } @@ -530,7 +540,7 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit sb.append("false\" />\n"); }*/ sb.append("<type data=\""); - sb.append("" + type + "\" />\n"); + sb.append("" + reqType + "\" />\n"); if (texts != null) { for(int i=0; i<texts.length; i++) { @@ -586,17 +596,17 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit if (elt.getTagName().equals("Formal")) { s = elt.getAttribute("isFormal"); if (s.equals("true")) { - type = 1; + reqType = 1; } else { - type = 0; + reqType = 0; } } else if (elt.getTagName().equals("type")) { //System.out.println("Analyzing line0"); s = elt.getAttribute("data"); if (s.equals("null")) { - type = 0; + reqType = 0; } - type = Integer.decode(s).intValue(); + reqType = Integer.decode(s).intValue(); } else if (elt.getTagName().equals("textline")) { //System.out.println("Analyzing line0"); s = elt.getAttribute("data"); @@ -670,17 +680,21 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit return violatedAction; } - public String getAttackTreeNode() { + public String getAttackTreeNode() { return attackTreeNode; } public String getText() { return text; } - + public String getID() { return id; } + + public String getKind() { + return kind; + } public int getCriticality() { //System.out.println("Criticality=" + criticality); @@ -695,14 +709,14 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit public String getAttributes() { String attr = "ID=" + id + "\n"; - if (type == 1) { + if (reqType == 1) { attr += "TRDD= " + text + "\n"; } else { attr += "Text= " + text + "\n"; } attr += "Kind= " + kind + "\n"; attr += "Risk= " + criticality + "\n"; - if (type == 2) { + if (reqType == 2) { attr += "AttackTreeNode=" + attackTreeNode + "\n"; } return attr; @@ -722,11 +736,11 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit // Must find for both modes which width is desirable String s0, s1; - if (type == 1) { + if (reqType == 1) { s0 = FORMAL_REQ; s1 = "TRDD="; } else { - if (type == 0) { + if (reqType == 0) { s0 = REGULAR_REQ; s1 = "Text="; } else { @@ -768,7 +782,7 @@ public class Requirement extends TGCScalableWithInternalComponent implements Wit w3 = graphics.getFontMetrics().stringWidth("ID=\"" + id + "\"") + 2; w4 = Math.max(w4, w3); - if (type == 2) { + if (reqType == 2) { w3 = graphics.getFontMetrics().stringWidth("Attack Tree Node=\"" + attackTreeNode + "\"") + 2; w4 = Math.max(w4, w3); } diff --git a/src/ui/req/RequirementDiagramPanel.java b/src/ui/req/RequirementDiagramPanel.java index 7cbb84e327c8d7b64680b3ebccefdc21e1cc2682..8ce53de8df43c142b4fe5d070154b635ad51a3bc 100755 --- a/src/ui/req/RequirementDiagramPanel.java +++ b/src/ui/req/RequirementDiagramPanel.java @@ -167,6 +167,23 @@ public class RequirementDiagramPanel extends TDiagramPanel implements TDPWithAtt return cpt; } + + public LinkedList<Requirement> getAllRequirements() { + LinkedList<Requirement> list = new LinkedList<Requirement>(); + TGComponent tgc; + + ListIterator iterator = getComponentList().listIterator(); + + while(iterator.hasNext()) { + tgc = (TGComponent)(iterator.next()); + if (tgc instanceof Requirement) { + list.add((Requirement)tgc); + } + } + + return list; + + } public boolean isLinkedByVerifyTo(TGComponent tgc1, TGComponent tgc2) { ListIterator iterator = getComponentList().listIterator(); diff --git a/src/ui/window/JFrameRequirementTable.java b/src/ui/window/JFrameRequirementTable.java index 244b7dc204a960f8708448142822022dbfadf69c..b5489828ce373978cf007258ddbe0cf611043990 100755 --- a/src/ui/window/JFrameRequirementTable.java +++ b/src/ui/window/JFrameRequirementTable.java @@ -58,6 +58,7 @@ import java.util.*; import myutil.*; import ui.*; import ui.file.*; +import ui.req.*; import nc.*; @@ -133,347 +134,64 @@ public class JFrameRequirementTable extends JFrame implements ActionListener /*, sw.setText(""+nc.switches.size()); jp.add(sw, c0);*/ - // Information - /*GeneralInfoNCTableModel tmgi = new GeneralInfoNCTableModel(ncs); - TableSorter sorterGI = new TableSorter(tmgi); - JTable jtableGI = new JTable(sorterGI); - sorterGI.setTableHeader(jtableGI.getTableHeader()); - - - ((jtableGI.getColumnModel()).getColumn(0)).setPreferredWidth(100); - ((jtableGI.getColumnModel()).getColumn(1)).setPreferredWidth(25); - jtableGI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - jspGeneralInfo = new JScrollPane(jtableGI); - jspGeneralInfo.setWheelScrollingEnabled(true); - jspGeneralInfo.getVerticalScrollBar().setUnitIncrement(10); - - // Equipments - EquipmentsNCTableModel enctm = new EquipmentsNCTableModel(ncs); - TableSorter sorterEI = new TableSorter(enctm); - JTable jtableEI = new JTable(sorterEI); - sorterEI.setTableHeader(jtableEI.getTableHeader()); - - - ((jtableEI.getColumnModel()).getColumn(0)).setPreferredWidth(100); - ((jtableEI.getColumnModel()).getColumn(1)).setPreferredWidth(150); - ((jtableEI.getColumnModel()).getColumn(2)).setPreferredWidth(150); - jtableEI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - jspEquipmentInfo = new JScrollPane(jtableEI); - jspEquipmentInfo.setWheelScrollingEnabled(true); - jspEquipmentInfo.getVerticalScrollBar().setUnitIncrement(10); - - // Switchs - SwitchesNCTableModel snctm = new SwitchesNCTableModel(ncs); - TableSorter sorterSI = new TableSorter(snctm); - JTable jtableSI = new JTable(sorterSI); - sorterSI.setTableHeader(jtableSI.getTableHeader()); - - - ((jtableSI.getColumnModel()).getColumn(0)).setPreferredWidth(100); - ((jtableSI.getColumnModel()).getColumn(1)).setPreferredWidth(150); - ((jtableSI.getColumnModel()).getColumn(2)).setPreferredWidth(100); - jtableSI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - jspSwitchInfo = new JScrollPane(jtableSI); - jspSwitchInfo.setWheelScrollingEnabled(true); - jspSwitchInfo.getVerticalScrollBar().setUnitIncrement(10); - - // Traffics - TrafficsNCTableModel tnctm = new TrafficsNCTableModel(ncs); - TableSorter sorterTI = new TableSorter(tnctm); - JTable jtableTI = new JTable(sorterTI); - sorterTI.setTableHeader(jtableTI.getTableHeader()); - - - ((jtableTI.getColumnModel()).getColumn(0)).setPreferredWidth(100); - ((jtableTI.getColumnModel()).getColumn(1)).setPreferredWidth(100); - ((jtableTI.getColumnModel()).getColumn(2)).setPreferredWidth(100); - ((jtableTI.getColumnModel()).getColumn(3)).setPreferredWidth(100); - ((jtableTI.getColumnModel()).getColumn(4)).setPreferredWidth(100); - jtableTI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - jspTrafficInfo = new JScrollPane(jtableTI); - jspTrafficInfo.setWheelScrollingEnabled(true); - jspTrafficInfo.getVerticalScrollBar().setUnitIncrement(10); - - // Links - LinksNCTableModel lnctm = new LinksNCTableModel(ncs); - TableSorter sorterLI = new TableSorter(lnctm); - JTable jtableLI = new JTable(sorterLI); - sorterLI.setTableHeader(jtableLI.getTableHeader()); - - - ((jtableLI.getColumnModel()).getColumn(0)).setPreferredWidth(100); - ((jtableLI.getColumnModel()).getColumn(1)).setPreferredWidth(100); - ((jtableLI.getColumnModel()).getColumn(2)).setPreferredWidth(150); - jtableLI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - jspLinkInfo = new JScrollPane(jtableLI); - jspLinkInfo.setWheelScrollingEnabled(true); - jspLinkInfo.getVerticalScrollBar().setUnitIncrement(10); - - // Paths - PathsNCTableModel pnctm = new PathsNCTableModel(ncs); - TableSorter sorterPI = new TableSorter(pnctm); - JTable jtablePI = new JTable(sorterPI); - sorterPI.setTableHeader(jtablePI.getTableHeader()); - - - ((jtablePI.getColumnModel()).getColumn(0)).setPreferredWidth(100); - ((jtablePI.getColumnModel()).getColumn(1)).setPreferredWidth(100); - ((jtablePI.getColumnModel()).getColumn(2)).setPreferredWidth(300); - jtablePI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - jspPathInfo = new JScrollPane(jtablePI); - jspPathInfo.setWheelScrollingEnabled(true); - jspPathInfo.getVerticalScrollBar().setUnitIncrement(10);*/ - - /* - // Table - //System.out.println("Building deadlock elements"); - JPanel jp1 = new JPanel(); - JPanel jp2 = new JPanel(); - JPanel jp3 = new JPanel(); - JPanel jp4 = new JPanel(); - //if (graph.getNbTransition() < MAX_TRANSITIONS) { - DeadlockTableModel tmDeadlock = new DeadlockTableModel(graph, MAX_TRANSITIONS); - - if (shouldIStop()) { - return; - } - - TableSorter sorterDeadlock = new TableSorter(tmDeadlock); - - if (shouldIStop()) { - return; - } - - JTable jtableDeadlock = new JTable(sorterDeadlock); - - if (shouldIStop()) { - return; - } - - sorterDeadlock.setTableHeader(jtableDeadlock.getTableHeader()); - - if (shouldIStop()) { - return; - } - - //System.out.println("Deadlock table"); - - ((jtableDeadlock.getColumnModel()).getColumn(0)).setPreferredWidth(Math.max(maxLengthColumn(framePanel, tmDeadlock, 0) + 20, 50)); - ((jtableDeadlock.getColumnModel()).getColumn(1)).setPreferredWidth(Math.max(maxLengthColumn(framePanel, tmDeadlock, 1) + 15, 100)); - ((jtableDeadlock.getColumnModel()).getColumn(2)).setPreferredWidth(Math.max(maxLengthColumn(framePanel, tmDeadlock, 2) + 15, 400)); - jtableDeadlock.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - jspDeadlock = new JScrollPane(jtableDeadlock); - jspDeadlock.setWheelScrollingEnabled(true); - jspDeadlock.getVerticalScrollBar().setUnitIncrement(10); - - if (shouldIStop()) { - return; - } - - //System.out.println("End Deadlock table"); - - // shortest paths - GridBagLayout gridbag1 = new GridBagLayout(); - GridBagConstraints c1 = new GridBagConstraints(); - jp1.setLayout(gridbag1); - jp2.setLayout(new BorderLayout()); - - //jp1.setBorder(new javax.swing.border.TitledBorder("Simulation options")); - - // first line panel1 - //c1.gridwidth = 3; - c1.gridheight = 1; - c1.weighty = 1.0; - c1.weightx = 1.0; - c1.gridwidth = 1; //GridBagConstraints.REMAINDER; //end row - c1.fill = GridBagConstraints.HORIZONTAL; - c1.gridheight = 1; - - JLabel label1 = new JLabel("Shortest path from "); - jp1.add(label1, c1); - - if (shouldIStop()) { - return; - } - - //System.out.println("Graphical"); - - Integer[] tab1 = new Integer[graph.getNbState()]; - - if (shouldIStop()) { - return; - } - - Integer[] tab2 = new Integer[graph.getNbState()]; - - if (shouldIStop()) { - return; - } - - for(int i=0; i<graph.getNbState(); i++) { - tab1[i] = new Integer(i); - tab2[i] = new Integer(i); - } - - //combo1 = new JComboBox(tab1); - combo1 = new JTextField("0", 10); - jp1.add(combo1, c1); - - JLabel label2 = new JLabel(" to "); - jp1.add(label2, c1); - - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - //combo2 = new JComboBox(tab2); - combo2 = new JTextField("" + (graph.getNbState() - 1), 10); - jp1.add(combo2, c1); - //jp2.add(jp1, BorderLayout.NORTH); - - goPath = new JButton("Compute", IconManager.imgic16); - goPath.addActionListener(this); - jp1.add(goPath, c1); - - savePath = new JButton("Save last path as a graph", IconManager.imgic24); - savePath.addActionListener(this); - jp1.add(savePath, c1); - savePath.setEnabled(false); - - jp2.add(jp1, BorderLayout.NORTH); - - text1 = new JTextField(300); - JScrollPane jspText = new JScrollPane(text1); - jspText.setWheelScrollingEnabled(true); - jspText.getVerticalScrollBar().setUnitIncrement(10); - jp2.add(jspText, BorderLayout.CENTER); - - // Longest path - GridBagLayout gridbag2 = new GridBagLayout(); - GridBagConstraints c2 = new GridBagConstraints(); - jp3.setLayout(gridbag2); - jp4.setLayout(new BorderLayout()); - - //jp1.setBorder(new javax.swing.border.TitledBorder("Simulation options")); - - // first line panel1 - //c1.gridwidth = 3; - c2.gridheight = 1; - c2.weighty = 1.0; - c2.weightx = 1.0; - c2.gridwidth = 1; //GridBagConstraints.REMAINDER; //end row - c2.fill = GridBagConstraints.HORIZONTAL; - c2.gridheight = 1; - - cycleDone = true; - //System.out.println("Searching for cycles"); - if (graph.getNbTransition() < MAX_TRANSITIONS) { - hasCycle = GraphAlgorithms.hasCycle(graph); - cycleComputed = true; - } else { - cycleComputed = false; - } - //System.out.println("End searching for cycles"); - - if (shouldIStop()) { - return; - } - - //System.out.println("G comp"); - - label2 = new JLabel("Longest path from "); - jp3.add(label2, c2); - - if (shouldIStop()) { - return; - } - - tab1 = new Integer[graph.getNbState()]; - - if (shouldIStop()) { - return; - } - - tab2 = new Integer[graph.getNbState()]; - - if (shouldIStop()) { - return; - } - - for(int i=0; i<graph.getNbState(); i++) { - tab1[i] = new Integer(i); - tab2[i] = new Integer(i); - } - - //combo3 = new JComboBox(tab1); - combo3 = new JTextField("0", 10); - //graph.getNbState() - jp3.add(combo3, c2); - - label2 = new JLabel(" to "); - jp3.add(label2, c2); - - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - //combo4 = new JComboBox(tab2); - combo4 = new JTextField("" + (graph.getNbState() - 1), 10); - jp3.add(combo4, c2); - //jp2.add(jp1, BorderLayout.NORTH); - - goPathL = new JButton("Compute", IconManager.imgic16); - goPathL.addActionListener(this); - jp3.add(goPathL, c2); - - savePathL = new JButton("Save last path as a graph", IconManager.imgic24); - savePathL.addActionListener(this); - jp3.add(savePathL, c2); - savePathL.setEnabled(false); - - jp4.add(jp3, BorderLayout.NORTH); - - text2 = new JTextField(300); - jspText = new JScrollPane(text2); - jspText.setWheelScrollingEnabled(true); - jspText.getVerticalScrollBar().setUnitIncrement(10); - jp4.add(jspText, BorderLayout.CENTER); - - if (cycleComputed) { - if (hasCycle) { - text2.setText("The graph contains cycle -> longest path is infinite"); - goPathL.setEnabled(false); - } - } else { - text2.setText("Graph may contain cycles -> in that case, the longest path cannot be computed"); - } - //} - - - //System.out.println("Making last elements"); - mainTabbedPane = new JTabbedPane(); - mainTabbedPane.addTab("General info.", IconManager.imgic13, jp, "# states, #transitions"); - mainTabbedPane.addTab("Statistics", IconManager.imgic13, jsp, "Statistics on states & transitions"); - //if (graph.getNbTransition() < MAX_TRANSITIONS) { - mainTabbedPane.addTab("Deadlocks", IconManager.imgic13, jspDeadlock, "Potential deadlocks"); - mainTabbedPane.addTab("Shortest Paths", IconManager.imgic13, jp2, "Shortest paths"); - mainTabbedPane.addTab("Longest Paths", IconManager.imgic13, jp4, "Longest paths"); - //} - //} - + // Information + TURTLEPanel tp; + int i, j; + TDiagramPanel tdp; + RequirementDiagramPanel rdp; + LinkedList<Requirement> all, list; + all = new LinkedList<Requirement>(); + String title; - */ + for(i=0; i<tabs.size(); i++) { + tp = (TURTLEPanel)(tabs.elementAt(i)); + if (tp instanceof RequirementPanel) { + for(j=0; j<tp.panels.size(); j++) { + if (tp.panels.elementAt(j) instanceof RequirementDiagramPanel) { + rdp = (RequirementDiagramPanel)(tp.panels.elementAt(j)); + list = rdp.getAllRequirements(); + all.addAll(list); + + title = tp.tabbedPane.getTitleAt(j); + + makeJScrollPane(list, mainTabbedPane, title); + } + } + } + } - mainTabbedPane = new JTabbedPane(); - /*mainTabbedPane.addTab("General info.", IconManager.imgic13, jspGeneralInfo, "Information on diagram"); - mainTabbedPane.addTab("Equipments", IconManager.imgic13, jspEquipmentInfo, "Information on equipments"); - mainTabbedPane.addTab("Switches", IconManager.imgic13, jspSwitchInfo, "Information on switches"); - mainTabbedPane.addTab("Traffics", IconManager.imgic13, jspTrafficInfo, "Information on traffics"); - mainTabbedPane.addTab("Links", IconManager.imgic13, jspLinkInfo, "Information on links"); - mainTabbedPane.addTab("Paths", IconManager.imgic13, jspPathInfo, "Information on paths");*/ + makeJScrollPane(all, mainTabbedPane, "All requirements"); framePanel.add(mainTabbedPane, BorderLayout.CENTER); - pack(); - System.out.println("GG comp done"); + System.out.println("Requirements computed"); + } + + private void makeJScrollPane(LinkedList<Requirement> list, JTabbedPane tab, String title) { + RequirementsTableModel rtm = new RequirementsTableModel(list); + TableSorter sorterRTM = new TableSorter(rtm); + JTable jtableRTM = new JTable(sorterRTM); + sorterRTM.setTableHeader(jtableRTM.getTableHeader()); + + ((jtableRTM.getColumnModel()).getColumn(0)).setPreferredWidth(50); + ((jtableRTM.getColumnModel()).getColumn(1)).setPreferredWidth(150); + ((jtableRTM.getColumnModel()).getColumn(2)).setPreferredWidth(120); + ((jtableRTM.getColumnModel()).getColumn(3)).setPreferredWidth(300); + ((jtableRTM.getColumnModel()).getColumn(4)).setPreferredWidth(100); + ((jtableRTM.getColumnModel()).getColumn(5)).setPreferredWidth(100); + ((jtableRTM.getColumnModel()).getColumn(6)).setPreferredWidth(100); + ((jtableRTM.getColumnModel()).getColumn(7)).setPreferredWidth(100); + ((jtableRTM.getColumnModel()).getColumn(8)).setPreferredWidth(75); + //jtableRTM.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + JScrollPane jspRTM = new JScrollPane(jtableRTM); + jspRTM.setWheelScrollingEnabled(true); + jspRTM.getVerticalScrollBar().setUnitIncrement(10); + + tab.addTab(title, IconManager.imgic13, jspRTM, title); } public void actionPerformed(ActionEvent evt) { @@ -484,22 +202,22 @@ public class JFrameRequirementTable extends JFrame implements ActionListener /*, dispose(); return; } /*else if (evt.getSource() == goPath) { - compute(1); + compute(1); } else if (evt.getSource() == goPathL) { - compute(2); + compute(2); }*/ } - + private void compute(int idFunc) { /*computingPath = true; GraphAlgorithms.go = true; String info; if (idFunc == 1) { - info = "Calculating shortest path..."; + info = "Calculating shortest path..."; } else { - info = "Calculating longest path..."; + info = "Calculating longest path..."; } int from; @@ -507,80 +225,80 @@ public class JFrameRequirementTable extends JFrame implements ActionListener /*, JTextField text; if (idFunc == 1) { - text = text1; - try { - from = Integer.decode(combo1.getText()).intValue(); - } catch (Exception e) { - text1.setText("Invalid value:" + combo1.getText()); - return; - } - try { - to = Integer.decode(combo2.getText()).intValue(); - } catch (Exception e) { - text1.setText("Invalid value:" + combo2.getText()); - return; - } - - if(from<0) { - text.setText("Invalid value:" + combo1.getText() + ". Minimun value is 0"); - return; - } - - if(to<0) { - text.setText("Invalid value:" + combo2.getText() + ". Minimun value is 0"); - return; - } - - if(from>=graph.getNbState()) { - text1.setText("Invalid value:" + combo1.getText() + ". Maximum value is: " + (graph.getNbState()-1)); - return; - } - - if(to>=graph.getNbState()) { - text1.setText("Invalid value:" + combo2.getText() + ". Maximum value is: " + (graph.getNbState()-1)); - return; - } - + text = text1; + try { + from = Integer.decode(combo1.getText()).intValue(); + } catch (Exception e) { + text1.setText("Invalid value:" + combo1.getText()); + return; + } + try { + to = Integer.decode(combo2.getText()).intValue(); + } catch (Exception e) { + text1.setText("Invalid value:" + combo2.getText()); + return; + } + + if(from<0) { + text.setText("Invalid value:" + combo1.getText() + ". Minimun value is 0"); + return; + } + + if(to<0) { + text.setText("Invalid value:" + combo2.getText() + ". Minimun value is 0"); + return; + } + + if(from>=graph.getNbState()) { + text1.setText("Invalid value:" + combo1.getText() + ". Maximum value is: " + (graph.getNbState()-1)); + return; + } + + if(to>=graph.getNbState()) { + text1.setText("Invalid value:" + combo2.getText() + ". Maximum value is: " + (graph.getNbState()-1)); + return; + } + } else { - text = text2; - - try { - from = Integer.decode(combo3.getText()).intValue(); - } catch (Exception e) { - text2.setText("Invalid value:" + combo3.getText()); - return; - } - try { - to = Integer.decode(combo4.getText()).intValue(); - } catch (Exception e) { - text2.setText("Invalid value:" + combo4.getText()); - return; - } - - if(from<0) { - text2.setText("Invalid value:" + combo3.getText() + ". Minimun value is 0"); - return; - } - - if(to<0) { - text2.setText("Invalid value:" + combo4.getText() + ". Minimun value is 0"); - return; - } - - if(from>=graph.getNbState()) { - text1.setText("Invalid value:" + combo3.getText() + ". Maximum value is: " + (graph.getNbState()-1)); - return; - } - - if(to>=graph.getNbState()) { - text2.setText("Invalid value:" + combo4.getText() + ". Maximum value is: " + (graph.getNbState()-1)); - return; - } - - if (!cycleComputed) { - hasCycle = GraphAlgorithms.hasCycle(graph); - cycleComputed = true; - } + text = text2; + + try { + from = Integer.decode(combo3.getText()).intValue(); + } catch (Exception e) { + text2.setText("Invalid value:" + combo3.getText()); + return; + } + try { + to = Integer.decode(combo4.getText()).intValue(); + } catch (Exception e) { + text2.setText("Invalid value:" + combo4.getText()); + return; + } + + if(from<0) { + text2.setText("Invalid value:" + combo3.getText() + ". Minimun value is 0"); + return; + } + + if(to<0) { + text2.setText("Invalid value:" + combo4.getText() + ". Minimun value is 0"); + return; + } + + if(from>=graph.getNbState()) { + text1.setText("Invalid value:" + combo3.getText() + ". Maximum value is: " + (graph.getNbState()-1)); + return; + } + + if(to>=graph.getNbState()) { + text2.setText("Invalid value:" + combo4.getText() + ". Maximum value is: " + (graph.getNbState()-1)); + return; + } + + if (!cycleComputed) { + hasCycle = GraphAlgorithms.hasCycle(graph); + cycleComputed = true; + } } ThreadGUIElement t = new ThreadGUIElement(this, idFunc, info, "Please wait", ""); @@ -590,7 +308,7 @@ public class JFrameRequirementTable extends JFrame implements ActionListener /*, } - + private int maxLengthColumn(Component c, AbstractTableModel tm, int index) { int w = 0, wtmp;