Skip to content

Commit cd11261

Browse files
chin123rbuch
authored andcommitted
Add option in Timeline to set order of displayed PEs
This requires the user to provide a text file with one PE index on one line, specifying the ordering of the PEs. Change-Id: I16ada9bf2cdb628c0118faf0f8e84b750efc2d2f
1 parent 74bf2fe commit cd11261

File tree

2 files changed

+55
-7
lines changed

2 files changed

+55
-7
lines changed

src/projections/Tools/Timeline/Data.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ private void storeRangeToPersistantStorage(){
395395

396396

397397
/** Use the new set of PEs. The PEs will be stored internally in a Linked List */
398-
public void setProcessorList(SortedSet<Integer> processorList){
398+
public void setProcessorList(Collection<Integer> processorList){
399399
peToLine.clear();
400400

401401
if(isSMPRun()){
@@ -428,16 +428,18 @@ public void setProcessorList(SortedSet<Integer> processorList){
428428
if(curNID != prevNID){
429429
//encounter a new set of PEs of a node, add the comm thd
430430
//of the previous node
431-
peToLine.add(prevCommPE);
432-
commPEs.add(prevCommPE);
431+
if (!commPEs.contains(prevCommPE)) {
432+
peToLine.add(prevCommPE);
433+
commPEs.add(prevCommPE);
434+
}
433435

434436
prevNID = curNID;
435437
prevCommPE = getCommThdPE(pe);
436438
}
437439
peToLine.add(pe);
438440
}
439441
}
440-
if(!isLastAdded) peToLine.add(prevCommPE);
442+
if(!commPEs.contains(prevCommPE) && !isLastAdded) peToLine.add(prevCommPE);
441443
}else{
442444
peToLine.addAll(processorList);
443445
}

src/projections/Tools/Timeline/WindowControls.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@
99
import java.awt.event.ItemEvent;
1010
import java.awt.event.ItemListener;
1111
import java.io.File;
12+
import java.io.FileReader;
1213
import java.net.URL;
1314
import java.text.DecimalFormat;
15+
import java.util.ArrayList;
16+
import java.util.Scanner;
1417

1518
import javax.swing.ButtonGroup;
1619
import javax.swing.ImageIcon;
@@ -26,6 +29,7 @@
2629
import javax.swing.JRadioButtonMenuItem;
2730
import javax.swing.JTextField;
2831
import javax.swing.SwingWorker;
32+
import javax.swing.JFileChooser;
2933

3034
import projections.gui.ChooseEntriesWindow;
3135
import projections.gui.FloatJTextField;
@@ -59,7 +63,7 @@ class WindowControls extends JPanel implements ActionListener,
5963
// basic zoom controls
6064
private JButton bDecrease, bIncrease, bReset;
6165

62-
private JButton bZoomSelected, bLoadSelected, bRanges;
66+
private JButton bZoomSelected, bLoadSelected, bRanges, bOrder;
6367

6468
private JTextField highlightTime, selectionBeginTime, selectionEndTime, selectionDiff;
6569

@@ -114,7 +118,9 @@ class WindowControls extends JPanel implements ActionListener,
114118
private JMenuItem mDisplayLegend;
115119

116120
private JMenuItem mDisplayTopTimesText;
117-
121+
122+
private JFileChooser chooseOrderfc;
123+
118124
protected WindowControls(TimelineWindow parentWindow_,
119125
Data data_) {
120126

@@ -132,7 +138,40 @@ protected WindowControls(TimelineWindow parentWindow_,
132138
userEventWindow = new UserEventWindow(cbUserTable);
133139

134140
}
135-
141+
142+
143+
protected void showOrderDialog() {
144+
chooseOrderfc = new JFileChooser();
145+
int returnVal = chooseOrderfc.showOpenDialog(parentWindow);
146+
if(returnVal == JFileChooser.APPROVE_OPTION) {
147+
String chosenFile = chooseOrderfc.getSelectedFile().getName();
148+
String homeDir = System.getProperty("user.home");
149+
String fullPath = String.join(File.separator, homeDir, chosenFile);
150+
151+
ArrayList<Integer> orderedList = readOrderFromFile(fullPath);
152+
data.setProcessorList(orderedList);
153+
parentWindow.refreshDisplay(true);
154+
parentWindow.setVisible(true);
155+
}
156+
157+
}
158+
159+
protected ArrayList<Integer> readOrderFromFile(String fileName) {
160+
Scanner in = null;
161+
try {
162+
in = new Scanner(new FileReader(fileName));
163+
} catch (java.io.FileNotFoundException ex) {
164+
System.out.println("File not found: " + fileName);
165+
}
166+
ArrayList<Integer> orderedList = new ArrayList<Integer>();
167+
String pe = null;
168+
169+
while (in.hasNextInt()) {
170+
orderedList.add(in.nextInt());
171+
}
172+
in.close();
173+
return orderedList;
174+
}
136175

137176
protected void showDialog() {
138177
if(dialog == null){
@@ -424,6 +463,10 @@ else if (c == bRanges) {
424463
showDialog();
425464
}
426465

466+
else if (c == bOrder) {
467+
showOrderDialog();
468+
}
469+
427470
else if (c == bLoadSelected) {
428471
loadSelected();
429472
parentWindow.refreshDisplay(true);
@@ -743,6 +786,7 @@ private void CreateLayout() {
743786
bZoomSelected = new JButton("Zoom Selection");
744787
bLoadSelected = new JButton("Load Selection");
745788
bRanges = new JButton("Load New Time/PE Range");
789+
bOrder = new JButton("Set PE Order");
746790

747791
bZoomSelected.setEnabled(false);
748792
bLoadSelected.setEnabled(false);
@@ -751,6 +795,7 @@ private void CreateLayout() {
751795
bZoomSelected.addActionListener(this);
752796
bLoadSelected.addActionListener(this);
753797
bRanges.addActionListener(this);
798+
bOrder.addActionListener(this);
754799

755800

756801
highlightTime = new JTextField(" ");
@@ -774,6 +819,7 @@ private void CreateLayout() {
774819
Util.gblAdd(zoomPanel, selectionEndTime, gbc, 4, 2, 1, 1, 1, 1);
775820
Util.gblAdd(zoomPanel, selectionDiff, gbc, 5, 2, 1, 1, 1, 1);
776821
Util.gblAdd(zoomPanel, bRanges, gbc, 0, 1, 1, 1, 1, 1);
822+
Util.gblAdd(zoomPanel, bOrder, gbc, 1, 1, 1, 1, 1, 1);
777823
Util.gblAdd(zoomPanel, new JLabel("Time At Mouse Cursor", JLabel.CENTER), gbc, 2, 1, 1, 1, 1, 1);
778824
Util.gblAdd(zoomPanel, new JLabel("Selection Begin Time", JLabel.CENTER), gbc, 3, 1, 1, 1, 1, 1);
779825
Util.gblAdd(zoomPanel, new JLabel("Selection End Time", JLabel.CENTER), gbc, 4, 1, 1, 1, 1, 1);

0 commit comments

Comments
 (0)