Skip to content

Commit

Permalink
Simplify classes in de.cau.cs.kieler.klighd.ui.printing.dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
HannesWell authored and sailingKieler committed Jan 9, 2023
1 parent 7be8d36 commit cb363e3
Show file tree
Hide file tree
Showing 9 changed files with 102 additions and 181 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@
package de.cau.cs.kieler.klighd.ui.printing.dialog;

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.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
Expand Down Expand Up @@ -80,29 +79,22 @@ public static Control createContents(final Composite parent, final KlighdPrintDi

printPreview.setText(KlighdUIPrintingMessages.PrintDialog_Button_PrintPreview + arrows);
printPreview.setEnabled(previewEnabled);
printPreview.addSelectionListener(new SelectionAdapter() {
printPreview.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
final PrintPreviewTray tray = printDialog.getTray();

/**
* {@inheritDoc}
*/
@Override
public void widgetSelected(final SelectionEvent e) {
final PrintPreviewTray tray = printDialog.getTray();
if (tray != null) {
printDialog.closeTray();
printPreview.setText(
KlighdUIPrintingMessages.PrintDialog_Button_PrintPreview + OPEN_ARROWS);
DiagramPrintOptions.setInitiallyShowPreview(false);

if (tray != null) {
printDialog.closeTray();
printPreview.setText(
KlighdUIPrintingMessages.PrintDialog_Button_PrintPreview + OPEN_ARROWS);
DiagramPrintOptions.setInitiallyShowPreview(false);

} else {
printDialog.openPreview();
printPreview.setText(
KlighdUIPrintingMessages.PrintDialog_Button_PrintPreview + CLOSE_ARROWS);
DiagramPrintOptions.setInitiallyShowPreview(true);
}
} else {
printDialog.openPreview();
printPreview.setText(
KlighdUIPrintingMessages.PrintDialog_Button_PrintPreview + CLOSE_ARROWS);
DiagramPrintOptions.setInitiallyShowPreview(true);
}
});
}));

return printPreview;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Listener;

import de.cau.cs.kieler.klighd.ui.printing.KlighdUIPrintingMessages;
import de.cau.cs.kieler.klighd.ui.printing.PrintOptions;
Expand Down Expand Up @@ -82,24 +80,21 @@ public static Group createContents(final Composite parent, final DataBindingCont
final Realm realm = bindings.getValidationRealm();

final IObservableValue<Object> centerHorValue =
BeanProperties.value(options.getClass().asSubclass(PrintOptions.class), PrintOptions.PROPERTY_CENTER_HORIZONTALLY)
BeanProperties.value(PrintOptions.class, PrintOptions.PROPERTY_CENTER_HORIZONTALLY)
.observe(realm, options);
ISWTObservableValue<Object> horObservation = WidgetProperties.selection().observe(centerHorizontally);
bindings.bindValue(horObservation, centerHorValue);

final IObservableValue<Object> centerVerValue = BeanProperties.value(options.getClass().asSubclass(PrintOptions.class), PrintOptions.PROPERTY_CENTER_VERTICALLY)
final IObservableValue<Object> centerVerValue = BeanProperties.value(PrintOptions.class, PrintOptions.PROPERTY_CENTER_VERTICALLY)
.observe(realm, options);
ISWTObservableValue<Object> vertObservation = WidgetProperties.selection().observe(centerVertically);
bindings.bindValue(vertObservation, centerVerValue);

result.addListener(SWT.Dispose, new Listener() {

public void handleEvent(final Event event) {
// while the SWTObservableValues are disposed while disposing the corresponding widgets
// the Beans-based ones should be disposed explicitly
centerHorValue.dispose();
centerVerValue.dispose();
}
result.addListener(SWT.Dispose, event -> {
// while the SWTObservableValues are disposed while disposing the corresponding widgets
// the Beans-based ones should be disposed explicitly
centerHorValue.dispose();
centerVerValue.dispose();
});

return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@
import org.eclipse.core.databinding.beans.typed.BeanProperties;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.core.databinding.observable.value.IValueChangeListener;
import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
import org.eclipse.jface.databinding.swt.ISWTObservableValue;
import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.jface.resource.ImageDescriptor;
Expand All @@ -41,10 +39,8 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Widget;

Expand Down Expand Up @@ -106,7 +102,7 @@ public static Group createContents(final Composite parent, final DataBindingCont
final Spinner copiesSpinner = DialogUtil.spinner(result, 1, Integer.MAX_VALUE);

final IObservableValue<Object> copiesValue =
BeanProperties.value(options.getClass().asSubclass(PrintOptions.class), PrintOptions.PROPERTY_COPIES).observe(realm, options);
BeanProperties.value(PrintOptions.class, PrintOptions.PROPERTY_COPIES).observe(realm, options);
ISWTObservableValue<Object> copiesObservation = WidgetProperties.selection().observe(copiesSpinner);
bindings.bindValue(copiesObservation, copiesValue);

Expand All @@ -123,34 +119,27 @@ public static Group createContents(final Composite parent, final DataBindingCont
collateImageLabel.setImage(collateCheck.getSelection() ? collateOnImage : collateOffImage);

final IObservableValue<Object> collateValue =
BeanProperties.value(options.getClass().asSubclass(PrintOptions.class), PrintOptions.PROPERTY_COLLATE).observe(realm, options);
BeanProperties.value(PrintOptions.class, PrintOptions.PROPERTY_COLLATE).observe(realm, options);
ISWTObservableValue<Object> collateObservation = WidgetProperties.selection().observe((Widget) collateCheck);
bindings.bindValue(collateObservation, collateValue);

collateValue.addValueChangeListener(new IValueChangeListener<Object>() {

public void handleValueChange(final ValueChangeEvent<? extends Object> event) {

// set image according to collate state
if (((Boolean) event.getObservableValue().getValue()).booleanValue()) {
collateImageLabel.setImage(collateOnImage);
} else {
collateImageLabel.setImage(collateOffImage);
}
collateValue.addValueChangeListener(event -> {
// set image according to collate state
if (((Boolean) event.getObservableValue().getValue()).booleanValue()) {
collateImageLabel.setImage(collateOnImage);
} else {
collateImageLabel.setImage(collateOffImage);
}
});

result.addListener(SWT.Dispose, new Listener() {
result.addListener(SWT.Dispose, event -> {
collateOnImage.dispose();
collateOffImage.dispose();

public void handleEvent(final Event event) {
collateOnImage.dispose();
collateOffImage.dispose();

// while the SWTObservableValues are disposed while disposing the corresponding widgets
// the Beans-based ones should be disposed explicitly
copiesValue.dispose();
collateValue.dispose();
}
// while the SWTObservableValues are disposed while disposing the corresponding widgets
// the Beans-based ones should be disposed explicitly
copiesValue.dispose();
collateValue.dispose();
});

if (Klighd.IS_MACOSX) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,11 +204,7 @@ protected Control createDialogArea(final Composite parent) {
// this asyncExec is employed in order to let the main dialog get build up properly;
// for some reason its layout gets heavily corrupted if the preview is opened directly
// some good soul might investigate this some day...
parent.getDisplay().asyncExec(new Runnable() {
public void run() {
openPreview();
}
});
parent.getDisplay().asyncExec(this::openPreview);
}

return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public static Group createContents(final Composite parent, final DataBindingCont
ISWTObservableValue<Boolean> observeLandscape = WidgetProperties.selection().observe(landscapeRadio);
orientationGroupValue.addOption(PrinterData.LANDSCAPE, observeLandscape);

IObservableValue<Object> observeOrientation = BeanProperties.value(options.getClass().asSubclass(PrintOptions.class), PrintOptions.PROPERTY_ORIENTATION)
IObservableValue<Object> observeOrientation = BeanProperties.value(PrintOptions.class, PrintOptions.PROPERTY_ORIENTATION)
.observe(realm, options);
bindings.bindValue(orientationGroupValue, observeOrientation);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.core.databinding.observable.value.IValueChangeListener;
import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
import org.eclipse.jface.databinding.swt.ISWTObservableValue;
import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.jface.dialogs.DialogTray;
Expand All @@ -37,9 +36,7 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;

import de.cau.cs.kieler.klighd.DiagramExportConfig;
import de.cau.cs.kieler.klighd.ui.printing.DiagramPrintOptions;
Expand Down Expand Up @@ -104,65 +101,57 @@ public Control createContents(final Composite parent) {

updateComposite();

final IValueChangeListener<Object> listener = new IValueChangeListener<Object>() {

public void handleValueChange(final ValueChangeEvent<? extends Object> event) {
updateComposite();
}
};
final IValueChangeListener<Object> listener = event -> updateComposite();

ISWTObservableValue<Point> observedSize = WidgetProperties.size().observe(body);
final IObservableValue<Point> delayedResize = Observables.observeDelayedValue(OBSERVABLE_DELAY, observedSize);
delayedResize.addValueChangeListener(listener);

IObservableValue<Object> observedData =
BeanProperties.value(options.getClass().asSubclass(DiagramPrintOptions.class), PrintOptions.PROPERTY_PRINTER_DATA)
BeanProperties.value(DiagramPrintOptions.class, PrintOptions.PROPERTY_PRINTER_DATA)
.observe(realm, options);
final IObservableValue<Object> delayedPrinterData = Observables.observeDelayedValue(OBSERVABLE_DELAY, observedData);
delayedPrinterData.addValueChangeListener(listener);

IObservableValue<Object> observedScale = BeanProperties.value(options.getClass().asSubclass(DiagramPrintOptions.class), PrintOptions.PROPERTY_SCALE_FACTOR)
IObservableValue<Object> observedScale = BeanProperties.value(DiagramPrintOptions.class, PrintOptions.PROPERTY_SCALE_FACTOR)
.observe(realm, options);
final IObservableValue<Object> delayedScale = Observables.observeDelayedValue(OBSERVABLE_DELAY,observedScale);
delayedScale.addValueChangeListener(listener);

IObservableValue<Object> observedPagesWide = BeanProperties.value(options.getClass().asSubclass(DiagramPrintOptions.class), PrintOptions.PROPERTY_PAGES_WIDE)
IObservableValue<Object> observedPagesWide = BeanProperties.value(DiagramPrintOptions.class, PrintOptions.PROPERTY_PAGES_WIDE)
.observe(realm, options);
final IObservableValue<Object> delayedPagesWide = Observables.observeDelayedValue(OBSERVABLE_DELAY,observedPagesWide);
delayedPagesWide.addValueChangeListener(listener);

IObservableValue<Object> observedScaleTall = BeanProperties.value(options.getClass().asSubclass(DiagramPrintOptions.class), PrintOptions.PROPERTY_PAGES_TALL)
IObservableValue<Object> observedScaleTall = BeanProperties.value(DiagramPrintOptions.class, PrintOptions.PROPERTY_PAGES_TALL)
.observe(realm, options);
final IObservableValue<Object> delayedPagesTall = Observables.observeDelayedValue(OBSERVABLE_DELAY, observedScaleTall);
delayedPagesTall.addValueChangeListener(listener);

IObservableValue<Object> observedHorCenter = BeanProperties.value(options.getClass().asSubclass(DiagramPrintOptions.class), PrintOptions.PROPERTY_CENTER_HORIZONTALLY)
IObservableValue<Object> observedHorCenter = BeanProperties.value(DiagramPrintOptions.class, PrintOptions.PROPERTY_CENTER_HORIZONTALLY)
.observe(realm, options);
final IObservableValue<Object> delayedHorCentered = Observables.observeDelayedValue(OBSERVABLE_DELAY, observedHorCenter);
delayedHorCentered.addValueChangeListener(listener);

IObservableValue<Object> observedVertCenter = BeanProperties.value(options.getClass().asSubclass(DiagramPrintOptions.class), PrintOptions.PROPERTY_CENTER_VERTICALLY)
IObservableValue<Object> observedVertCenter = BeanProperties.value(DiagramPrintOptions.class, PrintOptions.PROPERTY_CENTER_VERTICALLY)
.observe(realm, options);
final IObservableValue<Object> delayedVerCentered = Observables.observeDelayedValue(OBSERVABLE_DELAY, observedVertCenter);
delayedVerCentered.addValueChangeListener(listener);

IObservableValue<Object> observedOrientation = BeanProperties.value(options.getClass().asSubclass(DiagramPrintOptions.class), PrintOptions.PROPERTY_ORIENTATION)
IObservableValue<Object> observedOrientation = BeanProperties.value(DiagramPrintOptions.class, PrintOptions.PROPERTY_ORIENTATION)
.observe(realm, options);
final IObservableValue<Object> delayedOrientation = Observables.observeDelayedValue(OBSERVABLE_DELAY, observedOrientation);
delayedOrientation.addValueChangeListener(listener);

body.addListener(SWT.Dispose, new Listener() {

public void handleEvent(final Event event) {
delayedResize.dispose();
delayedPrinterData.dispose();
delayedScale.dispose();
delayedPagesWide.dispose();
delayedPagesTall.dispose();
delayedHorCentered.dispose();
delayedVerCentered.dispose();
delayedOrientation.dispose();
}
body.addListener(SWT.Dispose, event -> {
delayedResize.dispose();
delayedPrinterData.dispose();
delayedScale.dispose();
delayedPagesWide.dispose();
delayedPagesTall.dispose();
delayedHorCentered.dispose();
delayedVerCentered.dispose();
delayedOrientation.dispose();
});

return body;
Expand Down Expand Up @@ -253,12 +242,7 @@ public void updateComposite() {

final Label l = new Label(composite, SWT.NULL);
l.setImage(pageImg);
l.addListener(SWT.Dispose, new Listener() {

public void handleEvent(final Event event) {
pageImg.dispose();
}
});
l.addListener(SWT.Dispose, event -> pageImg.dispose());
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,13 @@
import org.eclipse.jface.databinding.swt.ISWTObservableValue;
import org.eclipse.jface.databinding.swt.WidgetProperties;
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.printing.PrintDialog;
import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;

import de.cau.cs.kieler.klighd.ui.printing.KlighdUIPrintingMessages;
import de.cau.cs.kieler.klighd.ui.printing.PrintOptions;
Expand Down Expand Up @@ -105,7 +102,7 @@ public static Group createContents(final Composite parent, final DataBindingCont
protected String calculate() {
final PrinterData data =
(PrinterData) BeanProperties
.value( options.getClass().asSubclass(PrintOptions.class), PrintOptions.PROPERTY_PRINTER_DATA)
.value( PrintOptions.class, PrintOptions.PROPERTY_PRINTER_DATA)
.observe(realm, options)
.getValue();
if (data.printToFile) {
Expand All @@ -123,31 +120,22 @@ protected String calculate() {
DialogUtil.button(result, KlighdUIPrintingMessages.PrintDialog_PrinterSettings);
propertiesButton.setEnabled(true);

propertiesButton.addSelectionListener(new SelectionAdapter() {
propertiesButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
// Open the system's native print dialog to gather printer specific settings.
// If no valid setting are returned (e.g. the user cancels the dialog),
// nothing is changed.
final PrintDialog systemPrintDialog = printDialog.getNativePrintDialog();
systemPrintDialog.setPrinterData(options.getPrinterData());

@Override
public void widgetSelected(final SelectionEvent e) {
// Open the system's native print dialog to gather printer specific settings.
// If no valid setting are returned (e.g. the user cancels the dialog),
// nothing is changed.
final PrintDialog systemPrintDialog = printDialog.getNativePrintDialog();
systemPrintDialog.setPrinterData(options.getPrinterData());

final PrinterData data = systemPrintDialog.open();
if (data != null) {
options.setPrinterData(data);
}
final PrinterData data = systemPrintDialog.open();
if (data != null) {
options.setPrinterData(data);
}
});
}));

result.addListener(SWT.Dispose, new Listener() {

public void handleEvent(final Event event) {
// while the SWTObservableValues are disposed while disposing the corresponding widgets
// the ComputedValue should be disposed explicitly
computedValue.dispose();
}
});
// while the SWTObservableValues are disposed while disposing the corresponding widgets
// the ComputedValue should be disposed explicitly
result.addListener(SWT.Dispose, event -> computedValue.dispose());

return result;
}
Expand Down
Loading

0 comments on commit cb363e3

Please sign in to comment.