package rocks.inspectit.ui.rcp.ci.form.part;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
import rocks.inspectit.shared.cs.ci.assignment.AbstractClassSensorAssignment;
import rocks.inspectit.shared.cs.ci.assignment.impl.ChartingMethodSensorAssignment;
import rocks.inspectit.ui.rcp.ci.listener.IDetailsModifiedListener;
import rocks.inspectit.ui.rcp.validation.AbstractValidationManager;
/**
* Details page for the {@link ChartingMethodSensorAssignment}.
*
* @author Ivan Senic
*
*/
public class ChartingMethodSensorAssignmentDetailsPage extends MethodSensorAssignmentDetailsPage {
/**
* Element being displayed.
*/
private ChartingMethodSensorAssignment assignment;
/**
* Selection for if charting should be active.
*/
private Button chartingButton;
/**
* Composite for the sensor options.
*/
private Composite sensorOptionsComposite;
/**
* Constructor.
*
* @param detailsModifiedListener
* listener to inform the master block on changes to the input
* @param validationManager
* validation manager of the master part
* @param canEdit
* If the data can be edited.
*/
public ChartingMethodSensorAssignmentDetailsPage(IDetailsModifiedListener<AbstractClassSensorAssignment<?>> detailsModifiedListener,
AbstractValidationManager<AbstractClassSensorAssignment<?>> validationManager, boolean canEdit) {
super(detailsModifiedListener, validationManager, canEdit);
}
/**
* {@inheritDoc}
*/
@Override
public void createContents(Composite parent) {
this.createContents(parent, true);
}
/**
* {@inheritDoc}
*/
@Override
protected void createContents(Composite parent, boolean finish) {
TableWrapLayout parentLayout = new TableWrapLayout();
parentLayout.topMargin = 5;
parentLayout.leftMargin = 5;
parentLayout.rightMargin = 2;
parentLayout.bottomMargin = 2;
parentLayout.numColumns = 2;
parentLayout.makeColumnsEqualWidth = true;
parent.setLayout(parentLayout);
FormToolkit toolkit = managedForm.getToolkit();
// abstract method definition
super.createContents(parent, false);
// special sensor definitions
// section
Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR | ExpandableComposite.EXPANDED);
section.setText("Sensor specific options");
section.marginWidth = 10;
section.marginHeight = 5;
TableWrapData td = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP);
td.grabHorizontal = true;
section.setLayoutData(td);
// main composite
sensorOptionsComposite = toolkit.createComposite(section);
GridLayout layout = new GridLayout(7, false);
layout.marginHeight = 5;
layout.marginWidth = 5;
sensorOptionsComposite.setLayout(layout);
section.setClient(sensorOptionsComposite);
// charting
toolkit.createLabel(sensorOptionsComposite, "Charting:");
chartingButton = toolkit.createButton(sensorOptionsComposite, "Yes", SWT.CHECK);
chartingButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 5, 1));
createInfoLabel(sensorOptionsComposite, toolkit,
"With the charting option it is possible to define what data should be considered as the long-term data available for charting in inspectIT User interface. This data is additionally saved to the database, thus even when the CMR is shutdown or buffer is cleared the data will be available via charts.");
// listener
chartingButton.addListener(SWT.Selection, getMarkDirtyListener());
if (finish) {
// create help to correctly layout
TableWrapData twd = new TableWrapData();
twd.grabHorizontal = true;
toolkit.createLabel(parent, "", SWT.NONE).setLayoutData(twd);
}
if (!isCanEdit()) {
setEnabled(sensorOptionsComposite, false);
}
}
/**
* Updates the display state.
*/
@Override
protected void updateFromInput() {
super.updateFromInput();
chartingButton.setSelection(false);
if (null != assignment) {
chartingButton.setSelection(assignment.isCharting());
}
}
/**
* {@inheritDoc}
*/
@Override
protected void commitToInput() {
super.commitToInput();
assignment.setCharting(chartingButton.getSelection());
}
/**
* {@inheritDoc}
*/
@Override
protected ChartingMethodSensorAssignment getInput() {
return assignment;
}
/**
* {@inheritDoc}
*/
@Override
protected void setInput(ISelection selection) {
super.setInput(selection);
if (!selection.isEmpty()) {
assignment = (ChartingMethodSensorAssignment) ((IStructuredSelection) selection).getFirstElement();
} else {
assignment = null; // NOPMD
}
}
/**
* Gets {@link #sensorOptionsComposite}.
*
* @return {@link #sensorOptionsComposite}
*/
protected Composite getSensorOptionsComposite() {
return sensorOptionsComposite;
}
}