### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.runtime.diagram.ui.printing Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/l10n/DiagramUIPrintingMessages.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing/src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/l10n/DiagramUIPrintingMessages.java,v retrieving revision 1.3 diff -u -r1.3 DiagramUIPrintingMessages.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/l10n/DiagramUIPrintingMessages.java 28 Mar 2008 17:33:27 -0000 1.3 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/l10n/DiagramUIPrintingMessages.java 2 Apr 2008 18:46:33 -0000 @@ -81,7 +81,10 @@ public static String JPSOptionsDialog_SidesTumble; public static String JPSOptionsDialog_SidesDuplex; public static String JPSOptionsDialog_AdvancedOptions; - + public static String JPSOptionsDialog_DiagramPrintRange; + public static String JPSOptionsDialog_DiagramPrintCurrent; + public static String JPSOptionsDialog_DiagramPrintSelected; + static { NLS.initializeMessages(BUNDLE_NAME, DiagramUIPrintingMessages.class); } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/l10n/DiagramUIPrintingMessages.properties =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing/src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/l10n/DiagramUIPrintingMessages.properties,v retrieving revision 1.3 diff -u -r1.3 DiagramUIPrintingMessages.properties --- src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/l10n/DiagramUIPrintingMessages.properties 28 Mar 2008 17:33:27 -0000 1.3 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/l10n/DiagramUIPrintingMessages.properties 2 Apr 2008 18:46:33 -0000 @@ -72,6 +72,9 @@ JPSOptionsDialog_SidesTumble=&Tumble JPSOptionsDialog_SidesDuplex=&Duplex JPSOptionsDialog_AdvancedOptions=Advanced Options +JPSOptionsDialog_DiagramPrintRange=Diagram Print Range +JPSOptionsDialog_DiagramPrintCurrent=&Current diagram +JPSOptionsDialog_DiagramPrintSelected=&Selected diagrams: # DiagramPrinterUtil related resource strings #P org.eclipse.gmf.runtime.diagram.ui.printing.render Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/util/PrintHelper.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/util/PrintHelper.java,v retrieving revision 1.2 diff -u -r1.2 PrintHelper.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/util/PrintHelper.java 28 Mar 2008 17:33:29 -0000 1.2 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/util/PrintHelper.java 2 Apr 2008 18:46:34 -0000 @@ -9,8 +9,6 @@ * IBM Corporation - initial API and implementation ****************************************************************************/ - - package org.eclipse.gmf.runtime.diagram.ui.printing.render.util; import java.util.List; @@ -26,10 +24,13 @@ * Default implementation of a print-helper. * * @author Christian W. Damus (cdamus) + * @author James Bruck (jbruck) */ public class PrintHelper implements IPrintHelper { private final PrintOptions options = new PrintOptions(); + List diagramList; + public PrintHelper() { initPrintOptions(); } @@ -49,21 +50,25 @@ options.setCopies(1); options.setCollate(false); - + options.setQualityHigh(true); options.setSideOneSided(true); options.setChromaticityColor(true); - + + options.setDiagramCurrent(true); } /* * (non-Javadoc) * @see org.eclipse.gmf.runtime.common.ui.printing.IPrintHelper#openPrintDlg(java.util.List) */ - public PrinterData openPrintDlg(List diagramList) { + @SuppressWarnings("unchecked") + public PrinterData openPrintDlg(List availableDiagramList) { PrinterData result = null; + this.diagramList = availableDiagramList; + JPSPrintDialog dlg = new JPSPrintDialog(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow(), options); + .getActiveWorkbenchWindow(), options, this.diagramList); if (dlg.open() == IDialogConstants.OK_ID) { if (options.getDestination() != null) { @@ -121,17 +126,18 @@ } public boolean getDlgDiagramPrintRangeCurrent() { - // TODO Not supported by the JPS dialog - return true; + return options.isDiagramCurrent(); } public boolean getDlgDiagramPrintRangeSelection() { - // TODO Not supported by the JPS dialog - return false; + return options.isDiagramSelection(); } public boolean isDlgDiagramSelected(int index) { - // TODO Not supported by the JPS dialog + String diagramToPrint = diagramList.get(index); + if (options.getDiagramsToPrint() != null) { + return options.getDiagramsToPrint().contains(diagramToPrint); + } return false; } @@ -139,8 +145,8 @@ // TODO Not supported by the JPS dialog return false; } - - public PrintOptions getPrintOptions(){ + + public PrintOptions getPrintOptions() { return options; } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JPSPrintDialog.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JPSPrintDialog.java,v retrieving revision 1.3 diff -u -r1.3 JPSPrintDialog.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JPSPrintDialog.java 31 Mar 2008 15:00:56 -0000 1.3 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JPSPrintDialog.java 2 Apr 2008 18:46:34 -0000 @@ -13,6 +13,8 @@ package org.eclipse.gmf.runtime.diagram.ui.printing.render.dialogs; +import java.util.List; + import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.gmf.runtime.diagram.ui.printing.internal.l10n.DiagramUIPrintingMessages; import org.eclipse.gmf.runtime.diagram.ui.printing.render.model.PrintOptions; @@ -40,11 +42,14 @@ private final PrintOptions options; protected PrinterBlock printerBlock; + protected DiagramPrintRangeBlock diagramPrintRangeBlock; protected ScalingBlock scalingBlock; private RangeBlock rangeBlock; private CopiesBlock copiesBlock; private ActionsBlock actionsBlock; + private List allDiagrams; + private final DialogBlock.IDialogUnitConverter dluConverter = new DialogBlock.IDialogUnitConverter() { public int convertHorizontalDLUsToPixels(int dlus) { @@ -56,14 +61,16 @@ } }; - public JPSPrintDialog(IShellProvider parentShell, PrintOptions options) { + public JPSPrintDialog(IShellProvider parentShell, PrintOptions options, List allDiagrams) { super(parentShell); this.options = options; + this.allDiagrams = allDiagrams; } - public JPSPrintDialog(Shell shell, PrintOptions options) { + public JPSPrintDialog(Shell shell, PrintOptions options, List allDiagrams) { super(shell); this.options = options; + this.allDiagrams = allDiagrams; } /* @@ -81,20 +88,22 @@ * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) */ protected Control createDialogArea(Composite parent) { - bindings = new DataBindingContext(SWTObservables.getRealm(parent.getDisplay())); - - Composite result = new Composite(parent,SWT.NONE); - DialogBlock.layout(result, 2); - - createPrinterBlockArea(result); - createScalingBlockArea(result); - createExtensibleBlockArea(result); - createRangeBlockArea(result); - createCopiesBlockArea(result); - createActionsBlockArea(result); - - return result; - } + bindings = new DataBindingContext(SWTObservables.getRealm(parent + .getDisplay())); + + Composite result = new Composite(parent, SWT.NONE); + DialogBlock.layout(result, 2); + + createPrinterBlockArea(result); + createDiagramPrintRangeBlockArea(result); + createScalingBlockArea(result); + createRangeBlockArea(result); + createCopiesBlockArea(result); + createActionsBlockArea(result); + createExtensibleBlockArea(result); + + return result; + } protected void createPrinterBlockArea(Composite result) { printerBlock = new PrinterBlock(dluConverter, bindings, options); @@ -122,6 +131,12 @@ actionsBlock.layoutSpanHorizontal(actionsBlock.createContents(result), 2); } + protected void createDiagramPrintRangeBlockArea(Composite result){ + diagramPrintRangeBlock = new DiagramPrintRangeBlock(dluConverter,bindings,options, allDiagrams); + diagramPrintRangeBlock.layoutSpanHorizontal(diagramPrintRangeBlock.createContents(result), + 2); + } + protected void createExtensibleBlockArea(Composite result) { // meant to be overridden by subclasses to add additional blocks. } @@ -133,30 +148,35 @@ } protected void buttonPressed(int buttonId) { - switch (buttonId) { - case -1: - break; - default: - super.buttonPressed(buttonId); - } - } - - public boolean close() { - bindings.dispose(); - copiesBlock.dispose(); - return super.close(); - } - - protected void cancelPressed() { - super.cancelPressed(); - } + switch (buttonId) { + case -1: + break; + default: + super.buttonPressed(buttonId); + } + } + + public boolean close() { + bindings.dispose(); + copiesBlock.dispose(); + printerBlock.dispose(); + diagramPrintRangeBlock.dispose(); + scalingBlock.dispose(); + rangeBlock.dispose(); + actionsBlock.dispose(); + return super.close(); + } + + protected void cancelPressed() { + super.cancelPressed(); + } /** - * Obtains the user's selected printing options, or null if - * the user canceled the print operation. - * - * @return the printing options, or null if canceled - */ + * Obtains the user's selected printing options, or null if + * the user canceled the print operation. + * + * @return the printing options, or null if canceled + */ public PrintOptions getPrintOptions() { return options; } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JobAttributesBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JobAttributesBlock.java,v retrieving revision 1.1 diff -u -r1.1 JobAttributesBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JobAttributesBlock.java 28 Mar 2008 17:33:29 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JobAttributesBlock.java 2 Apr 2008 18:46:34 -0000 @@ -11,6 +11,7 @@ package org.eclipse.gmf.runtime.diagram.ui.printing.render.dialogs; +import org.eclipse.core.databinding.Binding; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.core.databinding.observable.Realm; @@ -30,6 +31,7 @@ public class JobAttributesBlock extends DialogBlock { private final DataBindingContext bindings; private final PrintOptions options; + private Binding jobNameBinding; JobAttributesBlock(IDialogUnitConverter dluConverter, DataBindingContext bindings, PrintOptions options) { @@ -55,10 +57,16 @@ DiagramUIPrintingMessages.JPSOptionsDialog_JobName))); Text jobName = text(result, 80); - bindings.bindValue(SWTObservables.observeText(jobName, SWT.Modify), + jobNameBinding = bindings.bindValue(SWTObservables.observeText(jobName, SWT.Modify), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_JOB_NAME), null, null); return result; } + + @Override + public void dispose() { + bindings.removeBinding(jobNameBinding); + jobNameBinding.dispose(); + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JPSOptionsDialog.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JPSOptionsDialog.java,v retrieving revision 1.1 diff -u -r1.1 JPSOptionsDialog.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JPSOptionsDialog.java 28 Mar 2008 17:33:29 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/JPSOptionsDialog.java 2 Apr 2008 18:46:34 -0000 @@ -111,4 +111,16 @@ options); jobAttributesBlock.createContents(result); } + + /* + * (non-Javadoc) + * @see org.eclipse.jface.dialogs.TrayDialog#close() + */ + public boolean close() { + qualityBlock.dispose(); + colorBlock.dispose(); + sidesBlock.dispose(); + jobAttributesBlock.dispose(); + return super.close(); + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ActionsBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ActionsBlock.java,v retrieving revision 1.1 diff -u -r1.1 ActionsBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ActionsBlock.java 7 Mar 2008 16:51:27 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ActionsBlock.java 2 Apr 2008 18:46:34 -0000 @@ -99,5 +99,10 @@ } return printActionHelper; } + + @Override + public void dispose() { + // nothing special to dispose + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/RangeBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/RangeBlock.java,v retrieving revision 1.1 diff -u -r1.1 RangeBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/RangeBlock.java 7 Mar 2008 16:51:28 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/RangeBlock.java 2 Apr 2008 18:46:34 -0000 @@ -98,4 +98,9 @@ return result; } + + @Override + public void dispose() { + // nothing special to dispose currently + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ScalingBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ScalingBlock.java,v retrieving revision 1.1 diff -u -r1.1 ScalingBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ScalingBlock.java 7 Mar 2008 16:51:28 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ScalingBlock.java 2 Apr 2008 18:46:34 -0000 @@ -111,4 +111,9 @@ return result; } + + @Override + public void dispose() { + // nothing special to dispose currently + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ColorBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ColorBlock.java,v retrieving revision 1.1 diff -u -r1.1 ColorBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ColorBlock.java 28 Mar 2008 17:33:29 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ColorBlock.java 2 Apr 2008 18:46:34 -0000 @@ -22,6 +22,7 @@ import javax.print.attribute.standard.ColorSupported; import javax.print.attribute.standard.PrinterName; +import org.eclipse.core.databinding.Binding; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.core.databinding.observable.Realm; @@ -44,6 +45,9 @@ private Button colorRadio; private Button monoRadio; + + private Binding colorBinding; + private Binding monoBinding; ColorBlock(IDialogUnitConverter dluConverter, DataBindingContext bindings, PrintOptions options) { @@ -74,11 +78,11 @@ DiagramUIPrintingMessages.JPSOptionsDialog_ChromaticityMonochrome); layoutSpanHorizontal(monoRadio, 4); - bindings.bindValue(SWTObservables.observeSelection(colorRadio), + colorBinding = bindings.bindValue(SWTObservables.observeSelection(colorRadio), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_CHROMATICITY_COLOR), null, null); - bindings.bindValue(SWTObservables.observeSelection(monoRadio), + monoBinding = bindings.bindValue(SWTObservables.observeSelection(monoRadio), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_CHROMATICITY_MONO), null, null); @@ -119,5 +123,13 @@ colorRadio.setEnabled(false); } } + + @Override + public void dispose() { + bindings.removeBinding(colorBinding); + colorBinding.dispose(); + bindings.removeBinding(monoBinding); + monoBinding.dispose(); + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/DialogBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/DialogBlock.java,v retrieving revision 1.1 diff -u -r1.1 DialogBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/DialogBlock.java 7 Mar 2008 16:51:28 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/DialogBlock.java 2 Apr 2008 18:46:34 -0000 @@ -12,6 +12,7 @@ package org.eclipse.gmf.runtime.diagram.ui.printing.render.dialogs; import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.ListViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -194,6 +195,11 @@ ComboViewer result = new ComboViewer(parent); return result; } + + ListViewer list(Composite parent){ + ListViewer result = new ListViewer(parent); + return result; + } Button button(Composite parent, String text) { Button result = new Button(parent, SWT.PUSH); @@ -227,6 +233,8 @@ } public abstract Control createContents(Composite parent); + + public abstract void dispose(); public static interface IDialogUnitConverter { int convertHorizontalDLUsToPixels(int dlus); Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/QualityBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/QualityBlock.java,v retrieving revision 1.1 diff -u -r1.1 QualityBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/QualityBlock.java 28 Mar 2008 17:33:29 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/QualityBlock.java 2 Apr 2008 18:46:34 -0000 @@ -11,6 +11,7 @@ package org.eclipse.gmf.runtime.diagram.ui.printing.render.dialogs; +import org.eclipse.core.databinding.Binding; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.core.databinding.observable.Realm; @@ -30,6 +31,10 @@ private final DataBindingContext bindings; private final PrintOptions options; + + private Binding qualityHighBinding; + private Binding qualityMedBinding; + private Binding qualityLowBinding; QualityBlock(IDialogUnitConverter dluConverter, DataBindingContext bindings, PrintOptions options) { @@ -63,18 +68,28 @@ DiagramUIPrintingMessages.JPSOptionsDialog_QualityLow); layoutSpanHorizontal(lowRadio, 4); - bindings.bindValue(SWTObservables.observeSelection(highRadio), + qualityHighBinding = bindings.bindValue(SWTObservables.observeSelection(highRadio), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_QUALITY_HIGH), null, null); - bindings.bindValue(SWTObservables.observeSelection(mediumRadio), + qualityMedBinding = bindings.bindValue(SWTObservables.observeSelection(mediumRadio), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_QUALITY_MED), null, null); - bindings.bindValue(SWTObservables.observeSelection(lowRadio), + qualityLowBinding = bindings.bindValue(SWTObservables.observeSelection(lowRadio), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_QUALITY_LOW), null, null); return result; } + + @Override + public void dispose() { + bindings.removeBinding(qualityHighBinding); + qualityHighBinding.dispose(); + bindings.removeBinding(qualityLowBinding); + qualityLowBinding.dispose(); + bindings.removeBinding(qualityMedBinding); + qualityMedBinding.dispose(); + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/PrinterBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/PrinterBlock.java,v retrieving revision 1.2 diff -u -r1.2 PrinterBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/PrinterBlock.java 28 Mar 2008 17:33:29 -0000 1.2 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/PrinterBlock.java 2 Apr 2008 18:46:34 -0000 @@ -298,4 +298,9 @@ dlg.open(); } + + @Override + public void dispose() { + // nothing special to dispose currently + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/SidesBlock.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/SidesBlock.java,v retrieving revision 1.1 diff -u -r1.1 SidesBlock.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/SidesBlock.java 28 Mar 2008 17:33:29 -0000 1.1 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/SidesBlock.java 2 Apr 2008 18:46:34 -0000 @@ -11,6 +11,7 @@ package org.eclipse.gmf.runtime.diagram.ui.printing.render.dialogs; +import org.eclipse.core.databinding.Binding; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.core.databinding.observable.Realm; @@ -30,6 +31,9 @@ private final DataBindingContext bindings; private final PrintOptions options; + private Binding oneSidedBinding; + private Binding tumbleBinding; + private Binding duplexBinding; SidesBlock(IDialogUnitConverter dluConverter, DataBindingContext bindings, PrintOptions options) { @@ -62,19 +66,29 @@ DiagramUIPrintingMessages.JPSOptionsDialog_SidesDuplex); layoutSpanHorizontal(duplexRadio, 4); - bindings.bindValue(SWTObservables.observeSelection(oneSideRadio), + oneSidedBinding = bindings.bindValue(SWTObservables.observeSelection(oneSideRadio), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_SIDES_ONESIDED), null, null); - bindings.bindValue(SWTObservables.observeSelection(tumbleRadio), + tumbleBinding = bindings.bindValue(SWTObservables.observeSelection(tumbleRadio), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_SIDES_TUMBLE), null, null); - bindings.bindValue(SWTObservables.observeSelection(duplexRadio), + duplexBinding = bindings.bindValue(SWTObservables.observeSelection(duplexRadio), BeansObservables.observeValue(realm, options, PrintOptions.PROPERTY_SIDES_DUPLEX), null, null); return result; } + @Override + public void dispose() { + bindings.removeBinding(oneSidedBinding); + oneSidedBinding.dispose(); + bindings.removeBinding(tumbleBinding); + tumbleBinding.dispose(); + bindings.removeBinding(duplexBinding); + duplexBinding.dispose(); + } + } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/model/PrintOptions.java =================================================================== RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render/src/org/eclipse/gmf/runtime/diagram/ui/printing/render/model/PrintOptions.java,v retrieving revision 1.2 diff -u -r1.2 PrintOptions.java --- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/model/PrintOptions.java 28 Mar 2008 17:33:29 -0000 1.2 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/model/PrintOptions.java 2 Apr 2008 18:46:34 -0000 @@ -11,6 +11,7 @@ package org.eclipse.gmf.runtime.diagram.ui.printing.render.model; +import java.util.List; /** * This class is used as part of the infrastructure required for data-bindings @@ -20,262 +21,304 @@ * @author James Bruck (jbruck) */ public class PrintOptions extends PrintModelElement { - public static String PROPERTY_DESTINATION = "destination"; //$NON-NLS-1$ - - public static String PROPERTY_PERCENT_SCALING = "percentScaling"; //$NON-NLS-1$ - public static String PROPERTY_SCALE_FACTOR = "scaleFactor"; //$NON-NLS-1$ - public static String PROPERTY_FIT_TO_WIDTH = "fitToPagesWidth"; //$NON-NLS-1$ - public static String PROPERTY_FIT_TO_HEIGHT = "fitToPagesHeight"; //$NON-NLS-1$ - - public static String PROPERTY_ALL_PAGES = "allPages"; //$NON-NLS-1$ - public static String PROPERTY_RANGE_FROM = "rangeFrom"; //$NON-NLS-1$ - public static String PROPERTY_RANGE_TO = "rangeTo"; //$NON-NLS-1$ - - public static String PROPERTY_COPIES = "copies"; //$NON-NLS-1$ - public static String PROPERTY_COLLATE = "collate"; //$NON-NLS-1$ - - public static String PROPERTY_QUALITY_HIGH = "qualityHigh"; //$NON-NLS-1$ - public static String PROPERTY_QUALITY_LOW = "qualityLow"; //$NON-NLS-1$ - public static String PROPERTY_QUALITY_MED = "qualityMed"; //$NON-NLS-1$ - public static String PROPERTY_CHROMATICITY_MONO = "chromaticityMono"; //$NON-NLS-1$ - public static String PROPERTY_CHROMATICITY_COLOR = "chromaticityColor"; //$NON-NLS-1$ - public static String PROPERTY_SIDES_ONESIDED = "sideOneSided"; //$NON-NLS-1$ - public static String PROPERTY_SIDES_TUMBLE = "sideTumble"; //$NON-NLS-1$ - public static String PROPERTY_SIDES_DUPLEX = "sideDuplex"; //$NON-NLS-1$ - - public static String PROPERTY_JOB_NAME = "jobName"; //$NON-NLS-1$ - public static String PROPERTY_USER_NAME = "userName"; //$NON-NLS-1$ - - private PrintDestination destination; - - private boolean percentScaling; - private int scaleFactor; - private int fitToPagesWidth; - private int fitToPagesHeight; - - private boolean allPages; - private int rangeFrom; - private int rangeTo; - - private int copies; - private boolean collate; - - private boolean qualityHigh; - private boolean qualityLow; - private boolean qualityMed; - - private boolean chromaticityColor; - private boolean chromaticityMono; - - private boolean sideOneSided; - private boolean sideTumble; - private boolean sideDuplex; - - private String jobName; - private String userName; - - public PrintOptions() { - super(); - } - - public PrintDestination getDestination() { - return destination; - } - - public void setDestination(PrintDestination destination) { - PrintDestination oldDestination = this.destination; - this.destination = destination; - firePropertyChange(PROPERTY_DESTINATION, oldDestination, destination); - } - - public boolean isPercentScaling() { - return percentScaling; - } - - public void setPercentScaling(boolean percentScaling) { - boolean oldScaling = this.percentScaling; - this.percentScaling = percentScaling; - firePropertyChange(PROPERTY_PERCENT_SCALING, oldScaling, percentScaling); - } - public String getJobName() { - return jobName; - } - - public void setJobName(String name) { - String oldName = this.jobName; - this.jobName = name; - firePropertyChange(PROPERTY_JOB_NAME, oldName, name); - } - - public String getUserName() { - return userName; - } - - public void setUserName(String name) { - String oldName = this.userName; - this.userName = name; - firePropertyChange(PROPERTY_USER_NAME, oldName, name); - } - - public boolean isQualityHigh() { - return this.qualityHigh; - } - - public void setQualityHigh(boolean qualityHigh) { - boolean oldQualityHigh = this.qualityHigh; - this.qualityHigh = qualityHigh; - firePropertyChange(PROPERTY_QUALITY_HIGH, oldQualityHigh, qualityHigh); - } - - public boolean isQualityLow() { - return this.qualityLow; - } - - public void setQualityLow(boolean qualityLow) { - boolean oldQualityLow = this.qualityLow; - this.qualityLow = qualityLow; - firePropertyChange(PROPERTY_QUALITY_LOW, oldQualityLow, this.qualityLow); - } - - public boolean isQualityMed() { - return this.qualityMed; - } - - public void setQualityMed(boolean qualityMed) { - boolean oldQualityMed = this.qualityMed; - this.qualityMed = qualityMed; - firePropertyChange(PROPERTY_QUALITY_MED, oldQualityMed, this.qualityMed); - } - - - public int getScaleFactor() { - return scaleFactor; - } - - public void setScaleFactor(int scaleFactor) { - int oldFactor = this.scaleFactor; - this.scaleFactor = scaleFactor; - firePropertyChange(PROPERTY_SCALE_FACTOR, oldFactor, scaleFactor); - } - - public int getFitToPagesWidth() { - return fitToPagesWidth; - } - - public void setFitToPagesWidth(int fitToPagesWidth) { - int oldWidth = this.fitToPagesWidth; - this.fitToPagesWidth = fitToPagesWidth; - firePropertyChange(PROPERTY_FIT_TO_WIDTH, oldWidth, fitToPagesWidth); - } - - public int getFitToPagesHeight() { - return fitToPagesHeight; - } - - public void setFitToPagesHeight(int fitToPagesHeight) { - int oldHeight = this.fitToPagesHeight; - this.fitToPagesHeight = fitToPagesHeight; - firePropertyChange(PROPERTY_FIT_TO_HEIGHT, oldHeight, fitToPagesHeight); - } - - public boolean isAllPages() { - return allPages; - } - - public void setAllPages(boolean allPages) { - boolean oldAll = this.allPages; - this.allPages = allPages; - firePropertyChange(PROPERTY_ALL_PAGES, oldAll, allPages); - } - - public int getRangeFrom() { - return rangeFrom; - } - - public void setRangeFrom(int rangeFrom) { - int oldFrom = this.rangeFrom; - this.rangeFrom = rangeFrom; - firePropertyChange(PROPERTY_RANGE_FROM, oldFrom, rangeFrom); - } - - public int getRangeTo() { - return rangeTo; - } - - public void setRangeTo(int rangeTo) { - int oldTo = this.rangeTo; - this.rangeTo = rangeTo; - firePropertyChange(PROPERTY_RANGE_TO, oldTo, rangeTo); - } - - public int getCopies() { - return copies; - } - - public void setCopies(int copies) { - int oldCopies = this.copies; - this.copies = copies; - firePropertyChange(PROPERTY_COPIES, oldCopies, copies); - } - - public boolean isCollate() { - return collate; - } - - public void setCollate(boolean collate) { - boolean oldCollate = this.collate; - this.collate = collate; - firePropertyChange(PROPERTY_COLLATE, oldCollate, collate); - } - - - public boolean isChromaticityColor() { - return this.chromaticityColor; - } - - public void setChromaticityColor(boolean chromaticityColor) { - boolean oldChromaticityColor = this.chromaticityColor; - this.chromaticityColor = chromaticityColor; - firePropertyChange(PROPERTY_CHROMATICITY_COLOR, oldChromaticityColor, this.chromaticityColor); - } - - public boolean isChromaticityMono() { - return this.chromaticityMono; - } - - public void setChromaticityMono(boolean chromaticityMono) { - boolean oldChromaticityMono = this.chromaticityMono; - this.chromaticityMono = chromaticityMono; - firePropertyChange(PROPERTY_CHROMATICITY_MONO, oldChromaticityMono, this.chromaticityMono); - } - - public boolean isSideOneSided() { - return this.sideOneSided; - } - - public void setSideOneSided(boolean sideOneSided) { - boolean oldSideOneSided = this.sideOneSided; - this.sideOneSided = sideOneSided; - firePropertyChange(PROPERTY_SIDES_ONESIDED, oldSideOneSided, this.sideOneSided); - } - - public boolean isSideTumble() { - return this.sideTumble; - } - - public void setSideTumble(boolean sideTumble) { - boolean oldSideTumble = this.sideTumble; - this.sideTumble = sideTumble; - firePropertyChange(PROPERTY_SIDES_TUMBLE, oldSideTumble, this.sideTumble); - } - - public boolean isSideDuplex() { - return this.sideDuplex; - } - - public void setSideDuplex(boolean sideDuplex) { - boolean oldSideDuplex = this.sideDuplex; - this.sideDuplex = sideDuplex; - firePropertyChange(PROPERTY_SIDES_DUPLEX, oldSideDuplex, this.sideDuplex); - } + public static String PROPERTY_DESTINATION = "destination"; //$NON-NLS-1$ + + public static String PROPERTY_PERCENT_SCALING = "percentScaling"; //$NON-NLS-1$ + public static String PROPERTY_SCALE_FACTOR = "scaleFactor"; //$NON-NLS-1$ + public static String PROPERTY_FIT_TO_WIDTH = "fitToPagesWidth"; //$NON-NLS-1$ + public static String PROPERTY_FIT_TO_HEIGHT = "fitToPagesHeight"; //$NON-NLS-1$ + + public static String PROPERTY_ALL_PAGES = "allPages"; //$NON-NLS-1$ + public static String PROPERTY_RANGE_FROM = "rangeFrom"; //$NON-NLS-1$ + public static String PROPERTY_RANGE_TO = "rangeTo"; //$NON-NLS-1$ + + public static String PROPERTY_COPIES = "copies"; //$NON-NLS-1$ + public static String PROPERTY_COLLATE = "collate"; //$NON-NLS-1$ + + public static String PROPERTY_QUALITY_HIGH = "qualityHigh"; //$NON-NLS-1$ + public static String PROPERTY_QUALITY_LOW = "qualityLow"; //$NON-NLS-1$ + public static String PROPERTY_QUALITY_MED = "qualityMed"; //$NON-NLS-1$ + public static String PROPERTY_CHROMATICITY_MONO = "chromaticityMono"; //$NON-NLS-1$ + public static String PROPERTY_CHROMATICITY_COLOR = "chromaticityColor"; //$NON-NLS-1$ + public static String PROPERTY_SIDES_ONESIDED = "sideOneSided"; //$NON-NLS-1$ + public static String PROPERTY_SIDES_TUMBLE = "sideTumble"; //$NON-NLS-1$ + public static String PROPERTY_SIDES_DUPLEX = "sideDuplex"; //$NON-NLS-1$ + + public static String PROPERTY_JOB_NAME = "jobName"; //$NON-NLS-1$ + public static String PROPERTY_USER_NAME = "userName"; //$NON-NLS-1$ + + public static String PROPERTY_DIAGRAM_CURRENT = "diagramCurrent"; //$NON-NLS-1$ + public static String PROPERTY_DIAGRAM_SELECTION = "diagramSelection"; //$NON-NLS-1$ + + private PrintDestination destination; + + private boolean percentScaling; + private int scaleFactor; + private int fitToPagesWidth; + private int fitToPagesHeight; + + private boolean allPages; + private int rangeFrom; + private int rangeTo; + + private int copies; + private boolean collate; + + private boolean qualityHigh; + private boolean qualityLow; + private boolean qualityMed; + + private boolean chromaticityColor; + private boolean chromaticityMono; + + private boolean sideOneSided; + private boolean sideTumble; + private boolean sideDuplex; + + private String jobName; + private String userName; + + private boolean diagramCurrent; + private boolean diagramSelection; + + private List diagramsToPrint; + + public PrintOptions() { + super(); + } + + public PrintDestination getDestination() { + return destination; + } + + public void setDestination(PrintDestination destination) { + PrintDestination oldDestination = this.destination; + this.destination = destination; + firePropertyChange(PROPERTY_DESTINATION, oldDestination, destination); + } + + public boolean isPercentScaling() { + return percentScaling; + } + + public void setPercentScaling(boolean percentScaling) { + boolean oldScaling = this.percentScaling; + this.percentScaling = percentScaling; + firePropertyChange(PROPERTY_PERCENT_SCALING, oldScaling, percentScaling); + } + + public String getJobName() { + return jobName; + } + + public void setJobName(String name) { + String oldName = this.jobName; + this.jobName = name; + firePropertyChange(PROPERTY_JOB_NAME, oldName, name); + } + + public String getUserName() { + return userName; + } + + public void setUserName(String name) { + String oldName = this.userName; + this.userName = name; + firePropertyChange(PROPERTY_USER_NAME, oldName, name); + } + + public void setDiagramsToPrint(List diagramsToPrint) { + this.diagramsToPrint = diagramsToPrint; + } + + public List getDiagramsToPrint() { + return diagramsToPrint; + } + + public boolean isDiagramCurrent() { + return this.diagramCurrent; + } + + public void setDiagramCurrent(boolean diagramCurrent) { + boolean oldDiagramCurrent = this.diagramCurrent; + this.diagramCurrent = diagramCurrent; + firePropertyChange(PROPERTY_DIAGRAM_CURRENT, oldDiagramCurrent, + diagramCurrent); + } + + public boolean isDiagramSelection() { + return this.diagramSelection; + } + + public void setDiagramSelection(boolean diagramSelection) { + boolean oldDiagramSelection = this.diagramSelection; + this.diagramSelection = diagramSelection; + firePropertyChange(PROPERTY_DIAGRAM_SELECTION, oldDiagramSelection, + diagramSelection); + } + + public boolean isQualityHigh() { + return this.qualityHigh; + } + + public void setQualityHigh(boolean qualityHigh) { + boolean oldQualityHigh = this.qualityHigh; + this.qualityHigh = qualityHigh; + firePropertyChange(PROPERTY_QUALITY_HIGH, oldQualityHigh, qualityHigh); + } + + public boolean isQualityLow() { + return this.qualityLow; + } + + public void setQualityLow(boolean qualityLow) { + boolean oldQualityLow = this.qualityLow; + this.qualityLow = qualityLow; + firePropertyChange(PROPERTY_QUALITY_LOW, oldQualityLow, this.qualityLow); + } + + public boolean isQualityMed() { + return this.qualityMed; + } + + public void setQualityMed(boolean qualityMed) { + boolean oldQualityMed = this.qualityMed; + this.qualityMed = qualityMed; + firePropertyChange(PROPERTY_QUALITY_MED, oldQualityMed, this.qualityMed); + } + + public int getScaleFactor() { + return scaleFactor; + } + + public void setScaleFactor(int scaleFactor) { + int oldFactor = this.scaleFactor; + this.scaleFactor = scaleFactor; + firePropertyChange(PROPERTY_SCALE_FACTOR, oldFactor, scaleFactor); + } + + public int getFitToPagesWidth() { + return fitToPagesWidth; + } + + public void setFitToPagesWidth(int fitToPagesWidth) { + int oldWidth = this.fitToPagesWidth; + this.fitToPagesWidth = fitToPagesWidth; + firePropertyChange(PROPERTY_FIT_TO_WIDTH, oldWidth, fitToPagesWidth); + } + + public int getFitToPagesHeight() { + return fitToPagesHeight; + } + + public void setFitToPagesHeight(int fitToPagesHeight) { + int oldHeight = this.fitToPagesHeight; + this.fitToPagesHeight = fitToPagesHeight; + firePropertyChange(PROPERTY_FIT_TO_HEIGHT, oldHeight, fitToPagesHeight); + } + + public boolean isAllPages() { + return allPages; + } + + public void setAllPages(boolean allPages) { + boolean oldAll = this.allPages; + this.allPages = allPages; + firePropertyChange(PROPERTY_ALL_PAGES, oldAll, allPages); + } + + public int getRangeFrom() { + return rangeFrom; + } + + public void setRangeFrom(int rangeFrom) { + int oldFrom = this.rangeFrom; + this.rangeFrom = rangeFrom; + firePropertyChange(PROPERTY_RANGE_FROM, oldFrom, rangeFrom); + } + + public int getRangeTo() { + return rangeTo; + } + + public void setRangeTo(int rangeTo) { + int oldTo = this.rangeTo; + this.rangeTo = rangeTo; + firePropertyChange(PROPERTY_RANGE_TO, oldTo, rangeTo); + } + + public int getCopies() { + return copies; + } + + public void setCopies(int copies) { + int oldCopies = this.copies; + this.copies = copies; + firePropertyChange(PROPERTY_COPIES, oldCopies, copies); + } + + public boolean isCollate() { + return collate; + } + + public void setCollate(boolean collate) { + boolean oldCollate = this.collate; + this.collate = collate; + firePropertyChange(PROPERTY_COLLATE, oldCollate, collate); + } + + public boolean isChromaticityColor() { + return this.chromaticityColor; + } + + public void setChromaticityColor(boolean chromaticityColor) { + boolean oldChromaticityColor = this.chromaticityColor; + this.chromaticityColor = chromaticityColor; + firePropertyChange(PROPERTY_CHROMATICITY_COLOR, oldChromaticityColor, + this.chromaticityColor); + } + + public boolean isChromaticityMono() { + return this.chromaticityMono; + } + + public void setChromaticityMono(boolean chromaticityMono) { + boolean oldChromaticityMono = this.chromaticityMono; + this.chromaticityMono = chromaticityMono; + firePropertyChange(PROPERTY_CHROMATICITY_MONO, oldChromaticityMono, + this.chromaticityMono); + } + + public boolean isSideOneSided() { + return this.sideOneSided; + } + + public void setSideOneSided(boolean sideOneSided) { + boolean oldSideOneSided = this.sideOneSided; + this.sideOneSided = sideOneSided; + firePropertyChange(PROPERTY_SIDES_ONESIDED, oldSideOneSided, + this.sideOneSided); + } + + public boolean isSideTumble() { + return this.sideTumble; + } + + public void setSideTumble(boolean sideTumble) { + boolean oldSideTumble = this.sideTumble; + this.sideTumble = sideTumble; + firePropertyChange(PROPERTY_SIDES_TUMBLE, oldSideTumble, + this.sideTumble); + } + + public boolean isSideDuplex() { + return this.sideDuplex; + } + + public void setSideDuplex(boolean sideDuplex) { + boolean oldSideDuplex = this.sideDuplex; + this.sideDuplex = sideDuplex; + firePropertyChange(PROPERTY_SIDES_DUPLEX, oldSideDuplex, + this.sideDuplex); + } } Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/DiagramPrintRangeBlock.java =================================================================== RCS file: src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/DiagramPrintRangeBlock.java diff -N src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/DiagramPrintRangeBlock.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/DiagramPrintRangeBlock.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,173 @@ +/****************************************************************************** + * Copyright (c) 2008 IBM Corporation and others. + * 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 - initial API and implementation + ****************************************************************************/ + +package org.eclipse.gmf.runtime.diagram.ui.printing.render.dialogs; + +import java.util.List; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.beans.BeansObservables; +import org.eclipse.core.databinding.observable.Realm; +import org.eclipse.gmf.runtime.diagram.ui.printing.internal.l10n.DiagramUIPrintingMessages; +import org.eclipse.gmf.runtime.diagram.ui.printing.render.model.PrintOptions; +import org.eclipse.jface.databinding.swt.SWTObservables; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.Viewer; +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; + +/** + * A section of the print dialog that handles selection of diagrams to print. + * + * @author James Bruck (jbruck) + */ +public class DiagramPrintRangeBlock extends DialogBlock { + + private final DataBindingContext bindings; + + private final PrintOptions options; + + private ListViewer diagramList; + + private List availableDiagrams; + + DiagramPrintRangeBlock(IDialogUnitConverter dluConverter, + DataBindingContext bindings, PrintOptions options, + List availableDiagrams) { + + super(dluConverter); + + this.bindings = bindings; + this.options = options; + this.availableDiagrams = availableDiagrams; + } + + /** + * Create the contents of the diagram selection block. It contains 2 radio + * buttons for current or multi-selection and a list box of diagram options. + */ + @Override + public Control createContents(Composite parent) { + + final Realm realm = bindings.getValidationRealm(); + + Composite result = group(parent, + DiagramUIPrintingMessages.JPSOptionsDialog_DiagramPrintRange); + layout(result, 3); + + Button currentDiagramRadio = radio(result, + DiagramUIPrintingMessages.JPSOptionsDialog_DiagramPrintCurrent); + layoutSpanHorizontal(currentDiagramRadio, 4); + + Button selectedDiagramsRadio = radio(result, + DiagramUIPrintingMessages.JPSOptionsDialog_DiagramPrintSelected); + layoutSpanHorizontal(selectedDiagramsRadio, 4); + + diagramList = list(result); + layoutFillHorizontal(diagramList.getControl()); + diagramList.getControl().setEnabled(options.isDiagramSelection()); + + currentDiagramRadio.addSelectionListener(new SelectionListener() { + + public void widgetDefaultSelected(SelectionEvent arg0) { + //do nothing + } + public void widgetSelected(SelectionEvent event) { + diagramList.getControl().setEnabled( + options.isDiagramSelection()); + } + }); + + selectedDiagramsRadio.addSelectionListener(new SelectionListener() { + + public void widgetDefaultSelected(SelectionEvent arg0) { + //do nothing + } + public void widgetSelected(SelectionEvent event) { + diagramList.getControl() + .setEnabled(!options.isDiagramCurrent()); + } + }); + + diagramList + .addSelectionChangedListener(new ISelectionChangedListener() { + + @SuppressWarnings("unchecked") + public void selectionChanged(SelectionChangedEvent event) { + if (event != null) { + + StructuredSelection selection = (StructuredSelection) event + .getSelection(); + + options.setDiagramsToPrint(selection.toList()); + + } + + } + }); + + diagramList.setContentProvider(new DiagramContentProvider()); + diagramList.setLabelProvider(new DiagramLabelProvider()); + + diagramList.setInput(availableDiagrams); + + bindings.bindValue( + SWTObservables.observeSelection(currentDiagramRadio), + BeansObservables.observeValue(realm, options, + PrintOptions.PROPERTY_DIAGRAM_CURRENT), null, null); + + bindings.bindValue(SWTObservables + .observeSelection(selectedDiagramsRadio), BeansObservables + .observeValue(realm, options, + PrintOptions.PROPERTY_DIAGRAM_SELECTION), null, null); + + return result; + } + + @Override + public void dispose() { + // nothing special to dispose currently + } + + /** + * A helper class used to retrieve label text + * + * @author James Bruck (jbruck) + */ + private class DiagramContentProvider implements IStructuredContentProvider { + public Object[] getElements(Object inputElement) { + return availableDiagrams.toArray(); + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + // input never changes + } + + public void dispose() { + // nothing to dispose + } + } + + private class DiagramLabelProvider extends LabelProvider { + public String getText(Object element) { + return (String) element; + } + } + +}