Skip to content
This repository has been archived by the owner on Mar 27, 2024. It is now read-only.

Commit

Permalink
Hooking up the listeners for the widgets. Synchronized the three
Browse files Browse the repository at this point in the history
separate widgets.

Updated the tester to ensure the time Scale widget's min, max, and
incremental values match the timesteps.

Signed-off-by: Jordan Deyton <jordan.deyton@gmail.com>
  • Loading branch information
jdeyton committed Jun 21, 2015
1 parent 7fecdfa commit 52eef4e
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@
*/
public class TimeSliderComposite extends Composite {

// TODO Hook up the Text widget.
// TODO Documentation.

private final Scale scale;
private final Text spinnerText;
private final Button spinnerNext;
Expand All @@ -46,19 +49,24 @@ public class TimeSliderComposite extends Composite {

private static final String NO_TIMES = "N/A";

private final List<SelectionListener> listeners;

public TimeSliderComposite(Composite parent, int style) {
super(parent, style);

timestep = -1;
times = new ArrayList<Double>();

listeners = new ArrayList<SelectionListener>();

setLayout(new GridLayout(2, false));

scale = new Scale(this, SWT.HORIZONTAL);
scale.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
scale.setBackground(getBackground());
scale.setMinimum(0);
scale.setIncrement(1);
scale.setMaximum(0);

Composite spinnerComposite = new Composite(this, SWT.NONE);
spinnerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false,
Expand All @@ -70,12 +78,6 @@ public TimeSliderComposite(Composite parent, int style) {
spinnerText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,
1, 2));

// spinner = new Spinner(spinnerComposite, SWT.NONE); // FIXME
// spinner.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
// spinner.setBackground(getBackground());
// spinner.setMinimum(0);
// spinner.setIncrement(1);

spinnerNext = new Button(spinnerComposite, SWT.ARROW | SWT.UP);
spinnerNext
.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
Expand All @@ -90,68 +92,52 @@ public TimeSliderComposite(Composite parent, int style) {
@Override
public void widgetSelected(SelectionEvent e) {
timestep = scale.getSelection();
spinnerText.setText(times.get(timestep).toString());

spinnerNext.setEnabled(timestep != times.size() - 1);
spinnerPrev.setEnabled(timestep != 0);
syncWidgets();
notifyListeners(e);
}
});
spinnerNext.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
timestep++;
scale.setSelection(timestep);
spinnerText.setText(times.get(timestep).toString());
if (timestep == times.size() - 1) {
spinnerNext.setEnabled(false);
}
spinnerPrev.setEnabled(true);
syncWidgets();
notifyListeners(e);
}
});
spinnerPrev.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
timestep--;
scale.setSelection(timestep);
spinnerText.setText(times.get(timestep).toString());
if (timestep == 0) {
spinnerPrev.setEnabled(false);
}
spinnerNext.setEnabled(true);
syncWidgets();
notifyListeners(e);
}
});
spinnerText.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// TODO
// TODO Determine the timestep.
syncWidgets();
notifyListeners(e);
}
});

refreshWidgets();
syncWidgets();

return;
}

private void refreshWidgets() {
private void syncWidgets() {

int size = times.size();
boolean widgetsEnabled = size > 1;

if (size > 0) {
scale.setSelection(0);
scale.setMaximum(size - 1);
spinnerText.setText(times.get(0).toString());
} else {
scale.setSelection(0);
scale.setMaximum(0);
spinnerText.setText(NO_TIMES);
}
scale.setEnabled(widgetsEnabled);
spinnerText.setEnabled(widgetsEnabled);
spinnerNext.setEnabled(widgetsEnabled & timestep < size - 1);
spinnerPrev.setEnabled(widgetsEnabled & timestep > 0);

// Enable/disable the widgets.
boolean enabled = size > 1;
scale.setEnabled(enabled);
spinnerNext.setEnabled(enabled);
spinnerPrev.setEnabled(false);
spinnerText.setEnabled(enabled);
scale.setSelection(widgetsEnabled ? timestep : 0);
spinnerText.setText(size > 0 ? Double.toString(getTime()) : NO_TIMES);

return;
}
Expand Down Expand Up @@ -185,9 +171,11 @@ public void setTimes(List<Double> times) {
this.times.addAll(orderedTimes);

// Reset the timestep.
timestep = times.size() > 0 ? 0 : -1;
int size = this.times.size();
timestep = size > 0 ? 0 : -1;
scale.setMaximum(size - 1);

refreshWidgets();
syncWidgets();

return;
}
Expand Down Expand Up @@ -250,7 +238,7 @@ public void addSelectionListener(SelectionListener listener) {
throw new SWTException(SWT.ERROR_NULL_ARGUMENT);
}

// TODO
listeners.add(listener);
}

/**
Expand All @@ -276,7 +264,14 @@ public void removeSelectionListener(SelectionListener listener) {
if (listener == null) {
throw new SWTException(SWT.ERROR_NULL_ARGUMENT);
}
listeners.remove(listener);
}

private void notifyListeners(SelectionEvent e) {
e.data = getTime();
for (SelectionListener listener : listeners) {
listener.widgetSelected(e);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ public void checkSetTimeSteps() {

// Get the time scale widget.
SWTBotScale widget = getTimeScale();
SWTBotScale scale = getTimeScale();

// Check that the list of times sent to the widget was not modified.
assertEquals("TimeSliderComposite failure: The collection passed into "
Expand All @@ -230,6 +231,12 @@ public void run() {
assertEquals(0, timestep.get());
assertEquals(orderedTimes.first(), time.get(), epsilon);

// Check the scale's min, max, and increment. Each timestep should have
// a tick on the scale.
assertEquals(0, scale.getMinimum());
assertEquals(orderedTimes.size() - 1, scale.getMaximum());
assertEquals(1, scale.getIncrement());

// Set the time widget to the last time.
widget.setValue(orderedTimes.size() - 1);

Expand Down

0 comments on commit 52eef4e

Please sign in to comment.