diff --git a/simulators/c++2/src_simulator/ServerHelpData.h b/simulators/c++2/src_simulator/ServerHelpData.h index c32bcb150de229bfd66d137564328cef3f0b5be3..e4b66bdde6c895b845e7bf45ae14a4b221cf6f33 100644 --- a/simulators/c++2/src_simulator/ServerHelpData.h +++ b/simulators/c++2/src_simulator/ServerHelpData.h @@ -14,6 +14,7 @@ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} \n\ ul.task-list{list-style: none;} \n\ </style> \n\ + <link rel=\"stylesheet\" href=\"/home/levan/Desktop/TTool/src/main/resources/help/help.css\" /> \n\ <!--[if lt IE 9]> \n\ <script src=\"//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js\"></script> \n\ <![endif]--> \n\ @@ -484,8 +485,8 @@ Not defined: <unknow param></code></pre> \n\ <td style=\"text-align: center;\">Show the current timeline diagram tracein HTML format</td> \n\ <td style=\"text-align: center;\">[Type: 2] Task List</td> \n\ <td style=\"text-align: center;\">[Type: 1] Scale idle time: 0 -> no, 1 -> yes</td> \n\ -<td style=\"text-align: center;\">-</td> \n\ -<td style=\"text-align: center;\">-</td> \n\ +<td style=\"text-align: center;\">[Type: 2] Start Time</td> \n\ +<td style=\"text-align: center;\">[Type: 2] End Time</td> \n\ <td style=\"text-align: center;\">-</td> \n\ </tr> \n\ <tr class=\"odd\"> \n\ diff --git a/simulators/c++2/src_simulator/arch/CPU.cpp b/simulators/c++2/src_simulator/arch/CPU.cpp index ad985f7cc18ef024c988a0283ae71ff3a93ca3f3..f564078bcccc5a77fab0a4045cf685f166fae290 100644 --- a/simulators/c++2/src_simulator/arch/CPU.cpp +++ b/simulators/c++2/src_simulator/arch/CPU.cpp @@ -168,14 +168,14 @@ void CPU::schedule2XML(std::ostringstream& glob,std::ofstream& myfile) const{ } } -std::map<TMLTask*, std::string> CPU::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable) { +std::map<TMLTask*, std::string> CPU::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable, double start, double end) { TransactionList _transactListClone; std::string taskList = iTracetaskList.c_str(); maxScale = 0; for (int z = 0; z < _transactList.size(); z++) { std::string taskName = _transactList[z]->getCommand()->getTask()->toString(); std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/ - if(pos != std::string::npos){ + if(pos != std::string::npos && start <= (double)_transactList[z]->getStartTime() && (double)_transactList[z]->getEndTime() <= end){ _transactListClone.push_back(_transactList[z]); } } diff --git a/simulators/c++2/src_simulator/arch/CPU.h b/simulators/c++2/src_simulator/arch/CPU.h index a99f4423e2ac6a8dd46b301541f61e8c2a3d58e7..570cf1d11bc66766d010d5f7eac70c12ad7e8098 100755 --- a/simulators/c++2/src_simulator/arch/CPU.h +++ b/simulators/c++2/src_simulator/arch/CPU.h @@ -122,7 +122,7 @@ public: void buttonPieChart(std::ofstream& myfile) const; void showPieChart(std::ofstream& myfile) const; void HW2HTML(std::ofstream& myfile) const; - std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable); + std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable, double start, double end); inline unsigned int getMaxScale() { return maxScale; } inline void resetMaxScale() { maxScale = 0; } void schedule2HTML(std::ofstream& myfile) const; diff --git a/simulators/c++2/src_simulator/arch/FPGA.cpp b/simulators/c++2/src_simulator/arch/FPGA.cpp index 4aa8bba2302e8f7cd9bcc87fc8d16ceb70d0e078..3a5d9d99f214e203d0b83cec8dd4e85cec4850c5 100644 --- a/simulators/c++2/src_simulator/arch/FPGA.cpp +++ b/simulators/c++2/src_simulator/arch/FPGA.cpp @@ -628,14 +628,14 @@ std::string FPGA::determineHTMLCellClass(std::map<TMLTask*, std::string> &taskCo return taskColors[ task ]; } -std::map<TMLTask*, std::string> FPGA::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList, bool isScalable) { +std::map<TMLTask*, std::string> FPGA::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList, bool isScalable, double start, double end) { TransactionList _transactListClone; std::string taskList = iTracetaskList.c_str(); maxScale = 0; for (int z = 0; z < _transactList.size(); z++) { std::string taskName = _transactList[z]->getCommand()->getTask()->toString(); std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/ - if(pos != std::string::npos){ + if(pos != std::string::npos && start <= (double)_transactList[z]->getStartTime() && (double)_transactList[z]->getEndTime() <= end){ _transactListClone.push_back(_transactList[z]); } } diff --git a/simulators/c++2/src_simulator/arch/FPGA.h b/simulators/c++2/src_simulator/arch/FPGA.h index 74f80b64ea11f85738e20c2f8710a9d7bfe0e271..37a556f5f683a6aae4682893a92b65fec0ae6a8d 100644 --- a/simulators/c++2/src_simulator/arch/FPGA.h +++ b/simulators/c++2/src_simulator/arch/FPGA.h @@ -133,7 +133,7 @@ public: ///inline unsigned int getTransNumber() { return _transNumber;} inline unsigned int getID () { return _ID;} void HW2HTML(std::ofstream& myfile) ; - std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList, bool isScalable); + std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList, bool isScalable, double start, double end); inline unsigned int getMaxScale() { return maxScale; } void removeTrans(int numberOfTrans); void schedule2HTML(std::ofstream& myfile) ; diff --git a/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp b/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp index f067e2a9bda492a76d5fef6cde036b12645f0dfa..d6dc17daad9c65b8d4c804e08ee300c238e73368 100644 --- a/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp +++ b/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp @@ -299,14 +299,14 @@ void SchedulableDevice::buttonPieChart(std::ofstream& myfile) const{ myfile << " chart" << _ID << ".update();" << std::endl; } -std::map<TMLTask*, std::string> SchedulableDevice::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable) { +std::map<TMLTask*, std::string> SchedulableDevice::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable, double start, double end) { TransactionList _transactListClone; std::string taskList = iTracetaskList.c_str(); maxScale = 0; for (int z = 0; z < _transactList.size(); z++) { std::string taskName = _transactList[z]->getCommand()->getTask()->toString(); std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/ - if(pos != std::string::npos){ + if(pos != std::string::npos && start <= (double)_transactList[z]->getStartTime() && (double)_transactList[z]->getEndTime() <= end){ _transactListClone.push_back(_transactList[z]); } } diff --git a/simulators/c++2/src_simulator/arch/SchedulableDevice.h b/simulators/c++2/src_simulator/arch/SchedulableDevice.h index 9a45fe397d75228140a827a3e2dc4844cbba106d..9468860af6fcb61a45c26e5737248ad57492607f 100644 --- a/simulators/c++2/src_simulator/arch/SchedulableDevice.h +++ b/simulators/c++2/src_simulator/arch/SchedulableDevice.h @@ -79,7 +79,7 @@ public: void drawPieChart(std::ofstream& myfile) const; void showPieChart(std::ofstream& myfile) const; void HW2HTML(std::ofstream& myfile) const; - std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable); + std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable, double start, double end); inline unsigned int getMaxScale() { return maxScale; } ///Writes a HTML representation of the schedule to an output file /** diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp index 1107a1b202d9f6cccccbeb1fc33c82d32d2cb77b..83b8606300bef1008b7a1813cdd9c1f5f3feb293 100644 --- a/simulators/c++2/src_simulator/sim/Simulator.cpp +++ b/simulators/c++2/src_simulator/sim/Simulator.cpp @@ -462,7 +462,7 @@ void Simulator::latencies2XML(std::ostringstream& glob, int id1, int id2) { (*j)->latencies2XML(glob, id1,id2); } } -void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& myfile, bool isScalable) const { +void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& myfile, bool isScalable, double start, double end) const { std::map<TMLTask*, std::string> taskCellClasses; std::ostringstream myfileTemp, myfileTemp1; @@ -482,7 +482,7 @@ void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& m unsigned int maxScale = 0; for(CPUList::const_iterator i=_simComp->getCPUList().begin(); i != _simComp->getCPUList().end(); ++i){ for(unsigned int j = 0; j < (*i)->getAmoutOfCore(); j++) { - taskCellClasses = (*i)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable); + taskCellClasses = (*i)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable, start, end); if((*i)->getMaxScale() > maxScale) { maxScale = (*i)->getMaxScale(); } @@ -497,7 +497,7 @@ void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& m (*j)->setStartFlagHTML(true); for(TaskList::const_iterator i = (*j)->getTaskList().begin(); i != (*j)->getTaskList().end(); ++i){ (*j)->setHtmlCurrTask(*i); - taskCellClasses = (*j)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable); + taskCellClasses = (*j)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable, start, end); if((*j)->getMaxScale() > maxScale) { maxScale = (*j)->getMaxScale(); } @@ -506,7 +506,7 @@ void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& m } for(BusList::const_iterator j=_simComp->getBusList().begin(); j != _simComp->getBusList().end(); ++j){ - taskCellClasses = (*j)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable); + taskCellClasses = (*j)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable, start, end); if((*j)->getMaxScale() > maxScale) { maxScale = (*j)->getMaxScale(); } @@ -2077,9 +2077,11 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ int temp = 0; aInpStream >> temp; bool _isScalable = (temp == 1) ? true : false; - + double _start = 0, _end = 0; + aInpStream >> _start; + aInpStream >> _end; timelineContent << "<![CDATA["; - timeline2HTML(aStrParam, timelineContent, _isScalable); + timeline2HTML(aStrParam, timelineContent, _isScalable, _start, _end); timelineContent << "]]>"; aGlobMsg << TAG_MSGo << timelineContent.str() << TAG_MSGc << std::endl; break; diff --git a/simulators/c++2/src_simulator/sim/Simulator.h b/simulators/c++2/src_simulator/sim/Simulator.h index a25798d238762c4f1efaa8039fe72b8333409443..3600c3e863bedd639d24aff3920c656345b014c2 100644 --- a/simulators/c++2/src_simulator/sim/Simulator.h +++ b/simulators/c++2/src_simulator/sim/Simulator.h @@ -247,7 +247,7 @@ public: ///Writes a HTML representation of the schedule of CPUs and buses to an output file void schedule2HTML(std::string& iTraceFileName) const; - void timeline2HTML(std::string& iTracetaskList, std::ostringstream& myfile, bool isScalable) const; + void timeline2HTML(std::string& iTracetaskList, std::ostringstream& myfile, bool isScalable, double start, double end) const; std::string getTaskCellStatus(int i) const; ///Writes simulation traces in VCD format to an output file diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java index f6872698da14b6efb92f30fd7c4a46e3adbf0520..bc2a221aecaa4e136d70c3ecb97bea92d1103c45 100644 --- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -1575,7 +1575,23 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene mctb.setActive(false); isServerReply = false; timelineParam = ""; - sendCommand( "show-timeline-trace " + listOfTaskToShowInTimeLine + ((isScalable) ? " 1" : " 0" )); + if (tmlSimPanelTimeline.getCheckBoxSelectedTimePeriod()) { + if (tmlSimPanelTimeline.isValidDuration()) { + sendCommand( "show-timeline-trace " + listOfTaskToShowInTimeLine + ((isScalable) ? " 1 " : " 0 " ) + tmlSimPanelTimeline.getStarTime() + " " + tmlSimPanelTimeline.getEndTime()); + } else { + timelineParam = "<!DOCTYPE html><html><body><header><h1>WRONG TIME FORMAT</h1></header></body></html>"; + tmlSimPanelTimeline.setStatusBar(status.getText().trim(), time.getText().trim(), info.getText().trim()); + tmlSimPanelTimeline.setContentPaneEnable(true); + mctb.setActive(true); + commandTab.setEnabled(true); + setAll(); + return; + } + } else { + sendCommand( "show-timeline-trace " + listOfTaskToShowInTimeLine + ((isScalable) ? " 1 0 10000000" : " 0 0 10000000" ) ); + // display transactions from 0 to 10000000 + } + Frame f = new JFrame("Updating Data"); JPanel p = new JPanel(); JProgressBar b = new JProgressBar(); @@ -1630,6 +1646,11 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene if (!listOfTaskToShowInTimeLine.equals("")) { tmlSimPanelTimeline = new JFrameTMLSimulationPanelTimeline(new Frame(), mgui, this, "Show Trace - Timeline", timelineParam); + tmlSimPanelTimeline.setCheckBoxSelectedTimePeriod(jdstmlc.getSelectedTimePeriod()); + if (jdstmlc.getSelectedTimePeriod()) { + tmlSimPanelTimeline.setStartTime(jdstmlc.getStartTime()); + tmlSimPanelTimeline.setEndTime(jdstmlc.getEndTime()); + } tmlSimPanelTimeline.setParam(paramMainCommand.getText().trim()); tmlSimPanelTimeline.setVisible(true); updateTimelineTrace(); diff --git a/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java b/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java index 24a9c84c7890efd1579b54d6b310c44af9e34766..9eee27212bfdff3f927f7fd48104a4af6891df23 100644 --- a/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java +++ b/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java @@ -40,6 +40,8 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi private JTextField paramMainCommand; private MainCommandsToolBar mctb; private JScrollPane jsp; + private JTextArea startTime, endTime; + private JCheckBox checkBoxSelectedTimePeriod; private String zoomIndex = ""; private String toolTipText = null; private int X = 0, Y = 0, Y_AXIS_START = 0, maxPos = 0, minPos = 0; @@ -78,13 +80,14 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi // Top panel JPanel timelinePane = new JPanel(); JPanel topPanel = new JPanel(); + JPanel northPanel = new JPanel(); JButton buttonClose = new JButton(actions[InteractiveSimulationActions.ACT_QUIT_SD_WINDOW]); - topPanel.add(buttonClose); + northPanel.add(buttonClose); JButton buttonHtml = new JButton(actions[InteractiveSimulationActions.ACT_SAVE_TIMELINE_HTML]); - topPanel.add(buttonHtml); + northPanel.add(buttonHtml); JTextField zoomIn = new JTextField("Zoom In:"); zoomIn.setEditable(false); - topPanel.add(zoomIn); + northPanel.add(zoomIn); String[] zoomFactor = new String[] {"50%","75%","100%", "125%", "150%", "175%", "200%"}; JComboBox comboBoxUpdateView = new JComboBox<String>(zoomFactor); comboBoxUpdateView.setSelectedIndex(2); @@ -111,7 +114,31 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi jsp.repaint(); } }); - topPanel.add(comboBoxUpdateView); + northPanel.add(comboBoxUpdateView); + + JPanel southPanel = new JPanel(); + checkBoxSelectedTimePeriod = new JCheckBox("Time Duration"); + southPanel.add(checkBoxSelectedTimePeriod); + startTime = new JTextArea(1, 10); + startTime.setToolTipText("Start Time"); + startTime.setEnabled(false); + southPanel.add(startTime); + endTime = new JTextArea(1, 10); + endTime.setToolTipText("End Time"); + endTime.setEnabled(false); + southPanel.add(endTime); + checkBoxSelectedTimePeriod.addItemListener(e -> { + if (e.getStateChange() == ItemEvent.SELECTED) { + startTime.setEnabled(true); + endTime.setEnabled(true); + } else { + startTime.setEnabled(false); + endTime.setEnabled(false); + } + }); + + JSplitPane combinePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, northPanel, southPanel); + topPanel.add(combinePanel,BorderLayout.CENTER); timelinePane.add(topPanel,BorderLayout.NORTH); //Main control JPanel jp01, jp02; @@ -561,4 +588,41 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi else if (trans.toLowerCase().contains("wait")) return TransType.WAIT; return TransType.NONE; } + + public void setCheckBoxSelectedTimePeriod(boolean b) { + checkBoxSelectedTimePeriod.setSelected(b); + } + + public boolean getCheckBoxSelectedTimePeriod() { + return checkBoxSelectedTimePeriod.isSelected(); + } + + public void setStartTime(String startTime) { + this.startTime.setText(startTime); + } + + public String getStarTime() { + return startTime.getText(); + } + + public void setEndTime(String endTime) { + this.endTime.setText(endTime); + } + + public String getEndTime() { + return endTime.getText(); + } + + public boolean isValidDuration() { + try { + Double start = Double.parseDouble(getStarTime()); + Double end = Double.parseDouble(getEndTime()); + if (start > end) + return false; + return true; + } catch(NumberFormatException e){ + return false; + } + + } } diff --git a/src/main/java/ui/window/JDialogSelectTasks.java b/src/main/java/ui/window/JDialogSelectTasks.java index 6a2d86b91517d7a022b47f0f85e4a2e7e8ed7c7a..25dbdf63c1996d583d0e436137b0cb6c6c3745ed 100644 --- a/src/main/java/ui/window/JDialogSelectTasks.java +++ b/src/main/java/ui/window/JDialogSelectTasks.java @@ -48,6 +48,7 @@ import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; import java.util.LinkedList; import java.util.List; import java.util.Vector; @@ -71,7 +72,8 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L //subpanels private JPanel panel1, panel2, panel3, panel4, panel5, panel6; - private JCheckBox checkBoxScaleIdleTime; + private JCheckBox checkBoxScaleIdleTime, checkBoxSelectedTimePeriod; + private JTextField startTime, endTime; private JList<String> listIgnored; private JList<String> listValidated; private JButton allValidated; @@ -261,14 +263,33 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L //scale idle time by default checkBoxScaleIdleTime.setSelected(true); panel4.add(checkBoxScaleIdleTime); -// JLabel jLabelScale = new JLabel("Start time:"); -// panel4.add(jLabelScale); -// JTextField startTime = new JTextField(); -// panel4.add(startTime); -// jLabelScale = new JLabel("End time:"); -// panel4.add(jLabelScale); -// JTextField endTime = new JTextField(); -// panel4.add(endTime); + + //Select time duration + checkBoxSelectedTimePeriod = new JCheckBox("Select StartTime and EndTime"); + checkBoxSelectedTimePeriod.setSelected(false); + panel4.add(checkBoxSelectedTimePeriod); + JLabel jLabelScale = new JLabel("Start time:"); + panel4.add(jLabelScale); + startTime = new JTextField(); + startTime.setEnabled(false); + panel4.add(startTime); + jLabelScale = new JLabel("End time:"); + panel4.add(jLabelScale); + endTime = new JTextField(); + endTime.setText("100000000"); + endTime.setEnabled(false); + panel4.add(endTime); + + checkBoxSelectedTimePeriod.addItemListener(e -> { + if (e.getStateChange() == ItemEvent.SELECTED) { + startTime.setEnabled(true); + endTime.setEnabled(true); + } else { + startTime.setEnabled(false); + endTime.setEnabled(false); + } + }); + c2.gridwidth = GridBagConstraints.REMAINDER; c.add(panel4, c2); @@ -283,6 +304,22 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L return checkBoxScaleIdleTime.isSelected(); } + public boolean getSelectedTimePeriod() { + return checkBoxSelectedTimePeriod.isSelected(); + } + + public String getStartTime() { + if (startTime.isEnabled()) + return startTime.getText(); + return "0"; + } + + public String getEndTime() { + if (endTime.isEnabled()) + return endTime.getText(); + return "100000000"; + } + public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); diff --git a/src/main/resources/help/diplodocussimulator.html b/src/main/resources/help/diplodocussimulator.html index 50852319c4e56ca28e3aeecd4d08e07983e8d82f..27b567b060df56e3cca18e75e476a2f846498268 100644 --- a/src/main/resources/help/diplodocussimulator.html +++ b/src/main/resources/help/diplodocussimulator.html @@ -13,6 +13,7 @@ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} ul.task-list{list-style: none;} </style> + <link rel="stylesheet" href="/home/levan/Desktop/TTool/src/main/resources/help/help.css" /> <!--[if lt IE 9]> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> <![endif]--> @@ -483,8 +484,8 @@ Not defined: <unknow param></code></pre> <td style="text-align: center;">Show the current timeline diagram tracein HTML format</td> <td style="text-align: center;">[Type: 2] Task List</td> <td style="text-align: center;">[Type: 1] Scale idle time: 0 -> no, 1 -> yes</td> -<td style="text-align: center;">-</td> -<td style="text-align: center;">-</td> +<td style="text-align: center;">[Type: 2] Start Time</td> +<td style="text-align: center;">[Type: 2] End Time</td> <td style="text-align: center;">-</td> </tr> <tr class="odd"> diff --git a/src/main/resources/help/diplodocussimulator.md b/src/main/resources/help/diplodocussimulator.md index 5bd1a7c5080c48d8b3e946df6221735e2fa445b8..a5667f60f4490134dfc8c71be37620f31bf4967d 100644 --- a/src/main/resources/help/diplodocussimulator.md +++ b/src/main/resources/help/diplodocussimulator.md @@ -86,7 +86,7 @@ run-x-time-units | rxtu | 1 6 | Runs the simulation for x units of time | [Type: run-x-transactions | rxtr | 1 2 | Runs the simulation for x transactions | [Type: 1] nb of transactions | - | - | - | - save-simulation-state-in-file | sssif | 8 | Saves the current simulation state into a file | [Type: 2] File name | - | - | - | - save-trace-in-file | stif | 7 | Saves the current trace of the simulation in a VCD, HTML, TXT or XML file | [Type: 1] File format: 0-> VCD, 1->HTML, 2->TXT, 3->XML | [Type: 2] File name | - | - | - -show-timeline-trace | stlt | 7 4 | Show the current timeline diagram tracein HTML format | [Type: 2] Task List | [Type: 1] Scale idle time: 0 -> no, 1 -> yes | - | - | - +show-timeline-trace | stlt | 7 4 | Show the current timeline diagram tracein HTML format | [Type: 2] Task List | [Type: 1] Scale idle time: 0 -> no, 1 -> yes | [Type: 2] Start Time | [Type: 2] End Time | - set-variable | sv | 5 | Set the value of a variable | [Type: 1] task ID | [Type: 1] variable ID | [Type: 1] variable value | - | - stop | stop | 15 | Stops the currently running simulation | - | - | - | - | - write-in-channel | wic | 6 | Writes y samples / events to channel / event x | [Type: 1] Channel ID | [Type: 2] Nb of samples | - | - | - diff --git a/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java b/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java index dcda4390db7737e1bb67c6710e023ebc7cdddd91..617de81d1f688eb6e207fb6f605f400548a02e3f 100644 --- a/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java +++ b/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java @@ -177,7 +177,7 @@ public class TimelineDiagramTest extends AbstractTest { try { toServer(" 1 6 100", rc); Thread.sleep(5); - toServer("7 4 ApplicationSimple__Src,ApplicationSimple__T1,ApplicationSimple__T2 1", rc); + toServer("7 4 ApplicationSimple__Src,ApplicationSimple__T1,ApplicationSimple__T2 1 0 100000000", rc); Thread.sleep(5); while (running) { String line = null;