You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ay...@apache.org on 2006/11/10 18:00:33 UTC
svn commit: r473392 [2/3] - in
/incubator/harmony/enhanced/classlib/trunk/modules:
beans/src/main/java/java/beans/beancontext/
print/src/main/java/common/javax/print/attribute/
print/src/main/java/common/org/apache/harmony/x/print/
print/src/main/java/...
Modified: incubator/harmony/enhanced/classlib/trunk/modules/print/src/main/java/common/org/apache/harmony/x/print/ServiceUIDialog.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/print/src/main/java/common/org/apache/harmony/x/print/ServiceUIDialog.java?view=diff&rev=473392&r1=473391&r2=473392
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/print/src/main/java/common/org/apache/harmony/x/print/ServiceUIDialog.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/print/src/main/java/common/org/apache/harmony/x/print/ServiceUIDialog.java Fri Nov 10 09:00:32 2006
@@ -14,10 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/**
- * @author Irina A. Arkhipets
- * @version $Revision: 1.3 $
- */
/*
* ServiceUIDialog class - the class for the PrintService selecting
@@ -168,1889 +164,1892 @@
public class ServiceUIDialog extends ServiceUIDialogTemplate {
-// State of dialog:
-public static int APPROVE_PRINT = 1; // OK button was pressed
-public static int CANSEL_PRINT = -1; // Cancel button was pressed
-public static int SETUP_ERROR = 2; // Dialog Setup was finished with
- // error, dialog can not be shown
-public static int SETUP_OK = 3; // Dialog setup was OK,
- // you can show the dialog
-int dialogResult = 0; // Current dialog status
-
-// Dialog type:
-public static int PRINT_DIALOG = 1; // Dialog for PrintService selecting,
- // all dialog tabs are visible
-public static int PAGE_DIALOG = 2; // Page setup dialog:
- // only PageSetup dialog tab is visible
-private int dialogType = PRINT_DIALOG; // dialog type
-
-PrintService [] services = null; // Print services array for the choice
-
-private DocFlavor flavor = null; // DocFlavor for the dialog
-
-private PrintRequestAttributeSet attrs = null;
- // AttributeSet for the dialog creation
-private PrintRequestAttributeSet newAttrs = null;
- // Result AttributeSet
-
-PrintService myService = null; // Last selected PrintService
-
-// Button groups:
-ButtonGroup prnRngGrp = null;
-ButtonGroup orientGrp = null;
-ButtonGroup colorGrp = null;
-ButtonGroup sidesGrp = null;
-ButtonGroup qualGrp = null;
-
-// Last selected Orientation
-OrientationRequested lastOrient = null;
-
-// True means that dialog fields were not initialized yet.
-boolean firstUse = true;
-
-// Do we have permitions for the Destination attribute using?
-private Permission destPermission =
- new FilePermission("<<ALL FILES>>", "read,write");
-
-//---------------------------------------------------------------------
-/*
- * Constructor for the PRINT_DIALOG dialog type.
- * The dialog is modal.
- * It can be called from javax.print.ServiceUI.printDialog(...) and from
- * printDialog(), printDialog(PrintRequestAttributeSet) methods of default
- * java.awt.print.PrinterJob class implementation.
- *
- * Parameters:
- * gc - GraphicsConfiguration to select screen. If gc is null, default screen
- * is used.
- * x - x location of the dialog in screen coordinates
- * y - y location of the dialog in screen coordinates
- * services - PrintServices array to be browsable (should be non-null)
- * defPrintService - initially selected PrintService index in services array
- * (should be more then 0 and less then services array
- * length)
- * flavor - printed DocFlavor (may be null)
- * attrs - Initial print request attribute set. It can not be null, but may be
- * empty. On output this attribute set reflects changes made by user.
- * owner - dialog owner, should be Frame or Dialog.
- *
- * Throws:
- * HeadlessException if current graphics environment is headless
- *
- * Set dialogResult to SETUP_ERROR if HeadlessException was thrown, owner is
- * not Frame or Dialog object, services array is null or empty, defServiceIndex
- * is incorrect or attrs is null; set dialogResult to SETUP_OK otherwise.
-*/
-public ServiceUIDialog(GraphicsConfiguration gc,
- int x,
- int y,
- PrintService[] dialogServices,
- int defServiceIndex,
- DocFlavor dialogFlavor,
- PrintRequestAttributeSet dialogAttrs,
- Window owner)
-{
- if (GraphicsEnvironment.isHeadless()) {
- dialogResult = SETUP_ERROR;
- throw new HeadlessException();
- }
-
- if (owner instanceof Frame) {
- printDialog = new JDialog((Frame)owner, "Print", true, gc);
- } else if(owner instanceof Dialog) {
- printDialog=new JDialog((Dialog)owner, "Print", true, gc);
- } else {
- dialogResult = SETUP_ERROR;
- }
-
- if (printDialog != null) {
- printDialog.setSize(542, 444);
- printDialog.setLocation(x, y);
- printDialog.setContentPane(getPanel());
- printDialog.setResizable(false);
- dialogResult = setup(dialogServices,
- defServiceIndex,
- dialogFlavor,
- dialogAttrs);
- }
-}
-
-/*
- * Constructor for the PAGE_DIALOG dialog type.
- * The dialog is modal.
- * It can be called from pageDialog(), pageDialog(PageFormat) methods of
- * default java.awt.print.PrinterJob class implementation.
- *
- * Parameters:
- * gc - GraphicsConfiguration to select screen. If gc is null, default screen
- * is used.
- * x - x location of the dialog in screen coordinates
- * y - y location of the dialog in screen coordinates
- * aService - print service for this page dialog
- * attrs - initial print request attribute set. It can not be null, but may be
- * empty. On output this attribute set reflects changes made by user.
- * Attributes not related with page foemat settings are ignored.
- * owner - dialog owner, should be Frame or Dialog.
- *
- * Throws:
- * HeadlessException if current graphics environment is headless
- *
- * Set dialogResult to SETUP_ERROR if HeadlessException was thrown, owner is
- * not Frame or Dialog object, aService or attrs is null.
-*/
-public ServiceUIDialog(GraphicsConfiguration gc,
- int x,
- int y,
- PrintService aService,
- PrintRequestAttributeSet dialogAttrs,
- Window owner) {
-
- dialogType = PAGE_DIALOG;
-
- if (GraphicsEnvironment.isHeadless()) {
- dialogResult = SETUP_ERROR;
- throw new HeadlessException();
+ // State of dialog:
+ public static int APPROVE_PRINT = 1; // OK button was pressed
+ public static int CANSEL_PRINT = -1; // Cancel button was pressed
+ public static int SETUP_ERROR = 2; // Dialog Setup was finished with
+ // error, dialog can not be shown
+ public static int SETUP_OK = 3; // Dialog setup was OK,
+ // you can show the dialog
+ int dialogResult = 0; // Current dialog status
+
+ // Dialog type:
+ public static int PRINT_DIALOG = 1; // Dialog for PrintService selecting,
+ // all dialog tabs are visible
+ public static int PAGE_DIALOG = 2; // Page setup dialog:
+ // only PageSetup dialog tab is visible
+ private int dialogType = PRINT_DIALOG; // dialog type
+
+ PrintService [] services = null; // Print services array for the choice
+
+ private DocFlavor flavor = null; // DocFlavor for the dialog
+
+ private PrintRequestAttributeSet attrs = null;
+ // AttributeSet for the dialog creation
+ private PrintRequestAttributeSet newAttrs = null;
+ // Result AttributeSet
+
+ PrintService myService = null; // Last selected PrintService
+
+ // Button groups:
+ ButtonGroup prnRngGrp = null;
+ ButtonGroup orientGrp = null;
+ ButtonGroup colorGrp = null;
+ ButtonGroup sidesGrp = null;
+ ButtonGroup qualGrp = null;
+
+ // Last selected Orientation
+ OrientationRequested lastOrient = null;
+
+ // True means that dialog fields were not initialized yet.
+ boolean firstUse = true;
+
+ // Do we have permitions for the Destination attribute using?
+ private Permission destPermission =
+ new FilePermission("<<ALL FILES>>", "read,write");
+
+ //---------------------------------------------------------------------
+ /*
+ * Constructor for the PRINT_DIALOG dialog type.
+ * The dialog is modal.
+ * It can be called from javax.print.ServiceUI.printDialog(...) and from
+ * printDialog(), printDialog(PrintRequestAttributeSet) methods of default
+ * java.awt.print.PrinterJob class implementation.
+ *
+ * Parameters:
+ * gc - GraphicsConfiguration to select screen. If gc is null, default screen
+ * is used.
+ * x - x location of the dialog in screen coordinates
+ * y - y location of the dialog in screen coordinates
+ * services - PrintServices array to be browsable (should be non-null)
+ * defPrintService - initially selected PrintService index in services array
+ * (should be more then 0 and less then services array
+ * length)
+ * flavor - printed DocFlavor (may be null)
+ * attrs - Initial print request attribute set. It can not be null, but may be
+ * empty. On output this attribute set reflects changes made by user.
+ * owner - dialog owner, should be Frame or Dialog.
+ *
+ * Throws:
+ * HeadlessException if current graphics environment is headless
+ *
+ * Set dialogResult to SETUP_ERROR if HeadlessException was thrown, owner is
+ * not Frame or Dialog object, services array is null or empty, defServiceIndex
+ * is incorrect or attrs is null; set dialogResult to SETUP_OK otherwise.
+ */
+ public ServiceUIDialog(GraphicsConfiguration gc,
+ int x,
+ int y,
+ PrintService[] dialogServices,
+ int defServiceIndex,
+ DocFlavor dialogFlavor,
+ PrintRequestAttributeSet dialogAttrs,
+ Window owner)
+ {
+ if (GraphicsEnvironment.isHeadless()) {
+ dialogResult = SETUP_ERROR;
+ throw new HeadlessException();
+ }
+
+ if (owner instanceof Frame) {
+ printDialog = new JDialog((Frame)owner, "Print", true, gc);
+ } else if(owner instanceof Dialog) {
+ printDialog=new JDialog((Dialog)owner, "Print", true, gc);
+ } else {
+ dialogResult = SETUP_ERROR;
+ }
+
+ if (printDialog != null) {
+ printDialog.setSize(542, 444);
+ printDialog.setLocation(x, y);
+ printDialog.setContentPane(getPanel());
+ printDialog.setResizable(false);
+ dialogResult = setup(dialogServices,
+ defServiceIndex,
+ dialogFlavor,
+ dialogAttrs);
+ }
}
-
- if (owner instanceof Frame) {
- printDialog = new JDialog((Frame)owner, "Print", true, gc);
- } else if (owner instanceof Dialog) {
- printDialog=new JDialog((Dialog)owner, "Print", true, gc);
- } else {
- dialogResult = SETUP_ERROR;
+
+ /*
+ * Constructor for the PAGE_DIALOG dialog type.
+ * The dialog is modal.
+ * It can be called from pageDialog(), pageDialog(PageFormat) methods of
+ * default java.awt.print.PrinterJob class implementation.
+ *
+ * Parameters:
+ * gc - GraphicsConfiguration to select screen. If gc is null, default screen
+ * is used.
+ * x - x location of the dialog in screen coordinates
+ * y - y location of the dialog in screen coordinates
+ * aService - print service for this page dialog
+ * attrs - initial print request attribute set. It can not be null, but may be
+ * empty. On output this attribute set reflects changes made by user.
+ * Attributes not related with page foemat settings are ignored.
+ * owner - dialog owner, should be Frame or Dialog.
+ *
+ * Throws:
+ * HeadlessException if current graphics environment is headless
+ *
+ * Set dialogResult to SETUP_ERROR if HeadlessException was thrown, owner is
+ * not Frame or Dialog object, aService or attrs is null.
+ */
+ public ServiceUIDialog(GraphicsConfiguration gc,
+ int x,
+ int y,
+ PrintService aService,
+ PrintRequestAttributeSet dialogAttrs,
+ Window owner) {
+
+ dialogType = PAGE_DIALOG;
+
+ if (GraphicsEnvironment.isHeadless()) {
+ dialogResult = SETUP_ERROR;
+ throw new HeadlessException();
+ }
+
+ if (owner instanceof Frame) {
+ printDialog = new JDialog((Frame)owner, "Print", true, gc);
+ } else if (owner instanceof Dialog) {
+ printDialog=new JDialog((Dialog)owner, "Print", true, gc);
+ } else {
+ dialogResult = SETUP_ERROR;
+ }
+
+ if (printDialog != null) {
+ printDialog.setSize(530, 400);
+ printDialog.setLocation(x, y);
+ printDialog.setContentPane(getPageDialogPanel());
+ printDialog.setResizable(false);
+ dialogResult = pageSetup(aService, dialogAttrs);
+ }
}
-
- if (printDialog != null) {
- printDialog.setSize(530, 400);
- printDialog.setLocation(x, y);
- printDialog.setContentPane(getPageDialogPanel());
- printDialog.setResizable(false);
- dialogResult = pageSetup(aService, dialogAttrs);
+
+ // ---------------------------------------------------------------------
+ /*
+ * Shows the dialog if the dialog fields were successfully initialized before
+ */
+ public void show() {
+ if (dialogResult == SETUP_OK) {
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ printDialog.show();
+ return null;
+ }
+ });
+ }
}
-}
-
-// ---------------------------------------------------------------------
-/*
- * Shows the dialog if the dialog fields were successfully initialized before
-*/
-public void show() {
- if (dialogResult == SETUP_OK) {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- printDialog.show();
- return null;
+
+ //---------------------------------------------------------------------
+ /*
+ * Initialization for PRINT_DIALOG dialog
+ *
+ * Parameters:
+ * services - PrintServices array to be browsable
+ * defPrintService - initially selected PrintService index in services array
+ * flavor - printed DocFlavor (may be null)
+ * attrs - Initial print request attribute set.
+ *
+ * Set dialogResult to SETUP_ERROR services array is null or empty,
+ * defServiceIndex is incorrect or attrs is null; set dialogResult to SETUP_OK
+ * otherwise.
+ */
+ private int setup(PrintService[] dialogServices,
+ int defServiceIndex,
+ DocFlavor dialogFlavor,
+ PrintRequestAttributeSet dialogAttrs)
+ {
+ if ((dialogServices == null)
+ || (dialogServices.length <= 0)
+ || (defServiceIndex < 0)
+ || (defServiceIndex >= dialogServices.length)
+ || (dialogAttrs == null)) {
+ return SETUP_ERROR;
+ }
+
+ services = dialogServices;
+ flavor = dialogFlavor;
+ attrs = dialogAttrs;
+ this.myService = services[defServiceIndex];
+ if (servicesBox.getItemCount() <= 0) {
+ for (int i = 0; i < services.length; i++) {
+ servicesBox.addItem(services[i].getName());
}
- });
- }
-}
-
-//---------------------------------------------------------------------
-/*
- * Initialization for PRINT_DIALOG dialog
- *
- * Parameters:
- * services - PrintServices array to be browsable
- * defPrintService - initially selected PrintService index in services array
- * flavor - printed DocFlavor (may be null)
- * attrs - Initial print request attribute set.
- *
- * Set dialogResult to SETUP_ERROR services array is null or empty,
- * defServiceIndex is incorrect or attrs is null; set dialogResult to SETUP_OK
- * otherwise.
-*/
-private int setup(PrintService[] dialogServices,
- int defServiceIndex,
- DocFlavor dialogFlavor,
- PrintRequestAttributeSet dialogAttrs)
-{
- if ((dialogServices == null)
- || (dialogServices.length <= 0)
- || (defServiceIndex < 0)
- || (defServiceIndex >= dialogServices.length)
- || (dialogAttrs == null)) {
- return SETUP_ERROR;
- }
-
- services = dialogServices;
- flavor = dialogFlavor;
- attrs = dialogAttrs;
- this.myService = services[defServiceIndex];
- if (servicesBox.getItemCount() <= 0) {
- for (int i = 0; i < services.length; i++) {
- servicesBox.addItem(services[i].getName());
}
+ newAttrs = new HashPrintRequestAttributeSet(attrs);
+
+ prepareDialog(); // Prepare dialog
+ servicesBox.setSelectedIndex(defServiceIndex);
+ // Select default PrintService and
+ // initialize dialog fields
+ firstUse = false;
+ return SETUP_OK;
}
- newAttrs = new HashPrintRequestAttributeSet(attrs);
-
- prepareDialog(); // Prepare dialog
- servicesBox.setSelectedIndex(defServiceIndex);
- // Select default PrintService and
- // initialize dialog fields
- firstUse = false;
- return SETUP_OK;
-}
-
-/*
- * Initialization for PAGE_DIALOG dialog
- *
- * Parameters:
- * aService - print service for this page dialog
- * attrs - initial print request attribute set.
- *
- * Set dialogResult to SETUP_ERROR if aService or attrs is null.
-*/
-private int pageSetup(PrintService aService,
- PrintRequestAttributeSet requestAttrs)
-{
- myService = (aService == null)
- ? PrintServiceLookup.lookupDefaultPrintService()
- : aService;
-
- if ((requestAttrs == null) || (aService == null)) {
- return SETUP_ERROR;
- }
-
- attrs = requestAttrs;
- newAttrs = new HashPrintRequestAttributeSet(attrs);
- myService = aService;
-
- prepareDialog(); // prepare dialog
- fillPageSetupFields(); // Initialize dialog fields
- firstUse = false;
- return SETUP_OK;
-}
-
-/*
- * Dialog preparing: create button groups, add listeners to components, etc.
- * This method logically should belong to the ServiceUIDialogTemplate class,
- * however I place it in ServiceUIDialog because ServiceUIDialogTemplated was
- * generated automatically by Eclipse Visual Editor
-*/
-private void prepareDialog() {
- JRadioButton [] orientArr = new JRadioButton [] {
- portraitBtn, landscapeBtn, rvportraitBtn, rvlandscapeBtn };
- organizeButtonGroup(orientGrp, orientArr);
-
- sourceBox.setVisible(false);
- sourceLabel.setVisible(false);
- if (dialogType == PRINT_DIALOG) {
- JRadioButton [] rangesArr = new JRadioButton[] {
- allRngBtn, pageRngBtn };
- JRadioButton [] colorsArr = new JRadioButton[] { monoBtn, colorBtn };
- JRadioButton [] sidesArr = new JRadioButton[] {
- oneSideBtn, tumbleBtn, duplexBtn };
- JRadioButton [] qualityArr = new JRadioButton[] {
- draftBtn, normalBtn, highBtn };
-
- organizeButtonGroup(prnRngGrp, rangesArr);
- organizeButtonGroup(colorGrp, colorsArr);
- organizeButtonGroup(sidesGrp,sidesArr);
- organizeButtonGroup(qualGrp, qualityArr);
+ /*
+ * Initialization for PAGE_DIALOG dialog
+ *
+ * Parameters:
+ * aService - print service for this page dialog
+ * attrs - initial print request attribute set.
+ *
+ * Set dialogResult to SETUP_ERROR if aService or attrs is null.
+ */
+ private int pageSetup(PrintService aService,
+ PrintRequestAttributeSet requestAttrs)
+ {
+ myService = (aService == null)
+ ? PrintServiceLookup.lookupDefaultPrintService()
+ : aService;
- propertiesBtn.setVisible(false);
-
- prtSpinner.setModel(new SpinnerNumberModel(1, 1, 100, 1));
+ if ((requestAttrs == null) || (aService == null)) {
+ return SETUP_ERROR;
+ }
- cpSpinner.addChangeListener(new CopiesChangeListener());
- allRngBtn.addChangeListener(new PagesButtonChangeListener());
- pageRngBtn.addChangeListener(new PagesButtonChangeListener());
- servicesBox.addActionListener(new ServicesActionListener());
+ attrs = requestAttrs;
+ newAttrs = new HashPrintRequestAttributeSet(attrs);
+ myService = aService;
+
+ prepareDialog(); // prepare dialog
+ fillPageSetupFields(); // Initialize dialog fields
+ firstUse = false;
+ return SETUP_OK;
}
-
- portraitBtn.addChangeListener(new OrientationChangeListener());
- landscapeBtn.addChangeListener(new OrientationChangeListener());
- rvportraitBtn.addChangeListener(new OrientationChangeListener());
- rvlandscapeBtn.addChangeListener(new OrientationChangeListener());
- printBtn.addActionListener(new OKButtonListener());
- cancelBtn.addActionListener(new cancelButtonListener());
- printDialog.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent event) {
- dialogResult = CANSEL_PRINT;
+ /*
+ * Dialog preparing: create button groups, add listeners to components, etc.
+ * This method logically should belong to the ServiceUIDialogTemplate class,
+ * however I place it in ServiceUIDialog because ServiceUIDialogTemplated was
+ * generated automatically by Eclipse Visual Editor
+ */
+ private void prepareDialog() {
+ JRadioButton [] orientArr = new JRadioButton [] {
+ portraitBtn, landscapeBtn, rvportraitBtn, rvlandscapeBtn };
+ organizeButtonGroup(orientGrp, orientArr);
+
+ sourceBox.setVisible(false);
+ sourceLabel.setVisible(false);
+
+ if (dialogType == PRINT_DIALOG) {
+ JRadioButton [] rangesArr = new JRadioButton[] {
+ allRngBtn, pageRngBtn };
+ JRadioButton [] colorsArr = new JRadioButton[] { monoBtn, colorBtn };
+ JRadioButton [] sidesArr = new JRadioButton[] {
+ oneSideBtn, tumbleBtn, duplexBtn };
+ JRadioButton [] qualityArr = new JRadioButton[] {
+ draftBtn, normalBtn, highBtn };
+
+ organizeButtonGroup(prnRngGrp, rangesArr);
+ organizeButtonGroup(colorGrp, colorsArr);
+ organizeButtonGroup(sidesGrp,sidesArr);
+ organizeButtonGroup(qualGrp, qualityArr);
+
+ propertiesBtn.setVisible(false);
+
+ prtSpinner.setModel(new SpinnerNumberModel(1, 1, 100, 1));
+
+ cpSpinner.addChangeListener(new CopiesChangeListener());
+ allRngBtn.addChangeListener(new PagesButtonChangeListener());
+ pageRngBtn.addChangeListener(new PagesButtonChangeListener());
+ servicesBox.addActionListener(new ServicesActionListener());
}
- });
-}
-
-/*
- * Adds all JRadioButtons from "buttons" array to "group" ButtonGroup
- */
-private void organizeButtonGroup(ButtonGroup group, JRadioButton[] buttons) {
- group = new ButtonGroup();
- for (int i = 0; i< buttons.length; i++) {
- group.add(buttons[i]);
- }
-}
-
-//---------------------------------------------------------------------
-
-/*
- * ActionListener for the PrintServices combo box:
- * Update all dialog fields if new print service is selected.
- * As the user browses print services, attributes and values are copied to new
- * display. If user select a print service which does not support particular
- * attribute value, default attribute for this print service is used instead.
- * Unsupported attributes fields are disabled for the selected print service.
-*/
-class ServicesActionListener implements ActionListener {
-public void actionPerformed(ActionEvent e) {
- if (firstUse
- || (myService != services[servicesBox.getSelectedIndex()])) {
- myService = services[servicesBox.getSelectedIndex()];
-
- fillGeneralFields(); // General standard tab
- fillPageSetupFields(); // Page Setup standard tab
- fillAppearanceFields(); // Appearance standard tab
- fillVendorSuppliedTab(); // vendor supplied tab (if exists)
- }
-}
-} /* End of ServiceActionListener class */
-
-//---------------------------------------------------------------------
-/*
- *General tab fields filling after PrintService selecting
-*/
-void fillGeneralFields() {
- fillStatusField();
- fillTypeField();
- fillInfoField();
- filltoFileBox();
- fillCopiesFields();
- fillPrintRangeFields();
-}
-
-/*
- * "Status" field from "General" tab:
- * If selected print service does not support PrinterIsAcceptingJobs attribute,
- * "Status" field is empty. Otherwise, it is "Accepting jobs" if
- * PrinterIsAcceptingJob attribute for this print service is ACCEPTING_JOBS; or
- * "Not accepting jobs" if PrinterIsAcceptingJobs is NOT_ACCEPTING_JOBS.
-*/
-void fillStatusField() {
- String text;
- PrinterIsAcceptingJobs job = (PrinterIsAcceptingJobs)
- myService.getAttribute(PrinterIsAcceptingJobs.class);
- if (job != null) {
- text = job.equals(PrinterIsAcceptingJobs.ACCEPTING_JOBS)
- ? "Accepting jobs"
- : "Not accepting jobs";
- } else {
- text = "";
+
+ portraitBtn.addChangeListener(new OrientationChangeListener());
+ landscapeBtn.addChangeListener(new OrientationChangeListener());
+ rvportraitBtn.addChangeListener(new OrientationChangeListener());
+ rvlandscapeBtn.addChangeListener(new OrientationChangeListener());
+ printBtn.addActionListener(new OKButtonListener());
+ cancelBtn.addActionListener(new cancelButtonListener());
+
+ printDialog.addWindowListener(new WindowAdapter() {
+ public void windowClosing(WindowEvent event) {
+ dialogResult = CANSEL_PRINT;
+ }
+ });
}
-
- statusText.setText(text);
-}
-
-/*
- * "Type" field from "General" tab:
- * This field contains PrinterMakeAndModel attribute of selected print service
- * or is empty if service does not support PrinterMakeAndModel.
-*/
-void fillTypeField() {
- PrinterMakeAndModel type = (PrinterMakeAndModel)
- myService.getAttribute(PrinterMakeAndModel.class);
- typeText.setText(type == null ? "" : type.getValue());
-}
-
-/*
- * "Info" field from "General" tab:
- * This field contains PrinterInfo attribute of selected print service
- * or is empty if service does not support PrinterInfo.
-*/
-void fillInfoField() {
- PrinterInfo info = (PrinterInfo) myService.getAttribute(PrinterInfo.class);
- infoText.setText(info == null ? "" : info.getValue());
-}
-
-/*
- * "Print to file" combobox from "General" tab:
- * This combobox will be enabled if Destination attribute is supported by
- * selected print service and user can write to file.
-*/
-void filltoFileBox() {
- if (firstUse && attrs.containsKey(Destination.class)) {
- toFileBox.setSelected(true);
- }
- toFileBox.setEnabled(checkFilePermission(destPermission)
- && myService.isAttributeCategorySupported(Destination.class));
-}
-
-/*
- * Checks if the user has given permission
- */
-boolean checkFilePermission(Permission permission) {
- SecurityManager manager = System.getSecurityManager();
- if (manager != null) {
- try {
- manager.checkPermission(permission);
- return true;
- }
- catch(SecurityException e) {
- return false;
+
+ /*
+ * Adds all JRadioButtons from "buttons" array to "group" ButtonGroup
+ */
+ private void organizeButtonGroup(ButtonGroup group, JRadioButton[] buttons) {
+ group = new ButtonGroup();
+ for (int i = 0; i< buttons.length; i++) {
+ group.add(buttons[i]);
}
}
- return true;
-}
-
-/*
- * Copies and Collate fields
-*/
-void fillCopiesFields() {
- fillCopiesSpinner();
- fillCollateBox();
-}
-
-/*
- * "Number of copies" spinner from "General" tab:
- * It is enabled if selected printer supports Copies attribute. Maximum and
- * minimum values of the spinner are minimum and maximum supported Copies
- * values for selected print service.
-*/
-void fillCopiesSpinner() {
- boolean isEnabled = myService.isAttributeCategorySupported(Copies.class);
- copiesLabel.setEnabled(isEnabled);
- cpSpinner.setEnabled(isEnabled);
-
- if (firstUse && !isEnabled) {
- int value = (attrs.containsKey(Copies.class)
- ? ((Copies)(attrs.get(Copies.class))).getValue() : 1);
- cpSpinner.setModel(new SpinnerNumberModel(value, value, value, 1));
+ //---------------------------------------------------------------------
+
+ /*
+ * ActionListener for the PrintServices combo box:
+ * Update all dialog fields if new print service is selected.
+ * As the user browses print services, attributes and values are copied to new
+ * display. If user select a print service which does not support particular
+ * attribute value, default attribute for this print service is used instead.
+ * Unsupported attributes fields are disabled for the selected print service.
+ */
+ class ServicesActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ if (firstUse
+ || (myService != services[servicesBox.getSelectedIndex()])) {
+ myService = services[servicesBox.getSelectedIndex()];
+
+ fillGeneralFields(); // General standard tab
+ fillPageSetupFields(); // Page Setup standard tab
+ fillAppearanceFields(); // Appearance standard tab
+ fillVendorSuppliedTab(); // vendor supplied tab (if exists)
+ }
+ }
+ } /* End of ServiceActionListener class */
+
+ //---------------------------------------------------------------------
+ /*
+ *General tab fields filling after PrintService selecting
+ */
+ void fillGeneralFields() {
+ fillStatusField();
+ fillTypeField();
+ fillInfoField();
+ filltoFileBox();
+ fillCopiesFields();
+ fillPrintRangeFields();
}
-
- if (isEnabled) {
- int value = (firstUse && attrs.containsKey(Copies.class)
- ? ((Copies) (attrs.get(Copies.class))).getValue()
- : ((Integer) cpSpinner.getValue()).intValue());
- CopiesSupported supported = (CopiesSupported) myService
- .getSupportedAttributeValues(Copies.class, flavor, attrs);
- Copies defaul = (Copies)
- myService.getDefaultAttributeValue(Copies.class);
-
- if(supported == null) {
- /*
- * It is incorrect situation, however it is possible: Copies
- * category is supported, but there are no supported values. I
- * suppose that only default Copies value is supported in this
- * case. If default Copies value is null - I suppose that default
- * and supported value is 1 Copy only.
- */
- supported = new CopiesSupported( (defaul == null)
- ? defaul.getValue()
- : 1);
- }
-
- int [][] range = supported.getMembers();
-
- if (!supported.contains(value)) {
- value = (((defaul == null)
- || (!supported.contains(defaul.getValue())))
- ? range[0][0]
- : defaul.getValue());
+
+ /*
+ * "Status" field from "General" tab:
+ * If selected print service does not support PrinterIsAcceptingJobs attribute,
+ * "Status" field is empty. Otherwise, it is "Accepting jobs" if
+ * PrinterIsAcceptingJob attribute for this print service is ACCEPTING_JOBS; or
+ * "Not accepting jobs" if PrinterIsAcceptingJobs is NOT_ACCEPTING_JOBS.
+ */
+ void fillStatusField() {
+ String text;
+ PrinterIsAcceptingJobs job = (PrinterIsAcceptingJobs)
+ myService.getAttribute(PrinterIsAcceptingJobs.class);
+ if (job != null) {
+ text = job.equals(PrinterIsAcceptingJobs.ACCEPTING_JOBS)
+ ? "Accepting jobs"
+ : "Not accepting jobs";
+ } else {
+ text = "";
}
-
- cpSpinner.setModel(
- new SpinnerNumberModel(value, range[0][0], range[0][1], 1));
+
+ statusText.setText(text);
}
-}
-
-/*
- * Change listener for "Number of copies" spinner.
- * "Collate" combobox is enabled if Copies > 1 only
-*/
-class CopiesChangeListener implements ChangeListener {
- public void stateChanged(ChangeEvent e) {
- fillCollateBox();
+
+ /*
+ * "Type" field from "General" tab:
+ * This field contains PrinterMakeAndModel attribute of selected print service
+ * or is empty if service does not support PrinterMakeAndModel.
+ */
+ void fillTypeField() {
+ PrinterMakeAndModel type = (PrinterMakeAndModel)
+ myService.getAttribute(PrinterMakeAndModel.class);
+ typeText.setText(type == null ? "" : type.getValue());
}
-}
-
-/*
- * "Collate" combobox from "General" tab.
- * This box will be enabled if more then one SheetCollate attribute
- * is supported by selected print service and "Number of copies" value > 1
-*/
-void fillCollateBox() {
- boolean isSupported =
- myService.isAttributeCategorySupported(SheetCollate.class);
- SheetCollate [] supported = (SheetCollate []) (myService
- .getSupportedAttributeValues(SheetCollate.class, flavor, attrs));
- Attribute attr = attrs.get(SheetCollate.class);
- int spinnerValue = ((Integer) cpSpinner.getValue()).intValue();
-
- if ((supported == null) || !isSupported) {
- if (attrs.containsKey(SheetCollate.class)) {
- collateBox.setSelected(attr.equals(SheetCollate.COLLATED));
- }
- } else {
- boolean isValueSupported = myService.isAttributeValueSupported(
- SheetCollate.COLLATED, flavor, attrs);
- if (attrs.containsKey(SheetCollate.class) && isValueSupported) {
- collateBox.setSelected(attr.equals(SheetCollate.COLLATED));
- } else {
- Object defaul =
- myService.getDefaultAttributeValue(SheetCollate.class);
- collateBox.setSelected(defaul != null
- ? defaul.equals(SheetCollate.COLLATED)
- : true);
+
+ /*
+ * "Info" field from "General" tab:
+ * This field contains PrinterInfo attribute of selected print service
+ * or is empty if service does not support PrinterInfo.
+ */
+ void fillInfoField() {
+ PrinterInfo info = (PrinterInfo) myService.getAttribute(PrinterInfo.class);
+ infoText.setText(info == null ? "" : info.getValue());
+ }
+
+ /*
+ * "Print to file" combobox from "General" tab:
+ * This combobox will be enabled if Destination attribute is supported by
+ * selected print service and user can write to file.
+ */
+ void filltoFileBox() {
+ if (firstUse && attrs.containsKey(Destination.class)) {
+ toFileBox.setSelected(true);
}
+ toFileBox.setEnabled(checkFilePermission(destPermission)
+ && myService.isAttributeCategorySupported(Destination.class));
}
-
- collateBox.setEnabled(isSupported
- && (spinnerValue > 1)
- && (!(supported == null || supported.length <= 1)));
-}
-
-/*
- * "Print ranges" fields from "General" tab.
- * "From" and "to" text fields are enabled only if "Pages" radiobutton is
- * selected. If attr set does not contain PageRanges attribute, default value
- * is always "All".
-*/
-void fillPrintRangeFields() {
- if (firstUse) {
- if (attrs.containsKey(PageRanges.class)) {
- PageRanges aRange = (PageRanges) (attrs.get(PageRanges.class));
- int [][] range = aRange.getMembers();
- fromTxt.setText(range.length > 0
- ? Integer.toString(range[0][0]) : "1");
- toTxt.setText(range.length > 0
- ? Integer.toString(range[0][1]) : "1");
- pageRngBtn.setSelected(true);
- } else {
- allRngBtn.setSelected(true);
- fromTxt.setEnabled(false);
- toTxt.setEnabled(false);
- fromTxt.setText("1");
- toTxt.setText("1");
- toLabel.setEnabled(false);
+
+ /*
+ * Checks if the user has given permission
+ */
+ boolean checkFilePermission(Permission permission) {
+ SecurityManager manager = System.getSecurityManager();
+ if (manager != null) {
+ try {
+ manager.checkPermission(permission);
+ return true;
+ }
+ catch(SecurityException e) {
+ return false;
+ }
}
+ return true;
}
-}
-
-/*
- * Change listener for "Print Ranges" fields:
- * Range fields are enabled only if not all the pages should be printed, i.e.
- * if "Pages" button is selected.
- */
-class PagesButtonChangeListener implements ChangeListener {
-public void stateChanged(ChangeEvent e) {
- fromTxt.setEnabled(pageRngBtn.isSelected());
- toTxt.setEnabled(pageRngBtn.isSelected());
- toLabel.setEnabled(pageRngBtn.isSelected());
-}
-} /* End of PagesButtonChangeListener class */
-
-//---------------------------------------------------------------------
-/*
- * Page Setup fields filling after PrintService selecting
-*/
-void fillPageSetupFields() {
- fillMediaFields();
- fillOrientationFields();
- fillMarginsFields();
-}
-
-/*
- * "Size" and "Source" comboboxes from "Page Setup" tab.
- *
- * I made "Source" combobox invisible because it is unclear how to work with
- * two different Media comboboxes in one dialog (please, see comments in the
- * beginning of the ServiceUIDialog class for more details).
- * Probably, we will need to change it in the future.
- *
- * "Size" combobox contains all medias supported by the selected print service.
- * It is disabled if given service does not support Media attribute or
- * supported media list is empty.
-*/
-void fillMediaFields() {
- if (myService.isAttributeCategorySupported(Media.class)) {
- Media [] mediaList = (Media []) myService
- .getSupportedAttributeValues(Media.class, flavor, attrs);
- Media oldMedia = (sizeBox.getItemCount() <= 0)
- ? null
- : (Media)sizeBox.getSelectedItem();
-
- sizeBox.removeAllItems();
- if ((mediaList != null) && (mediaList.length > 0)) {
- for(int i = 0; i < mediaList.length; i++) {
- sizeBox.addItem(mediaList[i]);
- }
- selectMedia(oldMedia);
- }
- sizeBox.setEnabled((mediaList != null) && (mediaList.length > 0));
- sizeLabel.setEnabled((mediaList != null) && (mediaList.length > 0));
- } else {
- sizeBox.setEnabled(false);
- sizeLabel.setEnabled(false);
+
+ /*
+ * Copies and Collate fields
+ */
+ void fillCopiesFields() {
+ fillCopiesSpinner();
+ fillCollateBox();
}
- sizeBox.updateUI();
-}
-
-/*
- * Selects media in "Sizes" combobox. Selected media is previously
- * selected Media if it is supported by current print service.
- * Otherwise selected media Media from attrs (if it is supported) or default
- * Media for selected service.
-*/
-void selectMedia(Media oldMedia) {
- if (sizeBox.getItemCount() > 0) {
+
+ /*
+ * "Number of copies" spinner from "General" tab:
+ * It is enabled if selected printer supports Copies attribute. Maximum and
+ * minimum values of the spinner are minimum and maximum supported Copies
+ * values for selected print service.
+ */
+ void fillCopiesSpinner() {
+ boolean isEnabled = myService.isAttributeCategorySupported(Copies.class);
- /* if media was not set - get it from attribites */
- if ((oldMedia == null) && attrs.containsKey(Media.class)) {
- oldMedia = (Media) attrs.get(Media.class);
+ copiesLabel.setEnabled(isEnabled);
+ cpSpinner.setEnabled(isEnabled);
+
+ if (firstUse && !isEnabled) {
+ int value = (attrs.containsKey(Copies.class)
+ ? ((Copies)(attrs.get(Copies.class))).getValue() : 1);
+ cpSpinner.setModel(new SpinnerNumberModel(value, value, value, 1));
}
- sizeBox.setSelectedItem(oldMedia);
- if ((sizeBox.getSelectedIndex() < 0)
- || (!sizeBox.getSelectedItem().equals(oldMedia))) {
- Object media = myService.getDefaultAttributeValue(Media.class);
- if (media != null) {
- sizeBox.setSelectedItem(media);
+ if (isEnabled) {
+ int value = (firstUse && attrs.containsKey(Copies.class)
+ ? ((Copies) (attrs.get(Copies.class))).getValue()
+ : ((Integer) cpSpinner.getValue()).intValue());
+ CopiesSupported supported = (CopiesSupported) myService
+ .getSupportedAttributeValues(Copies.class, flavor, attrs);
+ Copies defaul = (Copies)
+ myService.getDefaultAttributeValue(Copies.class);
+
+ if(supported == null) {
+ /*
+ * It is incorrect situation, however it is possible: Copies
+ * category is supported, but there are no supported values. I
+ * suppose that only default Copies value is supported in this
+ * case. If default Copies value is null - I suppose that default
+ * and supported value is 1 Copy only.
+ */
+ supported = new CopiesSupported( (defaul == null)
+ ? defaul.getValue()
+ : 1);
}
+
+ int [][] range = supported.getMembers();
+
+ if (!supported.contains(value)) {
+ value = (((defaul == null)
+ || (!supported.contains(defaul.getValue())))
+ ? range[0][0]
+ : defaul.getValue());
+ }
+
+ cpSpinner.setModel(
+ new SpinnerNumberModel(value, range[0][0], range[0][1], 1));
+ }
+ }
+
+ /*
+ * Change listener for "Number of copies" spinner.
+ * "Collate" combobox is enabled if Copies > 1 only
+ */
+ class CopiesChangeListener implements ChangeListener {
+ public void stateChanged(ChangeEvent e) {
+ fillCollateBox();
}
+ }
+
+ /*
+ * "Collate" combobox from "General" tab.
+ * This box will be enabled if more then one SheetCollate attribute
+ * is supported by selected print service and "Number of copies" value > 1
+ */
+ void fillCollateBox() {
+ boolean isSupported =
+ myService.isAttributeCategorySupported(SheetCollate.class);
+ SheetCollate [] supported = (SheetCollate []) (myService
+ .getSupportedAttributeValues(SheetCollate.class, flavor, attrs));
+ Attribute attr = attrs.get(SheetCollate.class);
+ int spinnerValue = ((Integer) cpSpinner.getValue()).intValue();
- /* select first media if there is still no selection */
- if (sizeBox.getSelectedIndex() < 0) {
- sizeBox.setSelectedIndex(0);
+ if ((supported == null) || !isSupported) {
+ if (attrs.containsKey(SheetCollate.class)) {
+ collateBox.setSelected(attr.equals(SheetCollate.COLLATED));
+ }
+ } else {
+ boolean isValueSupported = myService.isAttributeValueSupported(
+ SheetCollate.COLLATED, flavor, attrs);
+ if (attrs.containsKey(SheetCollate.class) && isValueSupported) {
+ collateBox.setSelected(attr.equals(SheetCollate.COLLATED));
+ } else {
+ Object defaul =
+ myService.getDefaultAttributeValue(SheetCollate.class);
+ collateBox.setSelected(defaul != null
+ ? defaul.equals(SheetCollate.COLLATED)
+ : true);
+ }
}
+
+ collateBox.setEnabled(isSupported
+ && (spinnerValue > 1)
+ && (!(supported == null || supported.length <= 1)));
}
-}
-
-/*
- * "Orientation" radiobuttons from "Page Setup" tab.
- * All these buttons are disabled if selected print service does not support
- * OrientationRequested attribute. Only supported by service orientations
- * are enabled.
-*/
-void fillOrientationFields() {
-
- OrientationRequested orient =
- (OrientationRequested) attrs.get(OrientationRequested.class);
- boolean isSupported =
- myService.isAttributeCategorySupported(OrientationRequested.class);
-
- OrientationRequested [] supportedList = (isSupported
- ? (OrientationRequested []) myService.getSupportedAttributeValues(
- OrientationRequested.class, flavor, attrs)
- : null);
-
- enableOrient(supportedList);
-
- /* Select orientation at first time (orientation from attributes set or
- default orientation for this Print Service) */
- if (firstUse) {
- if (orient != null) {
- selectOrient(orient);
- } else {
- OrientationRequested defaul = (OrientationRequested)
- myService.getDefaultAttributeValue(OrientationRequested.class);
- selectOrient(isSupported ? defaul : null);
+
+ /*
+ * "Print ranges" fields from "General" tab.
+ * "From" and "to" text fields are enabled only if "Pages" radiobutton is
+ * selected. If attr set does not contain PageRanges attribute, default value
+ * is always "All".
+ */
+ void fillPrintRangeFields() {
+ if (firstUse) {
+ if (attrs.containsKey(PageRanges.class)) {
+ PageRanges aRange = (PageRanges) (attrs.get(PageRanges.class));
+ int [][] range = aRange.getMembers();
+ fromTxt.setText(range.length > 0
+ ? Integer.toString(range[0][0]) : "1");
+ toTxt.setText(range.length > 0
+ ? Integer.toString(range[0][1]) : "1");
+ pageRngBtn.setSelected(true);
+ } else {
+ allRngBtn.setSelected(true);
+ fromTxt.setEnabled(false);
+ toTxt.setEnabled(false);
+ fromTxt.setText("1");
+ toTxt.setText("1");
+ toLabel.setEnabled(false);
+ }
}
}
-
- /* Select orientation if previosly selected button is disabled now */
- if (supportedList != null) {
- OrientationRequested oldValue = getOrient();
- if (!orientEnabled(oldValue)) {
- selectOrient(orientEnabled(orient) ? orient : supportedList[0]);
+
+ /*
+ * Change listener for "Print Ranges" fields:
+ * Range fields are enabled only if not all the pages should be printed, i.e.
+ * if "Pages" button is selected.
+ */
+ class PagesButtonChangeListener implements ChangeListener {
+ public void stateChanged(ChangeEvent e) {
+ fromTxt.setEnabled(pageRngBtn.isSelected());
+ toTxt.setEnabled(pageRngBtn.isSelected());
+ toLabel.setEnabled(pageRngBtn.isSelected());
}
+ } /* End of PagesButtonChangeListener class */
+
+ //---------------------------------------------------------------------
+ /*
+ * Page Setup fields filling after PrintService selecting
+ */
+ void fillPageSetupFields() {
+ fillMediaFields();
+ fillOrientationFields();
+ fillMarginsFields();
}
-}
-
-/*
- * Select "Orientation" button corresponding to the given orientation
-*/
-private void selectOrient(OrientationRequested par) {
- if (par == null) {
- par = OrientationRequested.PORTRAIT;
- }
- if (par.equals(OrientationRequested.LANDSCAPE)) {
- landscapeBtn.setSelected(true);
- } else if (par.equals(OrientationRequested.REVERSE_LANDSCAPE)) {
- rvlandscapeBtn.setSelected(true);
- } else if (par.equals(OrientationRequested.REVERSE_PORTRAIT)) {
- rvportraitBtn.setSelected(true);
- } else {
- portraitBtn.setSelected(true);
+
+ /*
+ * "Size" and "Source" comboboxes from "Page Setup" tab.
+ *
+ * I made "Source" combobox invisible because it is unclear how to work with
+ * two different Media comboboxes in one dialog (please, see comments in the
+ * beginning of the ServiceUIDialog class for more details).
+ * Probably, we will need to change it in the future.
+ *
+ * "Size" combobox contains all medias supported by the selected print service.
+ * It is disabled if given service does not support Media attribute or
+ * supported media list is empty.
+ */
+ void fillMediaFields() {
+ if (myService.isAttributeCategorySupported(Media.class)) {
+ Media [] mediaList = (Media []) myService
+ .getSupportedAttributeValues(Media.class, flavor, attrs);
+ Media oldMedia = (sizeBox.getItemCount() <= 0)
+ ? null
+ : (Media)sizeBox.getSelectedItem();
+
+ sizeBox.removeAllItems();
+ if ((mediaList != null) && (mediaList.length > 0)) {
+ for(int i = 0; i < mediaList.length; i++) {
+ sizeBox.addItem(mediaList[i]);
+ }
+ selectMedia(oldMedia);
+ }
+ sizeBox.setEnabled((mediaList != null) && (mediaList.length > 0));
+ sizeLabel.setEnabled((mediaList != null) && (mediaList.length > 0));
+ } else {
+ sizeBox.setEnabled(false);
+ sizeLabel.setEnabled(false);
+ }
+ sizeBox.updateUI();
}
-}
-
-/*
- enable/disable corresponding "Orientation" buttons
-*/
-private void enableOrient(OrientationRequested[] list) {
- portraitBtn.setEnabled(false);
- landscapeBtn.setEnabled(false);
- rvportraitBtn.setEnabled(false);
- rvlandscapeBtn.setEnabled(false);
-
- if (list != null) {
- for (int i = 0; i < list.length; i++) {
- if (list[i].equals(OrientationRequested.LANDSCAPE)) {
- landscapeBtn.setEnabled(true);
- } else if (list[i].equals(OrientationRequested.PORTRAIT)) {
- portraitBtn.setEnabled(true);
- } else if (list[i].equals(OrientationRequested.REVERSE_LANDSCAPE)) {
- rvlandscapeBtn.setEnabled(true);
- } else if (list[i].equals(OrientationRequested.REVERSE_PORTRAIT)) {
- rvportraitBtn.setEnabled(true);
+
+ /*
+ * Selects media in "Sizes" combobox. Selected media is previously
+ * selected Media if it is supported by current print service.
+ * Otherwise selected media Media from attrs (if it is supported) or default
+ * Media for selected service.
+ */
+ void selectMedia(Media oldMedia) {
+ if (sizeBox.getItemCount() > 0) {
+
+ /* if media was not set - get it from attribites */
+ if ((oldMedia == null) && attrs.containsKey(Media.class)) {
+ oldMedia = (Media) attrs.get(Media.class);
+ }
+ sizeBox.setSelectedItem(oldMedia);
+
+ if ((sizeBox.getSelectedIndex() < 0)
+ || (!sizeBox.getSelectedItem().equals(oldMedia))) {
+ Object media = myService.getDefaultAttributeValue(Media.class);
+ if (media != null) {
+ sizeBox.setSelectedItem(media);
+ }
+ }
+
+ /* select first media if there is still no selection */
+ if (sizeBox.getSelectedIndex() < 0) {
+ sizeBox.setSelectedIndex(0);
}
}
}
-}
-
-/*
- * get selected orientation
-*/
-OrientationRequested getOrient() {
- if (portraitBtn.isSelected()) {
- return OrientationRequested.PORTRAIT;
- } else if (landscapeBtn.isSelected()) {
- return OrientationRequested.LANDSCAPE;
- } else if (rvportraitBtn.isSelected()) {
- return OrientationRequested.REVERSE_PORTRAIT;
- } else if (rvlandscapeBtn.isSelected()) {
- return OrientationRequested.REVERSE_LANDSCAPE;
- } else {
- return null;
+
+ /*
+ * "Orientation" radiobuttons from "Page Setup" tab.
+ * All these buttons are disabled if selected print service does not support
+ * OrientationRequested attribute. Only supported by service orientations
+ * are enabled.
+ */
+ void fillOrientationFields() {
+
+ OrientationRequested orient =
+ (OrientationRequested) attrs.get(OrientationRequested.class);
+ boolean isSupported =
+ myService.isAttributeCategorySupported(OrientationRequested.class);
+
+ OrientationRequested [] supportedList = (isSupported
+ ? (OrientationRequested []) myService.getSupportedAttributeValues(
+ OrientationRequested.class, flavor, attrs)
+ : null);
+
+ enableOrient(supportedList);
+
+ /* Select orientation at first time (orientation from attributes set or
+ default orientation for this Print Service) */
+ if (firstUse) {
+ if (orient != null) {
+ selectOrient(orient);
+ } else {
+ OrientationRequested defaul = (OrientationRequested)
+ myService.getDefaultAttributeValue(OrientationRequested.class);
+ selectOrient(isSupported ? defaul : null);
+ }
+ }
+
+ /* Select orientation if previosly selected button is disabled now */
+ if (supportedList != null) {
+ OrientationRequested oldValue = getOrient();
+ if (!orientEnabled(oldValue)) {
+ selectOrient(orientEnabled(orient) ? orient : supportedList[0]);
+ }
+ }
}
-}
-
-/*
- * returns true if button for the given orientation is enabled
-*/
-private boolean orientEnabled(OrientationRequested par) {
- if (par == null) {
- return false;
- } else if (par.equals(OrientationRequested.LANDSCAPE)) {
- return landscapeBtn.isEnabled();
- } else if (par.equals(OrientationRequested.PORTRAIT)) {
- return portraitBtn.isEnabled();
- } else if (par.equals(OrientationRequested.REVERSE_LANDSCAPE)) {
- return rvlandscapeBtn.isEnabled();
- } else if (par.equals(OrientationRequested.REVERSE_PORTRAIT)) {
- return rvportraitBtn.isEnabled();
- } else {
- return false;
+
+ /*
+ * Select "Orientation" button corresponding to the given orientation
+ */
+ private void selectOrient(OrientationRequested par) {
+ if (par == null) {
+ par = OrientationRequested.PORTRAIT;
+ }
+ if (par.equals(OrientationRequested.LANDSCAPE)) {
+ landscapeBtn.setSelected(true);
+ } else if (par.equals(OrientationRequested.REVERSE_LANDSCAPE)) {
+ rvlandscapeBtn.setSelected(true);
+ } else if (par.equals(OrientationRequested.REVERSE_PORTRAIT)) {
+ rvportraitBtn.setSelected(true);
+ } else {
+ portraitBtn.setSelected(true);
+ }
}
-}
-
-/*
- * return true if at least one orientation button is enabled,
- * i.e. at least one OrientationRequested attribute is supported.
-*/
-private boolean isOrientSupported() {
- return landscapeBtn.isEnabled()
- || portraitBtn.isEnabled()
- || rvlandscapeBtn.isEnabled()
- || rvportraitBtn.isEnabled();
-}
-
-/*
- * Change listener for "Orientation" buttons:
- * "Margins" fields should be updated after the orientation is changed.
-*/
-class OrientationChangeListener implements ChangeListener {
-
-public void stateChanged(ChangeEvent e) {
- OrientationRequested now = getOrient();
-
- if ((lastOrient != null) && (now != null) && (!lastOrient.equals(now))) {
- /* if orientation was really changed */
+
+ /*
+ enable/disable corresponding "Orientation" buttons
+ */
+ private void enableOrient(OrientationRequested[] list) {
+ portraitBtn.setEnabled(false);
+ landscapeBtn.setEnabled(false);
+ rvportraitBtn.setEnabled(false);
+ rvlandscapeBtn.setEnabled(false);
- String txt = leftTxt.getText();
-
- if ((lastOrient.equals(OrientationRequested.PORTRAIT)
- && now.equals(OrientationRequested.LANDSCAPE))
- || (lastOrient.equals(OrientationRequested.LANDSCAPE)
- && now.equals(OrientationRequested.REVERSE_PORTRAIT))
- || (lastOrient.equals(OrientationRequested.REVERSE_PORTRAIT)
- && now.equals(OrientationRequested.REVERSE_LANDSCAPE))
- || (lastOrient.equals(OrientationRequested.REVERSE_LANDSCAPE)
- && now.equals(OrientationRequested.PORTRAIT))) {
- leftTxt.setText(bottomTxt.getText());
- bottomTxt.setText(rightTxt.getText());
- rightTxt.setText(topTxt.getText());
- topTxt.setText(txt);
-
- } else if ((lastOrient.equals(OrientationRequested.PORTRAIT)
- && now.equals(OrientationRequested.REVERSE_PORTRAIT))
- || (lastOrient.equals(OrientationRequested.LANDSCAPE)
- && now.equals(OrientationRequested.REVERSE_LANDSCAPE))
- || (lastOrient.equals(OrientationRequested.REVERSE_PORTRAIT)
- && now.equals(OrientationRequested.PORTRAIT))
- || (lastOrient.equals(OrientationRequested.REVERSE_LANDSCAPE)
- && now.equals(OrientationRequested.LANDSCAPE))) {
- leftTxt.setText(rightTxt.getText());
- rightTxt.setText(txt);
- txt = topTxt.getText();
- topTxt.setText(bottomTxt.getText());
- bottomTxt.setText(txt);
-
- } else {
- leftTxt.setText(topTxt.getText());
- topTxt.setText(rightTxt.getText());
- rightTxt.setText(bottomTxt.getText());
- bottomTxt.setText(txt);
+ if (list != null) {
+ for (int i = 0; i < list.length; i++) {
+ if (list[i].equals(OrientationRequested.LANDSCAPE)) {
+ landscapeBtn.setEnabled(true);
+ } else if (list[i].equals(OrientationRequested.PORTRAIT)) {
+ portraitBtn.setEnabled(true);
+ } else if (list[i].equals(OrientationRequested.REVERSE_LANDSCAPE)) {
+ rvlandscapeBtn.setEnabled(true);
+ } else if (list[i].equals(OrientationRequested.REVERSE_PORTRAIT)) {
+ rvportraitBtn.setEnabled(true);
+ }
+ }
}
}
- if (now != null) {
- lastOrient = now;
+ /*
+ * get selected orientation
+ */
+ OrientationRequested getOrient() {
+ if (portraitBtn.isSelected()) {
+ return OrientationRequested.PORTRAIT;
+ } else if (landscapeBtn.isSelected()) {
+ return OrientationRequested.LANDSCAPE;
+ } else if (rvportraitBtn.isSelected()) {
+ return OrientationRequested.REVERSE_PORTRAIT;
+ } else if (rvlandscapeBtn.isSelected()) {
+ return OrientationRequested.REVERSE_LANDSCAPE;
+ } else {
+ return null;
+ }
}
-}
-} /* End of OrientationChangeListener class */
-
-/*
- * "Margins" fields from "Page Setup" tab.
- *
- * These fields are related with Media, MediaPrintableArea and MediaMargins
- * attributes.
- * These fields are enabled if selected print service supports MediaMargins
- * attribute, or service supports Media + MediaPrintebleArea attributes and at
- * lease one Media is supported. They are also always enabled if this is a
- * PAGE_DIALOG.
- *
- * Meaning of this fields should be updated if Orientation is changed.
- *
- * When we initialize the dialog at first time, "Margins" values are
- * calculated using the following algorythm:
- *
- * * 1. If MediaPrintableArea + Media attributes are supported, attrs set
- * contains MediaPrintableArea and Media, Media attibute from attrs is
- * supported by selected print service and this is MediaSizeName object
- * (i.e. we can get size of this Media) and margins may be correctly
- * calculated using these Media and MediaMargins attributes - we get
- * margins from these Media and MediaPrintableArea.
- * 2. If margins fields are not defined yet and MediaMargins is supported by
- * selected service or this is a page setup dialog, we get MediaMargins from
- * attribute set (if it is present) or default MediaMargins for selected
- * print service (if service has default MediaMargins)
- * 3. If margins fields are not defined yet, try to obtain MediaMargins from
- * selected Media and default MediaPrintebleArea (if it is present) for
- * selected print service. If margins can be calculated - fill "Margins"
- * fields with these meanings.
- * 4. If margins fields are not defined yet, we set them just to some default
- * meanings (25.4 mm).
- *
- * Please, see also comments in the beginning of the ServiceUIDialog class.
-*/
-void fillMarginsFields() {
- boolean isMediaSupported =
- myService.isAttributeCategorySupported(Media.class);
- boolean isPaSupported = myService
- .isAttributeCategorySupported(MediaPrintableArea.class);
- boolean isMarginsSupported = myService
- .isAttributeCategorySupported(MediaMargins.class);
-
- /* We enable margins fields if this is a PAGE_DIALOG or Media and
- MediaPrintableArea attributes are supported or MediaMargins attribute is
- supported by selected PrintService */
- boolean isMarginsEnabled = ((dialogType == PAGE_DIALOG)
- || isMarginsSupported
- || (isMediaSupported
- && isPaSupported
- && (sizeBox.getSelectedItem() != null)));
- enableMargins(isMarginsEnabled);
-
- if (firstUse) {
- /* set margins at first time */
- MediaMargins margins = null; // Margins for the dialog Margins fields
-
- if (isMarginsEnabled) { // Margins fields are enabled and can be edited
-
- Media selectedMedia = (Media) sizeBox.getSelectedItem();
- boolean isMediaSizeSelected = (selectedMedia == null)
- ? false :
- selectedMedia.getClass().isAssignableFrom(MediaSizeName.class);
- MediaSize selectedSize = isMediaSizeSelected
- ? MediaSize.getMediaSizeForName((MediaSizeName) selectedMedia)
- : null;
-
- if (isMediaSupported
- && isPaSupported
- && attrs.containsKey(Media.class)
- && attrs.containsKey(MediaPrintableArea.class)
- && attrs.get(Media.class).equals(selectedMedia)
- && isMediaSizeSelected) {
- /* p.1 - see fillMarginsFields() comments above*/
- try {
- MediaPrintableArea attrsPA = (MediaPrintableArea)
- attrs.get(MediaPrintableArea.class);
- margins = new MediaMargins(selectedSize, attrsPA);
- } catch(IllegalArgumentException e) {
- /*
- * If we are unable to get correct margins values from the
- * given MediaPrintableArea (attrsPA) and MediaSize
- * (selectedSize), we just ignore this case
- */
+ /*
+ * returns true if button for the given orientation is enabled
+ */
+ private boolean orientEnabled(OrientationRequested par) {
+ if (par == null) {
+ return false;
+ } else if (par.equals(OrientationRequested.LANDSCAPE)) {
+ return landscapeBtn.isEnabled();
+ } else if (par.equals(OrientationRequested.PORTRAIT)) {
+ return portraitBtn.isEnabled();
+ } else if (par.equals(OrientationRequested.REVERSE_LANDSCAPE)) {
+ return rvlandscapeBtn.isEnabled();
+ } else if (par.equals(OrientationRequested.REVERSE_PORTRAIT)) {
+ return rvportraitBtn.isEnabled();
+ } else {
+ return false;
+ }
+ }
+
+ /*
+ * return true if at least one orientation button is enabled,
+ * i.e. at least one OrientationRequested attribute is supported.
+ */
+ private boolean isOrientSupported() {
+ return landscapeBtn.isEnabled()
+ || portraitBtn.isEnabled()
+ || rvlandscapeBtn.isEnabled()
+ || rvportraitBtn.isEnabled();
+ }
+
+ /*
+ * Change listener for "Orientation" buttons:
+ * "Margins" fields should be updated after the orientation is changed.
+ */
+ class OrientationChangeListener implements ChangeListener {
+
+ public void stateChanged(ChangeEvent e) {
+ OrientationRequested now = getOrient();
+
+ if ((lastOrient != null) && (now != null) && (!lastOrient.equals(now))) {
+ /* if orientation was really changed */
+
+ String txt = leftTxt.getText();
+
+ if ((lastOrient.equals(OrientationRequested.PORTRAIT)
+ && now.equals(OrientationRequested.LANDSCAPE))
+ || (lastOrient.equals(OrientationRequested.LANDSCAPE)
+ && now.equals(OrientationRequested.REVERSE_PORTRAIT))
+ || (lastOrient.equals(OrientationRequested.REVERSE_PORTRAIT)
+ && now.equals(OrientationRequested.REVERSE_LANDSCAPE))
+ || (lastOrient.equals(OrientationRequested.REVERSE_LANDSCAPE)
+ && now.equals(OrientationRequested.PORTRAIT))) {
+ leftTxt.setText(bottomTxt.getText());
+ bottomTxt.setText(rightTxt.getText());
+ rightTxt.setText(topTxt.getText());
+ topTxt.setText(txt);
+
+ } else if ((lastOrient.equals(OrientationRequested.PORTRAIT)
+ && now.equals(OrientationRequested.REVERSE_PORTRAIT))
+ || (lastOrient.equals(OrientationRequested.LANDSCAPE)
+ && now.equals(OrientationRequested.REVERSE_LANDSCAPE))
+ || (lastOrient.equals(OrientationRequested.REVERSE_PORTRAIT)
+ && now.equals(OrientationRequested.PORTRAIT))
+ || (lastOrient.equals(OrientationRequested.REVERSE_LANDSCAPE)
+ && now.equals(OrientationRequested.LANDSCAPE))) {
+ leftTxt.setText(rightTxt.getText());
+ rightTxt.setText(txt);
+ txt = topTxt.getText();
+ topTxt.setText(bottomTxt.getText());
+ bottomTxt.setText(txt);
+
+ } else {
+ leftTxt.setText(topTxt.getText());
+ topTxt.setText(rightTxt.getText());
+ rightTxt.setText(bottomTxt.getText());
+ bottomTxt.setText(txt);
}
}
-
- if ((margins == null)
- && (isMarginsSupported || (dialogType == PAGE_DIALOG))) {
- /* p.2 - see fillMarginsFields() comments above*/
- margins = (MediaMargins) (attrs.containsKey(MediaMargins.class)
- ? attrs.get(MediaMargins.class)
- : myService.getDefaultAttributeValue(MediaMargins.class));
+
+ if (now != null) {
+ lastOrient = now;
}
-
- if ((margins == null)
- && isPaSupported
- && isMediaSupported
- && isMediaSizeSelected) {
- /* p.3 - see fillMarginsFields() comments above*/
- try {
- MediaPrintableArea defaultPA = (MediaPrintableArea)
- myService.getDefaultAttributeValue(
- MediaPrintableArea.class);
- if ((defaultPA != null) && (selectedSize != null)) {
- margins = new MediaMargins(selectedSize, defaultPA);
+ }
+ } /* End of OrientationChangeListener class */
+
+ /*
+ * "Margins" fields from "Page Setup" tab.
+ *
+ * These fields are related with Media, MediaPrintableArea and MediaMargins
+ * attributes.
+ * These fields are enabled if selected print service supports MediaMargins
+ * attribute, or service supports Media + MediaPrintebleArea attributes and at
+ * lease one Media is supported. They are also always enabled if this is a
+ * PAGE_DIALOG.
+ *
+ * Meaning of this fields should be updated if Orientation is changed.
+ *
+ * When we initialize the dialog at first time, "Margins" values are
+ * calculated using the following algorythm:
+ *
+ * * 1. If MediaPrintableArea + Media attributes are supported, attrs set
+ * contains MediaPrintableArea and Media, Media attibute from attrs is
+ * supported by selected print service and this is MediaSizeName object
+ * (i.e. we can get size of this Media) and margins may be correctly
+ * calculated using these Media and MediaMargins attributes - we get
+ * margins from these Media and MediaPrintableArea.
+ * 2. If margins fields are not defined yet and MediaMargins is supported by
+ * selected service or this is a page setup dialog, we get MediaMargins from
+ * attribute set (if it is present) or default MediaMargins for selected
+ * print service (if service has default MediaMargins)
+ * 3. If margins fields are not defined yet, try to obtain MediaMargins from
+ * selected Media and default MediaPrintebleArea (if it is present) for
+ * selected print service. If margins can be calculated - fill "Margins"
+ * fields with these meanings.
+ * 4. If margins fields are not defined yet, we set them just to some default
+ * meanings (25.4 mm).
+ *
+ * Please, see also comments in the beginning of the ServiceUIDialog class.
+ */
+ void fillMarginsFields() {
+ boolean isMediaSupported =
+ myService.isAttributeCategorySupported(Media.class);
+ boolean isPaSupported = myService
+ .isAttributeCategorySupported(MediaPrintableArea.class);
+ boolean isMarginsSupported = myService
+ .isAttributeCategorySupported(MediaMargins.class);
+
+ /* We enable margins fields if this is a PAGE_DIALOG or Media and
+ MediaPrintableArea attributes are supported or MediaMargins attribute is
+ supported by selected PrintService */
+ boolean isMarginsEnabled = ((dialogType == PAGE_DIALOG)
+ || isMarginsSupported
+ || (isMediaSupported
+ && isPaSupported
+ && (sizeBox.getSelectedItem() != null)));
+
+ enableMargins(isMarginsEnabled);
+
+ if (firstUse) {
+ /* set margins at first time */
+ MediaMargins margins = null; // Margins for the dialog Margins fields
+
+ if (isMarginsEnabled) { // Margins fields are enabled and can be edited
+
+ Media selectedMedia = (Media) sizeBox.getSelectedItem();
+ boolean isMediaSizeSelected = (selectedMedia == null)
+ ? false :
+ selectedMedia.getClass().isAssignableFrom(MediaSizeName.class);
+ MediaSize selectedSize = isMediaSizeSelected
+ ? MediaSize.getMediaSizeForName((MediaSizeName) selectedMedia)
+ : null;
+
+ if (isMediaSupported
+ && isPaSupported
+ && attrs.containsKey(Media.class)
+ && attrs.containsKey(MediaPrintableArea.class)
+ && attrs.get(Media.class).equals(selectedMedia)
+ && isMediaSizeSelected) {
+ /* p.1 - see fillMarginsFields() comments above*/
+ try {
+ MediaPrintableArea attrsPA = (MediaPrintableArea)
+ attrs.get(MediaPrintableArea.class);
+ margins = new MediaMargins(selectedSize, attrsPA);
+ } catch(IllegalArgumentException e) {
+ /*
+ * If we are unable to get correct margins values from the
+ * given MediaPrintableArea (attrsPA) and MediaSize
+ * (selectedSize), we just ignore this case
+ */
+ }
+ }
+
+ if ((margins == null)
+ && (isMarginsSupported || (dialogType == PAGE_DIALOG))) {
+ /* p.2 - see fillMarginsFields() comments above*/
+ margins = (MediaMargins) (attrs.containsKey(MediaMargins.class)
+ ? attrs.get(MediaMargins.class)
+ : myService.getDefaultAttributeValue(MediaMargins.class));
+ }
+
+ if ((margins == null)
+ && isPaSupported
+ && isMediaSupported
+ && isMediaSizeSelected) {
+ /* p.3 - see fillMarginsFields() comments above*/
+ try {
+ MediaPrintableArea defaultPA = (MediaPrintableArea)
+ myService.getDefaultAttributeValue(
+ MediaPrintableArea.class);
+ if ((defaultPA != null) && (selectedSize != null)) {
+ margins = new MediaMargins(selectedSize, defaultPA);
+ }
+ } catch (IllegalArgumentException e) {
+ /*
+ * If we are unable to get correct margins value from the
+ * default MediaPrintableArea (defPA) for this service and
+ * MediaSize (selectedSize), we just ignoew this case.
+ */
}
- } catch (IllegalArgumentException e) {
- /*
- * If we are unable to get correct margins value from the
- * default MediaPrintableArea (defPA) for this service and
- * MediaSize (selectedSize), we just ignoew this case.
- */
}
+
+ if (margins == null) {
+ /* Just 25.4 mm margins! */
+ margins = new MediaMargins(25.4F, 25.4F, 25.4F, 25.4F,
+ MediaMargins.MM);
+ }
+
+ } else {
+ /* Margins fields are disabled, but we always set them to some
+ default meanings (25.4 mm) */
+ margins = (attrs.containsKey(MediaMargins.class)
+ ? (MediaMargins) attrs.get(MediaMargins.class)
+ : new MediaMargins(25.4F, 25.4F, 25.4F, 25.4F,
+ MediaMargins.MM));
}
-
- if (margins == null) {
- /* Just 25.4 mm margins! */
- margins = new MediaMargins(25.4F, 25.4F, 25.4F, 25.4F,
- MediaMargins.MM);
+ setMargins(margins);
+ }
+ }
+
+ /*
+ * Enable/disable all Margins fields
+ */
+ private void enableMargins(boolean flg) {
+ leftLabel.setEnabled(flg);
+ rightLabel.setEnabled(flg);
+ topLabel.setEnabled(flg);
+ bottomLabel.setEnabled(flg);
+ leftTxt.setEnabled(flg);
+ rightTxt.setEnabled(flg);
+ topTxt.setEnabled(flg);
+ bottomTxt.setEnabled(flg);
+ }
+
+ /*
+ * Set Margins dialog fields in accordance with the given MediaMargins object
+ */
+ private void setMargins(MediaMargins margins) {
+ NumberFormatter fmt = getFloatFormatter();
+ try {
+ leftTxt.setText(fmt.valueToString(
+ new Float(margins.getX1(MediaMargins.MM))));
+ rightTxt.setText(fmt.valueToString(
+ new Float(margins.getX2(MediaMargins.MM))));
+ topTxt.setText(fmt.valueToString(
+ new Float(margins.getY1(MediaMargins.MM))));
+ bottomTxt.setText(fmt.valueToString(
+ new Float(margins.getY2(MediaMargins.MM))));
+ } catch (ParseException e) {
+ /* Ignore incorrect float format */
+ }
+ }
+
+ //---------------------------------------------------------------------
+ /*
+ * "Apparance" tab fields filling after new PrintService selecting
+ */
+ void fillAppearanceFields() {
+ fillColorFields();
+ fillQualityFields();
+ fillSidesFields();
+ fillJobAttributesFields();
+ }
+
+ /*
+ * "Color" panel radiobuttons from "Appearance" tab.
+ * The buttons are enabled only if selected service supports both COLOR and
+ * MONOCHROME Chromaticity attributes.
+ */
+ void fillColorFields() {
+ boolean lastIsMonochrome = getLastColor();
+
+ monoBtn.setEnabled(false);
+ colorBtn.setEnabled(false);
+
+ if (myService.isAttributeCategorySupported(Chromaticity.class)) {
+ Chromaticity [] supported = (Chromaticity []) (myService
+ .getSupportedAttributeValues(Chromaticity.class, flavor, attrs));
+ if (supported != null) {
+ if (supported.length == 1) {
+ lastIsMonochrome = setMonochrome(
+ (supported[0]).equals(Chromaticity.MONOCHROME));
+ } else if (supported.length > 1) {
+ monoBtn.setEnabled(true);
+ colorBtn.setEnabled(true);
+ }
}
-
- } else {
- /* Margins fields are disabled, but we always set them to some
- default meanings (25.4 mm) */
- margins = (attrs.containsKey(MediaMargins.class)
- ? (MediaMargins) attrs.get(MediaMargins.class)
- : new MediaMargins(25.4F, 25.4F, 25.4F, 25.4F,
- MediaMargins.MM));
}
- setMargins(margins);
+
+ if (lastIsMonochrome) {
+ monoBtn.setSelected(true);
+ } else {
+ colorBtn.setSelected(true);
+ }
}
-}
-
-/*
- * Enable/disable all Margins fields
- */
-private void enableMargins(boolean flg) {
- leftLabel.setEnabled(flg);
- rightLabel.setEnabled(flg);
- topLabel.setEnabled(flg);
- bottomLabel.setEnabled(flg);
- leftTxt.setEnabled(flg);
- rightTxt.setEnabled(flg);
- topTxt.setEnabled(flg);
- bottomTxt.setEnabled(flg);
-}
-
-/*
- * Set Margins dialog fields in accordance with the given MediaMargins object
-*/
-private void setMargins(MediaMargins margins) {
- NumberFormatter fmt = getFloatFormatter();
- try {
- leftTxt.setText(fmt.valueToString(
- new Float(margins.getX1(MediaMargins.MM))));
- rightTxt.setText(fmt.valueToString(
- new Float(margins.getX2(MediaMargins.MM))));
- topTxt.setText(fmt.valueToString(
- new Float(margins.getY1(MediaMargins.MM))));
- bottomTxt.setText(fmt.valueToString(
- new Float(margins.getY2(MediaMargins.MM))));
- } catch (ParseException e) {
- /* Ignore incorrect float format */
+
+ /*
+ * get last selected Chromaticity button
+ */
+ private boolean getLastColor() {
+ if (firstUse) {
+ if (attrs.containsKey(Chromaticity.class)) {
+ Attribute value = attrs.get(Chromaticity.class);
+ return value.equals(Chromaticity.MONOCHROME);
+ }
+
+ Object defaul = myService.getDefaultAttributeValue(Chromaticity.class);
+ return (myService.isAttributeCategorySupported(Chromaticity.class)
+ && (defaul != null))
+ ? defaul.equals(Chromaticity.MONOCHROME)
+ : true;
+ }
+
+ return monoBtn.isSelected();
}
-}
-
-//---------------------------------------------------------------------
-/*
- * "Apparance" tab fields filling after new PrintService selecting
-*/
-void fillAppearanceFields() {
- fillColorFields();
- fillQualityFields();
- fillSidesFields();
- fillJobAttributesFields();
-}
-
-/*
- * "Color" panel radiobuttons from "Appearance" tab.
- * The buttons are enabled only if selected service supports both COLOR and
- * MONOCHROME Chromaticity attributes.
-*/
-void fillColorFields() {
- boolean lastIsMonochrome = getLastColor();
-
- monoBtn.setEnabled(false);
- colorBtn.setEnabled(false);
-
- if (myService.isAttributeCategorySupported(Chromaticity.class)) {
- Chromaticity [] supported = (Chromaticity []) (myService
- .getSupportedAttributeValues(Chromaticity.class, flavor, attrs));
- if (supported != null) {
- if (supported.length == 1) {
- lastIsMonochrome = setMonochrome(
- (supported[0]).equals(Chromaticity.MONOCHROME));
- } else if (supported.length > 1) {
- monoBtn.setEnabled(true);
- colorBtn.setEnabled(true);
+
+ private boolean setMonochrome(boolean flg) {
+ monoBtn.setEnabled(flg);
+ colorBtn.setEnabled(!flg);
+ return flg;
+ }
+
+ /*
+ * "Quality" panel radiobuttons from "Appearance" tab
+ * Only supported by selected print service PrintQualities are enabled.
+ */
+ void fillQualityFields() {
+ PrintQuality quality = (PrintQuality) attrs.get(PrintQuality.class);
+ if (firstUse) {
+ selectQualityButton(quality);
+ }
+
+ PrintQuality [] aList = (
+ myService.isAttributeCategorySupported(PrintQuality.class)
+ ? (PrintQuality []) myService
+ .getSupportedAttributeValues(PrintQuality.class, flavor, attrs)
+ : null);
+ enableQualityButtons(aList); /* enable qualities which are supported */
+
+ /* select quality */
+ if ((aList != null) && (!qualityIsEnabled(getSelectedQuality()))) {
+ selectQualityButton(qualityIsEnabled(quality)
+ ? quality
+ : (PrintQuality) (myService
+ .getDefaultAttributeValue(PrintQuality.class)));
+ }
+ }
+
+ /*
+ * select "Quality" button for the given PrintQuality attribute
+ */
+ private void selectQualityButton(PrintQuality par) {
+ if (par == null) {
+ par = PrintQuality.NORMAL;
+ }
+ if (par.equals(PrintQuality.DRAFT)) {
+ draftBtn.setSelected(true);
+ } else if (par.equals(PrintQuality.HIGH)) {
+ highBtn.setSelected(true);
+ } else {
+ normalBtn.setSelected(true);
+ }
+ }
+
+ /*
+ * enable "Quality" buttons for the PrintQuality attributes from the given list
+ */
+ private void enableQualityButtons(PrintQuality [] list) {
+ normalBtn.setEnabled(false);
+ draftBtn.setEnabled(false);
+ highBtn.setEnabled(false);
+
+ if (list != null) {
+ for (int i = 0; i < list.length; i++) {
+ if (list[i].equals(PrintQuality.DRAFT)) {
+ draftBtn.setEnabled(true);
+ } else if (list[i].equals(PrintQuality.NORMAL)) {
+ normalBtn.setEnabled(true);
+ } else if (list[i].equals(PrintQuality.HIGH)) {
+ highBtn.setEnabled(true);
+ }
}
}
}
-
- if (lastIsMonochrome) {
- monoBtn.setSelected(true);
- } else {
- colorBtn.setSelected(true);
+
+ /*
+ * return PrintQuality attribute for the selected "Quality" button
+ */
+ private PrintQuality getSelectedQuality() {
+ if (normalBtn.isSelected()) {
+ return PrintQuality.NORMAL;
+ } else if (draftBtn.isSelected()) {
+ return PrintQuality.DRAFT;
+ } else if (highBtn.isSelected()) {
+ return PrintQuality.HIGH;
+ } else {
+ return null;
+ }
}
-}
-
-/*
- * get last selected Chromaticity button
- */
-private boolean getLastColor() {
- if (firstUse) {
- if (attrs.containsKey(Chromaticity.class)) {
- Attribute value = attrs.get(Chromaticity.class);
- return value.equals(Chromaticity.MONOCHROME);
- }
-
- Object defaul = myService.getDefaultAttributeValue(Chromaticity.class);
- return (myService.isAttributeCategorySupported(Chromaticity.class)
- && (defaul != null))
- ? defaul.equals(Chromaticity.MONOCHROME)
- : true;
- }
-
- return monoBtn.isSelected();
-}
-
-private boolean setMonochrome(boolean flg) {
- monoBtn.setEnabled(flg);
- colorBtn.setEnabled(!flg);
- return flg;
-}
-
-/*
- * "Quality" panel radiobuttons from "Appearance" tab
- * Only supported by selected print service PrintQualities are enabled.
-*/
-void fillQualityFields() {
- PrintQuality quality = (PrintQuality) attrs.get(PrintQuality.class);
- if (firstUse) {
- selectQualityButton(quality);
+
+ /*
+ * returns true if "Quality" button for the given PrintQuality attribute
+ * enabled
+ */
+ private boolean qualityIsEnabled(PrintQuality par) {
+ if (par == null) {
+ return false;
+ } else if (par.equals(PrintQuality.NORMAL)) {
+ return normalBtn.isEnabled();
+ } else if (par.equals(PrintQuality.DRAFT)) {
+ return draftBtn.isEnabled();
+ } else if (par.equals(PrintQuality.HIGH)) {
+ return highBtn.isEnabled();
+ } else {
+ return false;
+ }
}
-
- PrintQuality [] aList = (
- myService.isAttributeCategorySupported(PrintQuality.class)
- ? (PrintQuality []) myService
- .getSupportedAttributeValues(PrintQuality.class, flavor, attrs)
[... 1468 lines stripped ...]