### Eclipse Workspace Patch 1.0
#P org.eclipse.gmf.runtime.common.ui.printing.win32
Index: src/org/eclipse/gmf/runtime/common/ui/printing/PrintHelper.java
===================================================================
RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.common.ui.printing.win32/src/org/eclipse/gmf/runtime/common/ui/printing/PrintHelper.java,v
retrieving revision 1.6
diff -u -r1.6 PrintHelper.java
--- src/org/eclipse/gmf/runtime/common/ui/printing/PrintHelper.java 6 Oct 2006 13:33:08 -0000 1.6
+++ src/org/eclipse/gmf/runtime/common/ui/printing/PrintHelper.java 18 Apr 2008 15:39:15 -0000
@@ -16,15 +16,14 @@
import java.util.List;
import java.util.Locale;
-import org.eclipse.swt.printing.PrinterData;
-import org.eclipse.ui.PlatformUI;
-
import org.eclipse.gmf.runtime.common.core.util.Log;
import org.eclipse.gmf.runtime.common.core.util.StringStatics;
import org.eclipse.gmf.runtime.common.core.util.Trace;
import org.eclipse.gmf.runtime.common.ui.printing.internal.CommonPrintingDebugOptions;
import org.eclipse.gmf.runtime.common.ui.printing.internal.CommonPrintingStatusCodes;
import org.eclipse.gmf.runtime.common.ui.printing.internal.PrintingPlugin;
+import org.eclipse.swt.printing.PrinterData;
+import org.eclipse.ui.PlatformUI;
/**
* The PrintHelper implements the IPrintHelper interface for the platform
@@ -323,9 +322,7 @@
// initialize dialog
resetDialog();
- initScaleFitTo(1, 1);
- initScalePercent(100);
-
+
if (diagramList != null) {
for (int c = 0; c < diagramList.size(); c++) {
assert (diagramList.get(c) instanceof String);
@@ -521,5 +518,21 @@
public void setDlgPaperSize(int index, double width, double height) {
setPaperSize(index, width, height);
}
+
+ /**
+ * Initialize the scaling factor in the print dialog.
+ */
+ @Override
+ public void setScaleFactor(int scaleFactor) {
+ initScalePercent(scaleFactor);
+ }
+
+ /**
+ * Initialize the scale width and height in the print dialog.
+ */
+ @Override
+ public void setScaleToWidthHeight(int width, int height) {
+ initScaleFitTo(width, height);
+ }
}
\ No newline at end of file
#P org.eclipse.gmf.runtime.diagram.ui.printing.render
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.3
diff -u -r1.3 ActionsBlock.java
--- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ActionsBlock.java 4 Apr 2008 21:50:20 -0000 1.3
+++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/dialogs/ActionsBlock.java 18 Apr 2008 15:39:16 -0000
@@ -14,6 +14,7 @@
import org.eclipse.gmf.runtime.common.ui.action.actions.IPrintActionHelper;
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.l10n.DiagramUIPrintingMessages;
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.printpreview.PrintPreviewHelper;
+import org.eclipse.gmf.runtime.diagram.ui.printing.internal.util.PrintHelperUtil;
import org.eclipse.gmf.runtime.diagram.ui.printing.render.actions.EnhancedPrintActionHelper;
import org.eclipse.gmf.runtime.diagram.ui.printing.render.internal.printpreview.RenderedPrintPreviewHelper;
import org.eclipse.gmf.runtime.diagram.ui.printing.render.model.PrintOptions;
@@ -75,9 +76,15 @@
break;
default:
PrintPreviewHelper previewHelper = getPrintPreviewHelper();
- previewHelper.setUserScale(options.getScaleFactor() / 100f);
+
+ PrintHelperUtil.setScale(options.getScaleFactor());
+ PrintHelperUtil.setScaleToWidth(options.getFitToPagesWidth());
+ PrintHelperUtil.setScaleToHeight(options.getFitToPagesHeight());
previewHelper.enablePrinting(false);
+
previewHelper.doPrintPreview(getPrintActionHelper());
+
+ options.setScaleFactor(PrintHelperUtil.getScale());
}
}
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.3
diff -u -r1.3 PrintHelper.java
--- src/org/eclipse/gmf/runtime/diagram/ui/printing/render/util/PrintHelper.java 4 Apr 2008 21:44:32 -0000 1.3
+++ src/org/eclipse/gmf/runtime/diagram/ui/printing/render/util/PrintHelper.java 18 Apr 2008 15:39:16 -0000
@@ -14,6 +14,7 @@
import java.util.List;
import org.eclipse.gmf.runtime.common.ui.printing.IPrintHelper;
+import org.eclipse.gmf.runtime.diagram.ui.printing.internal.util.PrintHelperUtil;
import org.eclipse.gmf.runtime.diagram.ui.printing.render.dialogs.JPSPrintDialog;
import org.eclipse.gmf.runtime.diagram.ui.printing.render.model.PrintOptions;
import org.eclipse.jface.dialogs.IDialogConstants;
@@ -40,9 +41,10 @@
*/
private void initPrintOptions() {
options.setPercentScaling(true);
- options.setScaleFactor(100);
- options.setFitToPagesWidth(1);
- options.setFitToPagesHeight(1);
+
+ options.setScaleFactor(PrintHelperUtil.getScale());
+ options.setFitToPagesWidth(PrintHelperUtil.getScaleToWidth());
+ options.setFitToPagesHeight(PrintHelperUtil.getScaleToHeight());
options.setAllPages(true);
options.setRangeFrom(1);
@@ -149,5 +151,16 @@
public PrintOptions getPrintOptions() {
return options;
}
+
+ @Override
+ public void setScaleFactor(int scaleFactor) {
+ options.setScaleFactor(scaleFactor) ;
+ }
+
+ @Override
+ public void setScaleToWidthHeight(int width, int height) {
+ options.setFitToPagesWidth(width);
+ options.setFitToPagesHeight(height);
+ }
}
#P org.eclipse.gmf.runtime.common.ui.printing
Index: src/org/eclipse/gmf/runtime/common/ui/printing/IPrintHelper.java
===================================================================
RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.common.ui.printing/src/org/eclipse/gmf/runtime/common/ui/printing/IPrintHelper.java,v
retrieving revision 1.3
diff -u -r1.3 IPrintHelper.java
--- src/org/eclipse/gmf/runtime/common/ui/printing/IPrintHelper.java 3 Oct 2006 14:54:47 -0000 1.3
+++ src/org/eclipse/gmf/runtime/common/ui/printing/IPrintHelper.java 18 Apr 2008 15:39:17 -0000
@@ -152,4 +152,21 @@
*/
void setDlgPaperSize(int index, double width, double length);
+ /**
+ * Preserve the scale factor that the user enters in the preview or print
+ * dialogs.
+ *
+ * @param scaleFactor a zoom factor integer value greater than 0.
+ */
+ void setScaleFactor(int scaleFactor);
+
+ /**
+ * Preserve the width and height scale factors
+ *
+ * @param width scale to number of pages wide
+ * @param height scale to number of pages high
+ */
+ void setScaleToWidthHeight(int width, int height);
+
+
}
#P org.eclipse.gmf.runtime.diagram.ui.printing
Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/util/PrintHelperUtil.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/util/PrintHelperUtil.java,v
retrieving revision 1.1
diff -u -r1.1 PrintHelperUtil.java
--- src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/util/PrintHelperUtil.java 7 Mar 2008 16:51:34 -0000 1.1
+++ src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/util/PrintHelperUtil.java 18 Apr 2008 15:39:19 -0000
@@ -37,12 +37,45 @@
import org.eclipse.swt.widgets.Shell;
/**
- * Helper to assist in making an offscreen diagram suitable for printing or
+ * Helper to assist in making an off screen diagram suitable for printing or
* previewing.
*
* @author James Bruck (jbruck)
*/
public class PrintHelperUtil {
+
+ //
+ // The following printing attributes are saved across
+ // the preview and print dialogs.
+ //
+ private static int scaleFactor = 100;
+ private static int scaleWidth = 1;
+ private static int scaleHeight = 1;
+
+ public static int getScale() {
+ return scaleFactor;
+ }
+
+ public static void setScale(int scale) {
+ scaleFactor = scale;
+ }
+
+ public static int getScaleToWidth() {
+ return scaleWidth;
+ }
+
+ public static void setScaleToWidth(int width) {
+ scaleWidth = width;
+ }
+
+ public static int getScaleToHeight() {
+ return scaleHeight;
+ }
+
+ public static void setScaleToHeight(int height) {
+ scaleHeight = height;
+ }
+
/**
* Creates a DiagramEditPart
given the Diagram
* without opening an editor.
@@ -293,4 +326,5 @@
return pageBreakBounds;
}
+
}
Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/util/DiagramPrinterHelper.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/util/DiagramPrinterHelper.java,v
retrieving revision 1.1
diff -u -r1.1 DiagramPrinterHelper.java
--- src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/util/DiagramPrinterHelper.java 7 Mar 2008 16:51:34 -0000 1.1
+++ src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/util/DiagramPrinterHelper.java 18 Apr 2008 15:39:19 -0000
@@ -37,10 +37,8 @@
*
* Basic functionality was factored into this class from the DiagramPrinterUtil.
* This class and its specializing classes:
- * JPSDiagramPrinterHelper and SWTDiagramPrinterHelper will be subject to change
- * during phase 2 of printing enhancement changes.
*
- * @author jbruck
+ * @author James Bruck (jbruck)
*/
public class DiagramPrinterHelper {
@@ -160,10 +158,24 @@
} else {
helper.setDlgPaperSize(storedPageType.getIndex(), 0, 0);
}
- }
+ }
+ helper.setScaleFactor(PrintHelperUtil.getScale());
+ helper.setScaleToWidthHeight(PrintHelperUtil.getScaleToWidth(), PrintHelperUtil.getScaleToHeight());
printerData = helper.openPrintDlg(diagramNames);
+ if (printerData != null) {
+ if (helper.getDlgScalePercent() != -1) {
+ PrintHelperUtil.setScale(helper.getDlgScalePercent());
+ }
+ if (helper.getDlgScaleFitToM() != -1) {
+ PrintHelperUtil.setScaleToWidth(helper.getDlgScaleFitToM());
+ }
+ if (helper.getDlgScaleFitToN() != -1) {
+ PrintHelperUtil.setScaleToHeight(helper.getDlgScaleFitToN());
+ }
+ }
+
return printerData;
}
Index: src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/printpreview/PrintPreviewHelper.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/printpreview/PrintPreviewHelper.java,v
retrieving revision 1.15
diff -u -r1.15 PrintPreviewHelper.java
--- src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/printpreview/PrintPreviewHelper.java 8 Apr 2008 02:16:31 -0000 1.15
+++ src/org/eclipse/gmf/runtime/diagram/ui/printing/internal/printpreview/PrintPreviewHelper.java 18 Apr 2008 15:39:19 -0000
@@ -11,6 +11,7 @@
package org.eclipse.gmf.runtime.diagram.ui.printing.internal.printpreview;
+
import java.util.ArrayList;
import java.util.List;
@@ -70,6 +71,7 @@
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.ui.IEditorPart;
@@ -279,6 +281,7 @@
/**
* The print preview helper is capable of showing zoom input.
+ * userScale is a value between 0 and 1.
*/
protected double userScale = 1;
@@ -337,6 +340,8 @@
public void doPrintPreview(IPrintActionHelper prActionHelper) {
this.printActionHelper = prActionHelper;
+ setUserScale(PrintHelperUtil.getScale());
+
if (getDiagramEditorPart() == null) {
MessageDialog
.openInformation(PlatformUI.getWorkbench()
@@ -413,6 +418,7 @@
public void widgetSelected(SelectionEvent e) {
//should not be enabled
Assert.isNotNull(printActionHelper);
+
printActionHelper
.doPrint(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()
@@ -470,11 +476,8 @@
if (userY < 0)
userY = 0;
}
-
- updateLeftRightUpDownButtonsForToolbar();
-
- updateCompositeForNumberOfColumns(numberOfRowsToDisplay,
- numberOfColumnsToDisplay);
+
+ refreshComposite();
}
@@ -553,9 +556,7 @@
public void widgetSelected(SelectionEvent e) {
if (userX > 0) {
userX--;
- updateCompositeForNumberOfColumns(numberOfRowsToDisplay,
- numberOfColumnsToDisplay);
- updateLeftRightUpDownButtonsForToolbar();
+ refreshComposite();
}
}
@@ -589,9 +590,7 @@
//check for max pages to be safe
if (!(userX + numberOfColumnsToDisplay + 1 > getTotalNumberOfColumns())) {
userX++;
- updateCompositeForNumberOfColumns(numberOfRowsToDisplay,
- numberOfColumnsToDisplay);
- updateLeftRightUpDownButtonsForToolbar();
+ refreshComposite();
}
}
@@ -615,9 +614,7 @@
public void widgetSelected(SelectionEvent e) {
if (userY > 0) {
userY--;
- updateCompositeForNumberOfColumns(numberOfRowsToDisplay,
- numberOfColumnsToDisplay);
- updateLeftRightUpDownButtonsForToolbar();
+ refreshComposite();
}
}
@@ -641,9 +638,7 @@
public void widgetSelected(SelectionEvent e) {
if (!(userY + numberOfRowsToDisplay + 1 > getTotalNumberOfRows())) {
userY++;
- updateCompositeForNumberOfColumns(numberOfRowsToDisplay,
- numberOfColumnsToDisplay);
- updateLeftRightUpDownButtonsForToolbar();
+ refreshComposite();
}
}
@@ -654,7 +649,39 @@
widgetSelected(e);
}
});
+
+ new ToolItem(bar, SWT.SEPARATOR);
+
+ ToolItem separator = new ToolItem(bar, SWT.SEPARATOR);
+ Text textField = new Text(bar, SWT.SINGLE | SWT.BORDER);
+ textField.setText("XXXXX");//$NON-NLS-1$
+ textField.setEnabled(true);
+ textField.pack();
+ textField.setText(getDisplayScale(PrintHelperUtil.getScale()));
+
+ separator.setWidth(textField.getBounds().width);
+ separator.setControl(textField);
+
+ textField.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ // do nothing.
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ String scaleFactor = ((Text) e.getSource()).getText();
+ int percentageIndex = scaleFactor.indexOf("%"); //$NON-NLS-1$
+ if (percentageIndex > 0) {
+ scaleFactor = scaleFactor.substring(0, percentageIndex);
+ }
+ int scalePercentage = Integer.parseInt(scaleFactor);
+ setUserScale(scalePercentage);
+ refreshComposite();
+ ((Text) e.getSource()).setText(getDisplayScale(scalePercentage));
+ }
+ });
+
new ToolItem(bar, SWT.SEPARATOR);
closeTool = new ToolItem(bar, SWT.NULL);
closeTool.setToolTipText(DiagramUIPrintingMessages.PrintPreview_CloseToolItem);
@@ -690,17 +717,16 @@
composite = new Composite(body, SWT.NULL);
composite.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
-
- updateCompositeForNumberOfColumns(numberOfRowsToDisplay, numberOfColumnsToDisplay);
-
- updateLeftRightUpDownButtonsForToolbar();
+
+ refreshComposite();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
-
+
+ dispose();
shell.dispose();
}
@@ -926,6 +952,17 @@
}
/**
+ * A convenience method for refreshing the displayed image in the preview.
+ */
+ private void refreshComposite(){
+
+ updateCompositeForNumberOfColumns(numberOfRowsToDisplay,
+ numberOfColumnsToDisplay);
+
+ updateLeftRightUpDownButtonsForToolbar();
+ }
+
+ /**
* Draw the composite centered on the body based on the number of columns.
* Also calls the method to make the images and insert them into the
* composite.
@@ -1137,13 +1174,14 @@
* displaying in the print preview.
*/
protected void drawPage(Graphics g, GC gc, float scale, int row, int col, PageMargins margins) {
+
org.eclipse.draw2d.geometry.Point pageSize = PageInfoHelper
- .getPageSize(getPreferenceStore(), false, getMapMode());
+ .getPageSize(getPreferenceStore(), false, getMapMode());
g.pushState();
Rectangle bounds = getBounds();
-
+
int scaledPageSizeWidth = (int)(pageSize.x/userScale) ;
int scaledPageSizeHeight = (int)(pageSize.y/userScale) ;
@@ -1271,9 +1309,25 @@
ScaledGraphics scaledGraphics) {
return new MapModeGraphics(scaledGraphics, getMapMode());
}
-
- public void setUserScale(double userScale){
- this.userScale = userScale;
+
+ /**
+ * Sets the scale factor.
+ *
+ * @param scale : valid input is an integer larger than 0 representing a scale percentage
+ */
+ private void setUserScale(int scale){
+ userScale = scale/100f;
+ PrintHelperUtil.setScale(scale);
}
-
+
+ /**
+ * Prepare a string appropriate to show the scale factor to the user.
+ *
+ * @param scale the scale factor, an integer greater than 0.
+ * @return A string of the scale factor to be displayed to the user.
+ */
+ private String getDisplayScale(int scale) {
+ return String.valueOf(scale) + "%"; //$NON-NLS-1$
+ }
+
}
\ No newline at end of file