/******************************************************************************* * Copyright (c) 2006 IBM Corporation. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse *******************************************************************************/ package org.eclipse.linuxtools.internal.systemtap.graphing.ui.wizards.filter; import org.eclipse.linuxtools.internal.systemtap.graphing.ui.Localization; import org.eclipse.linuxtools.systemtap.graphing.core.filters.UniqueFilter; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.forms.widgets.ColumnLayout; public class UniqueFilterWizardPage extends FilterWizardPage { public UniqueFilterWizardPage() { super("selectFilterOptions"); //$NON-NLS-1$ setTitle(Localization.getString("UniqueFilterWizardPage.CreateUniqueFilter")); //$NON-NLS-1$ aggregateID = ""; //$NON-NLS-1$ } @Override public void createControl(Composite parent) { super.createControl(parent); Composite comp = new Composite(parent, SWT.NULL); comp.setLayout(new FormLayout()); FormData data1 = new FormData(); data1.left = new FormAttachment(0, 0); data1.top = new FormAttachment(0, 0); data1.right = new FormAttachment(40, 0); data1.bottom = new FormAttachment(100, 0); Composite cmpFilterOpts = new Composite(comp, SWT.NONE); cmpFilterOpts.setLayoutData(data1); ColumnLayout colLayout = new ColumnLayout(); colLayout.maxNumColumns = 1; cmpFilterOpts.setLayout(colLayout); //Column Label lblColumn = new Label(cmpFilterOpts, SWT.NONE); lblColumn.setText(Localization.getString("UniqueFilterWizardPage.Column")); //$NON-NLS-1$ cboColumn = new Combo(cmpFilterOpts, SWT.DROP_DOWN | SWT.READ_ONLY); cboColumn.addSelectionListener(selectionListener); for (String series : wizard.series) { cboColumn.add(series); } new Label(cmpFilterOpts, SWT.NONE); //Spacer //String to compare to Label lblAggregate = new Label(cmpFilterOpts, SWT.NONE); lblAggregate.setText(Localization.getString("UniqueFilterWizardPage.Aggregate")); //$NON-NLS-1$ btnAggregates = new Button[AggregateFactory.AGGREGATES.length]; for(int i=0; i<btnAggregates.length; i++) { btnAggregates[i] = new Button(cmpFilterOpts, SWT.RADIO); btnAggregates[i].setText(AggregateFactory.getAggregateName(AggregateFactory.AGGREGATES[i])); btnAggregates[i].addSelectionListener(btnSelectionListener); btnAggregates[i].setData(AggregateFactory.AGGREGATES[i]); } FormData data2 = new FormData(); data2.left = new FormAttachment(cmpFilterOpts); data2.top = new FormAttachment(0, 0); data2.right = new FormAttachment(100, 0); data2.bottom = new FormAttachment(100, 0); lblDesc = new Label(comp, SWT.WRAP); lblDesc.setLayoutData(data2); cboColumn.select(0); createFilter(); setControl(comp); } @Override public boolean canFlipToNextPage() { return false; } @Override protected void createFilter() { int selected = cboColumn.getSelectionIndex(); if(selected >=0 && selected < cboColumn.getItemCount()) { if(null != aggregateID && !aggregateID.isEmpty()) { filter = new UniqueFilter( selected, AggregateFactory.createAggregate(aggregateID)); } } } @Override public void dispose() { if(null != cboColumn) { cboColumn.removeSelectionListener(selectionListener); cboColumn.dispose(); cboColumn = null; } if(null != lblDesc) { lblDesc.dispose(); } lblDesc = null; if(null != btnAggregates) { for(int i=0; i<btnAggregates.length; i++) { btnAggregates[i].removeSelectionListener(btnSelectionListener); btnAggregates[i].dispose(); btnAggregates[i] = null; } btnAggregates = null; } aggregateID = null; super.dispose(); } private final SelectionListener btnSelectionListener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if(e.widget instanceof Button) { Button target = (Button)e.widget; for (Button button : btnAggregates) { if(target == button) { lblDesc.setText(AggregateFactory.getAggregateName(button.getData().toString()) + "\n\n" + //$NON-NLS-1$ AggregateFactory.getAggregateDescription(button.getData().toString())); aggregateID = button.getData().toString(); createFilter(); wizard.getContainer().updateButtons(); } } } } }; private Combo cboColumn; private Button[] btnAggregates; private Label lblDesc; private String aggregateID; }