Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'perf/org.eclipse.linuxtools.perf/src/org/eclipse/linuxtools/internal/perf/launch/PerfEventsTab.java')
-rw-r--r--perf/org.eclipse.linuxtools.perf/src/org/eclipse/linuxtools/internal/perf/launch/PerfEventsTab.java692
1 files changed, 346 insertions, 346 deletions
diff --git a/perf/org.eclipse.linuxtools.perf/src/org/eclipse/linuxtools/internal/perf/launch/PerfEventsTab.java b/perf/org.eclipse.linuxtools.perf/src/org/eclipse/linuxtools/internal/perf/launch/PerfEventsTab.java
index f08adc741e..916485d06b 100644
--- a/perf/org.eclipse.linuxtools.perf/src/org/eclipse/linuxtools/internal/perf/launch/PerfEventsTab.java
+++ b/perf/org.eclipse.linuxtools.perf/src/org/eclipse/linuxtools/internal/perf/launch/PerfEventsTab.java
@@ -45,351 +45,351 @@ import org.eclipse.swt.widgets.Text;
public class PerfEventsTab extends AbstractLaunchConfigurationTab {
- private static final String EMPTY_STRING = ""; //$NON-NLS-1$
-
- // checkbox for selecting default event
- protected Button chkDefaultEvent;
-
- // the event tabs within the tab folder
- protected TabItem[] eventTabItems;
-
- // the table within the corresponding event tab
- protected Table[] eventTable;
-
- protected TabFolder tabFolder;
- private int rawTabIndex = 0;
- private int bpTabIndex = 0;
- protected Text rawText;
- protected Text bpText;
- private Composite top;
- private IProject previousProject = null;
-
-
- /**
- * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getImage()
- */
- @Override
- public Image getImage() {
- return PerfPlugin.getImageDescriptor("icons/event.gif").createImage(); //$NON-NLS-1$
- }
-
- @Override
- public void createControl(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- setControl(top);
- top.setLayout(new GridLayout());
- this.top = top;
- }
-
- private void createEventTabs(Composite top, ILaunchConfiguration config){
- //Maybe not the best place to load the event list but we'll see.
- Map<String,List<String>> events = PerfCore.getEventList(config);
-
- // the special counters should be last
- ArrayList<String> tmpTabNames = new ArrayList<>(events.keySet());
- final List<String> SPECIAL_EVENTS = Arrays.asList(new String[] {
- PerfPlugin.STRINGS_HWBREAKPOINTS,
- PerfPlugin.STRINGS_RAWHWEvents });
- tmpTabNames.removeAll(SPECIAL_EVENTS);
- tmpTabNames.addAll(SPECIAL_EVENTS);
-
- String [] tabNames = tmpTabNames.toArray(new String [0]);
- eventTabItems = new TabItem[tabNames.length];
- eventTable = new Table[tabNames.length];
-
- tabFolder = new TabFolder(top, SWT.NONE);
- tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- // Initialize each tab.
- for (int i = 0; i < tabNames.length; i++) {
-
- eventTabItems[i] = new TabItem(tabFolder, SWT.NONE);
- eventTabItems[i].setText(tabNames[i]);
-
- // These are for the two special tabs for custom events.
- if (tabNames[i].equals(PerfPlugin.STRINGS_HWBREAKPOINTS)
- || tabNames[i].equals(PerfPlugin.STRINGS_RAWHWEvents)) {
-
- // Composite to contain it all
- Composite c = new Composite(tabFolder, SWT.NONE);
- c.setLayout(new GridLayout(2, false));
-
- // A list to check off existing custom events (or show the new ones added)
- Table table = new Table(c, SWT.CHECK | SWT.MULTI);
- eventTable[i] = table;
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- table.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent se) {
- updateLaunchConfigurationDialog();
- }
- });
-
- // Right side to enter new events and delete old ones
- Composite right = new Composite(c, SWT.NONE);
- right.setLayout(new GridLayout(2,false));
- right.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true));
-
- // for adding
- Label l = new Label(right, SWT.NONE);
- l.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false,2,1));
- Text t = new Text(right, SWT.SINGLE | SWT.BORDER);
- t.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- if (tabNames[i].equals(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
- bpTabIndex = i;
- bpText = t;
- l.setText("Please enter the hardware breakpoint in the form mem:<addr>[:access].");
- }
- if (tabNames[i].equals(PerfPlugin.STRINGS_RAWHWEvents)) {
- rawTabIndex = i;
- rawText = t;
- l.setText("Please enter the raw register encoding in the form rNNN.");
- }
-
- Button b = new Button(right, SWT.PUSH);
- b.setText("Add");
- b.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false));
- b.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent se) {
- int i = tabFolder.getSelectionIndex();
- if (rawTabIndex == i) {
- new TableItem(eventTable[i], SWT.NONE).setText(rawText.getText());
- } else if(bpTabIndex == i) {
- new TableItem(eventTable[i], SWT.NONE).setText(bpText.getText());
- }
- updateLaunchConfigurationDialog();
- }
- });
- l = new Label(right, SWT.NONE);
- l.setForeground(new Color(right.getDisplay(), 100,100,100));
- if (tabNames[i].equals(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
- l.setText("For example, .........");
- }
- if (tabNames[i].equals(PerfPlugin.STRINGS_RAWHWEvents)) {
- l.setText("For example, r1a8");
- }
- l.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false,2,1));
-
- // spacer label.
- l = new Label(right, SWT.NONE);
- l.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,2,1));
-
- // for removing
- b = new Button(right, SWT.PUSH);
- b.setText("Remove Selected Events");
- b.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false,2,1));
- b.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent se) {
- eventTable[tabFolder.getSelectionIndex()].remove(eventTable[tabFolder.getSelectionIndex()].getSelectionIndices());
- updateLaunchConfigurationDialog();
- }
- });
- l = new Label(right, SWT.NONE);
- l.setForeground(new Color(right.getDisplay(), 100,100,100));
- l.setText("Note: Select by highlighting, not by checking.");
- l.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false,2,1));
-
- eventTabItems[i].setControl(c);
-
- } else {
- // This loads all the events 'perf list' gives into their respective tabs.
- Table table = new Table(tabFolder, SWT.CHECK);
- eventTable[i] = table;
-
- List<String> eventList = events.get(tabNames[i]);
- for (String event : eventList) {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(event);
- }
-
- table.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent se) {
- updateLaunchConfigurationDialog();
- }
- });
-
- eventTabItems[i].setControl(table);
- }
- }
- }
-
- private void refreshDefaultEnabled() {
- boolean state = !chkDefaultEvent.getSelection();
- for (Table tab : eventTable) {
- tab.setEnabled(state);
- }
- }
-
- @Override
- public String getName() {
- return "Perf Events";
- }
-
- @Override
- public void initializeFrom(ILaunchConfiguration config) {
- IProject project = getProject(config);
-
- try {
- if(previousProject == null || (previousProject != null && !previousProject.equals(project))){
- Control[] children = top.getChildren();
-
- for (Control control : children) {
- control.dispose();
- }
-
- createVerticalSpacer(top, 1);
-
- // Default event checkbox
- chkDefaultEvent = new Button(top, SWT.CHECK);
- chkDefaultEvent.setText("Default Event"); //$NON-NLS-1$
- chkDefaultEvent.setLayoutData(new GridData());
- chkDefaultEvent.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent se) {
- refreshDefaultEnabled();
- updateLaunchConfigurationDialog();
- }
- });
-
- createEventTabs(top, config);
- }
-
- // restore whether things are default event/enabled or not.
- chkDefaultEvent.setSelection(config.getAttribute(PerfPlugin.ATTR_DefaultEvent, PerfPlugin.ATTR_DefaultEvent_default));
- refreshDefaultEnabled();
-
- // restore custom hw breakpoints
- List<?> hwbps = config.getAttribute(PerfPlugin.ATTR_HwBreakpointEvents, PerfPlugin.ATTR_HwBreakpointEvents_default);
- if (hwbps != null) {
- for (int i = 0; i < eventTable.length; i++) {
- if (eventTabItems[i].getText().equals(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
- eventTable[i].removeAll();
- for (Object e : hwbps) {
- TableItem x = new TableItem(eventTable[i], SWT.NONE);
- x.setText((String)e);
- }
- }
- }
- }
-
- // restore custom raw hw events
- List<?> rawhe = config.getAttribute(PerfPlugin.ATTR_RawHwEvents, PerfPlugin.ATTR_RawHwEvents_default);
- if (rawhe != null) {
- for (int i = 0; i < eventTable.length; i++) {
- if (eventTabItems[i].getText().equals(PerfPlugin.STRINGS_RAWHWEvents)) {
- eventTable[i].removeAll();
- for (Object e : rawhe) {
- TableItem x = new TableItem(eventTable[i], SWT.NONE);
- x.setText((String)e);
- }
- }
- }
- }
-
- // tick all the boxes that are checked
- List<?> selectedEvents = config.getAttribute(PerfPlugin.ATTR_SelectedEvents, PerfPlugin.ATTR_SelectedEvents_default);
-
- if(selectedEvents != null){
- for (int i = 0; i < eventTable.length; i++) {
- for(TableItem event : eventTable[i].getItems()) {
- if(selectedEvents.contains(event.getText())){
- event.setChecked(true);
- } else {
- event.setChecked(false);
- }
- }
- }
- }
- previousProject = project;
- } catch (CoreException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void performApply(ILaunchConfigurationWorkingCopy wconfig) {
- //Store default event checkbox
- wconfig.setAttribute(PerfPlugin.ATTR_DefaultEvent, chkDefaultEvent.getSelection());
-
- //Store which events are selected
- ArrayList<String> selectedEvents = new ArrayList<>();
- for (int i = 0; i < eventTable.length; i++) {
- for(TableItem x : eventTable[i].getItems()) {
- if (x.getChecked())
- selectedEvents.add(x.getText());
- }
- }
-
- if (selectedEvents.size() == 0) {
- wconfig.setAttribute(PerfPlugin.ATTR_SelectedEvents, (String) null);
- } else {
- wconfig.setAttribute(PerfPlugin.ATTR_SelectedEvents, selectedEvents);
- }
-
- //Flag for multiple events
- if ((chkDefaultEvent.getSelection() == false) && (selectedEvents.size() >= 1)) {
- wconfig.setAttribute(PerfPlugin.ATTR_MultipleEvents, true);
- } else {
- wconfig.setAttribute(PerfPlugin.ATTR_MultipleEvents, false);
- }
- if (selectedEvents.size() <= 0) {
- //If they unticked the default box but didn't select any events revert to default.
- wconfig.setAttribute(PerfPlugin.ATTR_DefaultEvent, true);
- }
-
- //Store any custom HW BreakPoints they added (even if unchecked).
- ArrayList<String> hwbps = new ArrayList<>();
- for (int i = 0; i < eventTable.length; i++) {
- if (eventTabItems[i].getText().equals(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
- for(TableItem x : eventTable[i].getItems()) {
- hwbps.add(x.getText());
- }
- }
- }
- if (hwbps.size() == 0) {
- hwbps = null; // to match with default value.
- }
- wconfig.setAttribute(PerfPlugin.ATTR_HwBreakpointEvents, hwbps);
-
- //Store any custom Raw HW Events they added (even if unchecked).
- ArrayList<String> rawhwe = new ArrayList<>();
- for (int i = 0; i < eventTable.length; i++) {
- if (eventTabItems[i].getText().equals(PerfPlugin.STRINGS_RAWHWEvents)) {
- for(TableItem x : eventTable[i].getItems()) {
- rawhwe.add(x.getText());
- }
- }
- }
- if (rawhwe.size() == 0) {
- rawhwe = null; //to match with default value.
- }
- wconfig.setAttribute(PerfPlugin.ATTR_RawHwEvents, rawhwe);
- }
-
- @Override
- public void setDefaults(ILaunchConfigurationWorkingCopy wconfig) {
- wconfig.setAttribute(PerfPlugin.ATTR_DefaultEvent, PerfPlugin.ATTR_DefaultEvent_default);
- wconfig.setAttribute(PerfPlugin.ATTR_MultipleEvents, PerfPlugin.ATTR_MultipleEvents_default);
- wconfig.setAttribute(PerfPlugin.ATTR_SelectedEvents, PerfPlugin.ATTR_SelectedEvents_default);
- wconfig.setAttribute(PerfPlugin.ATTR_HwBreakpointEvents, PerfPlugin.ATTR_HwBreakpointEvents_default);
- wconfig.setAttribute(PerfPlugin.ATTR_RawHwEvents, PerfPlugin.ATTR_RawHwEvents_default);
- }
-
- private IProject getProject(ILaunchConfiguration config){
- String name = null;
- try {
- name = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, EMPTY_STRING);
- } catch (CoreException e) {
- return null;
- }
- if (name.isEmpty()){
- return null;
- }
-
- return ResourcesPlugin.getWorkspace().getRoot().getProject(name);
- }
+ private static final String EMPTY_STRING = ""; //$NON-NLS-1$
+
+ // checkbox for selecting default event
+ protected Button chkDefaultEvent;
+
+ // the event tabs within the tab folder
+ protected TabItem[] eventTabItems;
+
+ // the table within the corresponding event tab
+ protected Table[] eventTable;
+
+ protected TabFolder tabFolder;
+ private int rawTabIndex = 0;
+ private int bpTabIndex = 0;
+ protected Text rawText;
+ protected Text bpText;
+ private Composite top;
+ private IProject previousProject = null;
+
+
+ /**
+ * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getImage()
+ */
+ @Override
+ public Image getImage() {
+ return PerfPlugin.getImageDescriptor("icons/event.gif").createImage(); //$NON-NLS-1$
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite top = new Composite(parent, SWT.NONE);
+ setControl(top);
+ top.setLayout(new GridLayout());
+ this.top = top;
+ }
+
+ private void createEventTabs(Composite top, ILaunchConfiguration config){
+ //Maybe not the best place to load the event list but we'll see.
+ Map<String,List<String>> events = PerfCore.getEventList(config);
+
+ // the special counters should be last
+ ArrayList<String> tmpTabNames = new ArrayList<>(events.keySet());
+ final List<String> SPECIAL_EVENTS = Arrays.asList(new String[] {
+ PerfPlugin.STRINGS_HWBREAKPOINTS,
+ PerfPlugin.STRINGS_RAWHWEvents });
+ tmpTabNames.removeAll(SPECIAL_EVENTS);
+ tmpTabNames.addAll(SPECIAL_EVENTS);
+
+ String [] tabNames = tmpTabNames.toArray(new String [0]);
+ eventTabItems = new TabItem[tabNames.length];
+ eventTable = new Table[tabNames.length];
+
+ tabFolder = new TabFolder(top, SWT.NONE);
+ tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ // Initialize each tab.
+ for (int i = 0; i < tabNames.length; i++) {
+
+ eventTabItems[i] = new TabItem(tabFolder, SWT.NONE);
+ eventTabItems[i].setText(tabNames[i]);
+
+ // These are for the two special tabs for custom events.
+ if (tabNames[i].equals(PerfPlugin.STRINGS_HWBREAKPOINTS)
+ || tabNames[i].equals(PerfPlugin.STRINGS_RAWHWEvents)) {
+
+ // Composite to contain it all
+ Composite c = new Composite(tabFolder, SWT.NONE);
+ c.setLayout(new GridLayout(2, false));
+
+ // A list to check off existing custom events (or show the new ones added)
+ Table table = new Table(c, SWT.CHECK | SWT.MULTI);
+ eventTable[i] = table;
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ table.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent se) {
+ updateLaunchConfigurationDialog();
+ }
+ });
+
+ // Right side to enter new events and delete old ones
+ Composite right = new Composite(c, SWT.NONE);
+ right.setLayout(new GridLayout(2,false));
+ right.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true));
+
+ // for adding
+ Label l = new Label(right, SWT.NONE);
+ l.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false,2,1));
+ Text t = new Text(right, SWT.SINGLE | SWT.BORDER);
+ t.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ if (tabNames[i].equals(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
+ bpTabIndex = i;
+ bpText = t;
+ l.setText("Please enter the hardware breakpoint in the form mem:<addr>[:access].");
+ }
+ if (tabNames[i].equals(PerfPlugin.STRINGS_RAWHWEvents)) {
+ rawTabIndex = i;
+ rawText = t;
+ l.setText("Please enter the raw register encoding in the form rNNN.");
+ }
+
+ Button b = new Button(right, SWT.PUSH);
+ b.setText("Add");
+ b.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false));
+ b.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent se) {
+ int i = tabFolder.getSelectionIndex();
+ if (rawTabIndex == i) {
+ new TableItem(eventTable[i], SWT.NONE).setText(rawText.getText());
+ } else if(bpTabIndex == i) {
+ new TableItem(eventTable[i], SWT.NONE).setText(bpText.getText());
+ }
+ updateLaunchConfigurationDialog();
+ }
+ });
+ l = new Label(right, SWT.NONE);
+ l.setForeground(new Color(right.getDisplay(), 100,100,100));
+ if (tabNames[i].equals(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
+ l.setText("For example, .........");
+ }
+ if (tabNames[i].equals(PerfPlugin.STRINGS_RAWHWEvents)) {
+ l.setText("For example, r1a8");
+ }
+ l.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false,2,1));
+
+ // spacer label.
+ l = new Label(right, SWT.NONE);
+ l.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,2,1));
+
+ // for removing
+ b = new Button(right, SWT.PUSH);
+ b.setText("Remove Selected Events");
+ b.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false,2,1));
+ b.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent se) {
+ eventTable[tabFolder.getSelectionIndex()].remove(eventTable[tabFolder.getSelectionIndex()].getSelectionIndices());
+ updateLaunchConfigurationDialog();
+ }
+ });
+ l = new Label(right, SWT.NONE);
+ l.setForeground(new Color(right.getDisplay(), 100,100,100));
+ l.setText("Note: Select by highlighting, not by checking.");
+ l.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false,2,1));
+
+ eventTabItems[i].setControl(c);
+
+ } else {
+ // This loads all the events 'perf list' gives into their respective tabs.
+ Table table = new Table(tabFolder, SWT.CHECK);
+ eventTable[i] = table;
+
+ List<String> eventList = events.get(tabNames[i]);
+ for (String event : eventList) {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(event);
+ }
+
+ table.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent se) {
+ updateLaunchConfigurationDialog();
+ }
+ });
+
+ eventTabItems[i].setControl(table);
+ }
+ }
+ }
+
+ private void refreshDefaultEnabled() {
+ boolean state = !chkDefaultEvent.getSelection();
+ for (Table tab : eventTable) {
+ tab.setEnabled(state);
+ }
+ }
+
+ @Override
+ public String getName() {
+ return "Perf Events";
+ }
+
+ @Override
+ public void initializeFrom(ILaunchConfiguration config) {
+ IProject project = getProject(config);
+
+ try {
+ if(previousProject == null || (previousProject != null && !previousProject.equals(project))){
+ Control[] children = top.getChildren();
+
+ for (Control control : children) {
+ control.dispose();
+ }
+
+ createVerticalSpacer(top, 1);
+
+ // Default event checkbox
+ chkDefaultEvent = new Button(top, SWT.CHECK);
+ chkDefaultEvent.setText("Default Event"); //$NON-NLS-1$
+ chkDefaultEvent.setLayoutData(new GridData());
+ chkDefaultEvent.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent se) {
+ refreshDefaultEnabled();
+ updateLaunchConfigurationDialog();
+ }
+ });
+
+ createEventTabs(top, config);
+ }
+
+ // restore whether things are default event/enabled or not.
+ chkDefaultEvent.setSelection(config.getAttribute(PerfPlugin.ATTR_DefaultEvent, PerfPlugin.ATTR_DefaultEvent_default));
+ refreshDefaultEnabled();
+
+ // restore custom hw breakpoints
+ List<?> hwbps = config.getAttribute(PerfPlugin.ATTR_HwBreakpointEvents, PerfPlugin.ATTR_HwBreakpointEvents_default);
+ if (hwbps != null) {
+ for (int i = 0; i < eventTable.length; i++) {
+ if (eventTabItems[i].getText().equals(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
+ eventTable[i].removeAll();
+ for (Object e : hwbps) {
+ TableItem x = new TableItem(eventTable[i], SWT.NONE);
+ x.setText((String)e);
+ }
+ }
+ }
+ }
+
+ // restore custom raw hw events
+ List<?> rawhe = config.getAttribute(PerfPlugin.ATTR_RawHwEvents, PerfPlugin.ATTR_RawHwEvents_default);
+ if (rawhe != null) {
+ for (int i = 0; i < eventTable.length; i++) {
+ if (eventTabItems[i].getText().equals(PerfPlugin.STRINGS_RAWHWEvents)) {
+ eventTable[i].removeAll();
+ for (Object e : rawhe) {
+ TableItem x = new TableItem(eventTable[i], SWT.NONE);
+ x.setText((String)e);
+ }
+ }
+ }
+ }
+
+ // tick all the boxes that are checked
+ List<?> selectedEvents = config.getAttribute(PerfPlugin.ATTR_SelectedEvents, PerfPlugin.ATTR_SelectedEvents_default);
+
+ if(selectedEvents != null){
+ for (int i = 0; i < eventTable.length; i++) {
+ for(TableItem event : eventTable[i].getItems()) {
+ if(selectedEvents.contains(event.getText())){
+ event.setChecked(true);
+ } else {
+ event.setChecked(false);
+ }
+ }
+ }
+ }
+ previousProject = project;
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void performApply(ILaunchConfigurationWorkingCopy wconfig) {
+ //Store default event checkbox
+ wconfig.setAttribute(PerfPlugin.ATTR_DefaultEvent, chkDefaultEvent.getSelection());
+
+ //Store which events are selected
+ ArrayList<String> selectedEvents = new ArrayList<>();
+ for (int i = 0; i < eventTable.length; i++) {
+ for(TableItem x : eventTable[i].getItems()) {
+ if (x.getChecked())
+ selectedEvents.add(x.getText());
+ }
+ }
+
+ if (selectedEvents.size() == 0) {
+ wconfig.setAttribute(PerfPlugin.ATTR_SelectedEvents, (String) null);
+ } else {
+ wconfig.setAttribute(PerfPlugin.ATTR_SelectedEvents, selectedEvents);
+ }
+
+ //Flag for multiple events
+ if ((chkDefaultEvent.getSelection() == false) && (selectedEvents.size() >= 1)) {
+ wconfig.setAttribute(PerfPlugin.ATTR_MultipleEvents, true);
+ } else {
+ wconfig.setAttribute(PerfPlugin.ATTR_MultipleEvents, false);
+ }
+ if (selectedEvents.size() <= 0) {
+ //If they unticked the default box but didn't select any events revert to default.
+ wconfig.setAttribute(PerfPlugin.ATTR_DefaultEvent, true);
+ }
+
+ //Store any custom HW BreakPoints they added (even if unchecked).
+ ArrayList<String> hwbps = new ArrayList<>();
+ for (int i = 0; i < eventTable.length; i++) {
+ if (eventTabItems[i].getText().equals(PerfPlugin.STRINGS_HWBREAKPOINTS)) {
+ for(TableItem x : eventTable[i].getItems()) {
+ hwbps.add(x.getText());
+ }
+ }
+ }
+ if (hwbps.size() == 0) {
+ hwbps = null; // to match with default value.
+ }
+ wconfig.setAttribute(PerfPlugin.ATTR_HwBreakpointEvents, hwbps);
+
+ //Store any custom Raw HW Events they added (even if unchecked).
+ ArrayList<String> rawhwe = new ArrayList<>();
+ for (int i = 0; i < eventTable.length; i++) {
+ if (eventTabItems[i].getText().equals(PerfPlugin.STRINGS_RAWHWEvents)) {
+ for(TableItem x : eventTable[i].getItems()) {
+ rawhwe.add(x.getText());
+ }
+ }
+ }
+ if (rawhwe.size() == 0) {
+ rawhwe = null; //to match with default value.
+ }
+ wconfig.setAttribute(PerfPlugin.ATTR_RawHwEvents, rawhwe);
+ }
+
+ @Override
+ public void setDefaults(ILaunchConfigurationWorkingCopy wconfig) {
+ wconfig.setAttribute(PerfPlugin.ATTR_DefaultEvent, PerfPlugin.ATTR_DefaultEvent_default);
+ wconfig.setAttribute(PerfPlugin.ATTR_MultipleEvents, PerfPlugin.ATTR_MultipleEvents_default);
+ wconfig.setAttribute(PerfPlugin.ATTR_SelectedEvents, PerfPlugin.ATTR_SelectedEvents_default);
+ wconfig.setAttribute(PerfPlugin.ATTR_HwBreakpointEvents, PerfPlugin.ATTR_HwBreakpointEvents_default);
+ wconfig.setAttribute(PerfPlugin.ATTR_RawHwEvents, PerfPlugin.ATTR_RawHwEvents_default);
+ }
+
+ private IProject getProject(ILaunchConfiguration config){
+ String name = null;
+ try {
+ name = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, EMPTY_STRING);
+ } catch (CoreException e) {
+ return null;
+ }
+ if (name.isEmpty()){
+ return null;
+ }
+
+ return ResourcesPlugin.getWorkspace().getRoot().getProject(name);
+ }
}

Back to the top