/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*
* ident "%Z%%M% %I% %E% SMI"
*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* Install and Modify Printer implementation
*/
package com.sun.admin.pm.client;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.JPanel;
import javax.swing.*;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.table.AbstractTableModel;
import com.sun.admin.pm.server.*;
/*
* Window for Edit -> Install Printer
*/
public class pmInstallPrinter extends pmInstallScreen {
int action;
pmTop myTop;
pmFrame frame;
JScrollPane scrollPane;
String printer = null;
String server = null;
String description = null;
String port = null;
String ptype = null;
String fcontents = null;
String make = null;
String model = null;
String ppd = null;
String ppdfile = null;
String oldmake = new String("oldmake");
String oldmodel = new String("oldmodel");
String faultn = null;
String banner = null;
String destination = null;
String protocol = null;
String useraccesslist[] = null;
String oldptype = null;
String olddevice = null;
Printer workingPrinter;
JList accessList;
JScrollPane ascrollPane;
accessListModel accessModel;
String helpTag = null;
String cmdLog = null;
String errorLog = null;
String warnLog = null;
String actionName = null;
// where to place initial focus
Component defaultComponent = null;
boolean usePPD;
boolean useLocalhost;
public pmInstallPrinter(pmTop myTop, int action) throws pmGuiException {
boolean failed = false;
boolean cacheerr = false;
boolean ppdincacheerr = false;
this.myTop = myTop;
this.action = action;
workingPrinter = new Printer(myTop.ns);
usePPD = myTop.getUsePPD();
useLocalhost = myTop.getUseLocalhost();
switch (action) {
case Constants.ADDLOCAL:
Debug.message("CLNT:pmInstPr: ADD LOCAL");
frame = new pmFrame(
pmUtility.getResource("SPM:New.Attached.Printer"));
if (pmMisc.isppdCachefile() && usePPD) {
helpTag = "InstallLocalPPD";
} else {
helpTag = "InstallLocal";
}
actionName =
pmUtility.getResource("New.Attached.Printer");
break;
case Constants.ADDNETWORK:
Debug.message("CLNT:pmInstPr: ADD NETWORK");
frame = new pmFrame(
pmUtility.getResource("SPM:New.Network.Printer"));
if ((pmMisc.isppdCachefile()) && (usePPD)) {
helpTag = "InstallNetworkPPD";
} else
helpTag = "InstallNetwork";
actionName = pmUtility.getResource("New.Network.Printer");
break;
case Constants.MODIFYATTACHED:
Debug.message("CLNT:pmInstPr: MODIFY ATTACHED");
frame = new pmFrame(
pmUtility.getResource("SPM:Modify.Printer.Properties"));
workingPrinter.setPrinterName(myTop.selectedPrinter);
failed = false;
try {
workingPrinter.getPrinterDetails();
} catch (pmNeedPPDCacheException e) {
cacheerr = true;
Debug.message("CLNT:pmInstPr:ModifyAttached caught: " + e);
} catch (pmCacheMissingPPDException e) {
ppdincacheerr = true;
Debug.message("CLNT:pmInstPr:ModifyAttached caught: " + e);
} catch (Exception e) {
failed = true;
Debug.message("CLNT:pmInsPr:ModifyAttached caught:" + e);
}
gatherLogs(workingPrinter);
if (cacheerr) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource(
"Cannot.modify.this.queue;ppdcache.file.missing."));
m.setVisible(true);
throw new pmGuiException("No ppdcache file");
}
if (ppdincacheerr) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource(
"Cannot.modify.this.queue;PPD.file.not.in.ppdcache."));
m.setVisible(true);
throw new pmGuiException("PPD file not in ppdcache");
}
if (failed) {
// error popup?
// throw something?
}
pmCalls.debugShowPrinter(workingPrinter);
dumpLogs("ModifyAttached()");
if (workingPrinter.getPPD() != null)
helpTag = "ModifyPPD";
else
helpTag = "Modify";
// helpTag = "ModifyAttached";
actionName = pmUtility.getResource("Modify.Printer.Properties");
break;
case Constants.MODIFYNETWORK:
Debug.message("CLNT:pmInstPr: MODIFY NETWORK");
frame = new pmFrame(
pmUtility.getResource("SPM:Modify.Printer.Properties"));
workingPrinter.setPrinterName(myTop.selectedPrinter);
workingPrinter.setPrinterName(myTop.selectedPrinter);
failed = false;
try {
workingPrinter.getPrinterDetails();
} catch (Exception e) {
failed = true;
Debug.message("CLNT:pmInstPr:ModifyNetwork caught " + e);
}
gatherLogs(workingPrinter);
if (failed) {
// error popup?
// throw new pmGuiException();
}
pmCalls.debugShowPrinter(workingPrinter);
dumpLogs("ModifyNetwork()");
if (workingPrinter.getPPD() != null)
helpTag = "ModifyPPD";
else
helpTag = "Modify";
// helpTag = "ModifyNetwork";
actionName = pmUtility.getResource("Modify.Printer.Properties");
break;
case Constants.MODIFYREMOTE:
Debug.message("CLNT:pmInstPr: MODIFY REMOTE");
frame = new pmFrame(
pmUtility.getResource("SPM:Modify.Printer.Properties"));
workingPrinter.setPrinterName(myTop.selectedPrinter);
failed = false;
try {
workingPrinter.getPrinterDetails();
} catch (Exception e) {
failed = true;
Debug.warning("CLNT:pmInstPr:ModifyRemote caught " + e);
}
gatherLogs(workingPrinter);
if (failed) {
// error popup?
// throw something?
}
if (workingPrinter.getPPD() != null)
helpTag = "ModifyPPD";
else
helpTag = "Modify";
// helpTag = "ModifyRemote";
actionName = pmUtility.getResource("Modify.Printer.Properties");
break;
}
// ensure that pmButton hashtable gets cleaned up
frame.setClearButtonsOnClose(true);
setLayout(new BorderLayout());
// Build the Screen
northPanel();
if (action != Constants.MODIFYREMOTE) {
centerPanel();
}
southPanel();
// default button is always OK, for now...
// frame.getRootPane().setDefaultButton (okButton);
// okButton.setAsDefaultButton ();
// handle Esc as cancel
this.registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Debug.message("CLNT: default cancel action");
actioncancelButton();
}},
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false),
JComponent.WHEN_IN_FOCUSED_WINDOW);
if (action == Constants.ADDLOCAL || action == Constants.ADDNETWORK) {
defaultComponent = pnameText;
} else {
defaultComponent = descText;
}
frame.setDefaultComponent(defaultComponent);
defaultComponent.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
Debug.info("\ncomponent focus gained: " + e);
}
public void focusLost(FocusEvent e) {
Debug.info("\ncomponent focus lost: " + e);
}
});
}
public class accessListModel extends AbstractListModel {
int numColumns;
Vector data;
Vector access = new Vector(1, 1);
public accessListModel() {
numColumns = getColumnCount();
}
public void addaccessList(String data[]) {
for (int i = 0; i < data.length; i++) {
access.addElement(data[i]);
}
}
public void addaccessList(String data) {
access.addElement(data);
}
public boolean isduplicate(String d) {
if (access == null)
return false;
else
return access.contains(d);
}
public void removeRow(int row) {
access.removeElementAt(row);
}
public void removeListEntries() {
access.removeAllElements();
}
public int getRowCount() {
return access.size();
}
public int getSize() {
return access.size();
}
public int getColumnCount() {
return 1;
}
public void addRow(Vector row) {
access.addElement(row);
}
public Object getValueAt(int row) {
return access.elementAt(row);
}
public Object getElementAt(int row) {
return access.elementAt(row);
}
public Object getValueAt(int row, int col) {
return access.elementAt(row);
}
public void setValueAt(String value, int row) {
access.setElementAt(value, row);
}
public Vector getAccessList() {
return access;
}
public void accesstoArray(String[] target) {
access.copyInto(target);
}
}
public void centerPanel() {
JPanel center = new JPanel();
accessModel = new accessListModel();
accessList = new JList(accessModel);
accessList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
center.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
ListSelectionModel rowSelectModel = accessList.getSelectionModel();
rowSelectModel.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel accessSM =
(ListSelectionModel)e.getSource();
}
});
c.insets = new Insets(5, 5, 5, 5);
// Create the label
c.gridx = 0;
c.gridy = 0;
labelConstraints(c);
center.add(new JLabel
(pmUtility.getResource("User.Access.List:")), c);
// Create User Access List
String[] tmp = workingPrinter.getUserAllowList();
if (tmp == null) {
accessModel.addaccessList("all");
} else {
accessModel.addaccessList(tmp);
}
ascrollPane = new JScrollPane(accessList);
c.gridwidth = 2;
c.gridx = 1;
c.weightx = c.weighty = 1.0;
c.fill = GridBagConstraints.BOTH;
center.add(ascrollPane, c);
// Create Textfield
c.gridx = 1;
c.gridy = 1;
c.ipadx = 15;
c.fill = GridBagConstraints.HORIZONTAL;
c.anchor = GridBagConstraints.WEST;
c.weightx = c.weighty = 1.0;
userText = new pmTextField(25);
center.add(userText, c);
// Add the Add/Delete Buttons
c.gridx = 1;
c.gridy = 2;
adButtons(c);
c.gridwidth = 1;
center.add(addButton, c);
c.gridx = 2;
center.add(deleteButton, c);
add("Center", center);
}
public void northPanel() {
JPanel north = new JPanel();
north.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
northPanelConstraints(c);
// Define the constraints and create the labels
// All Add/Modify
labelConstraints(c);
c.gridx = 0;
c.gridy = 0;
printernameLabel(north, c);
c.gridy++;
servernameLabel(north, c);
c.gridy++;
descriptionLabel(north, c);
c.gridy++;
// Add printers, modify local
if (action != Constants.MODIFYREMOTE) {
if ((action == Constants.ADDLOCAL) ||
(action == Constants.MODIFYATTACHED)) {
printerportLabel(north, c);
c.gridy++;
}
if ((action == Constants.ADDLOCAL) ||
(action == Constants.ADDNETWORK)) {
if ((pmMisc.isppdCachefile()) && (usePPD)) {
printermakeLabel(north, c);
c.gridy++;
printermodelsLabel(north, c);
c.gridy++;
ppdcontentsLabel(north, c);
} else {
printertypeLabel(north, c);
c.gridy++;
filecontentsLabel(north, c);
}
}
if ((action == Constants.MODIFYATTACHED) ||
(action == Constants.MODIFYNETWORK)) {
// Show make/model/ppd or type/contents
if (workingPrinter.getPPD() != null) {
printermakeLabel(north, c);
c.gridy++;
printermodelsLabel(north, c);
c.gridy++;
ppdcontentsLabel(north, c);
} else {
printertypeLabel(north, c);
c.gridy++;
filecontentsLabel(north, c);
}
}
c.gridy++;
faultnotLabel(north, c);
c.gridy++;
if (action == Constants.ADDNETWORK ||
action == Constants.MODIFYNETWORK) {
destinationLabel(north, c);
c.gridy++;
protocolLabel(north, c);
c.gridy++;
}
optionsLabel(north, c);
c.gridy++;
bannerLabel(north, c);
} else {
optionLabel(north, c);
}
// Define the constraints and create the fields
// Add printers
c.gridx = 1;
c.gridy = 0;
// Printer Name and Server Name
if ((action == Constants.ADDLOCAL) ||
(action == Constants.ADDNETWORK)) {
TextFieldConstraints(c);
printernameTextField(north, c);
c.gridy++;
labelConstraints(c);
try {
north.add(new JLabel(
myTop.host.getLocalHostName()), c);
} catch (Exception e) {
Debug.warning(
"CLNT:pmInstPr:getLocalHostName exception " + e);
north.add(new JLabel(" "), c);
}
c.gridy++;
} else {
labelConstraints(c);
north.add(new JLabel(myTop.selectedPrinter), c);
c.gridy++;
labelConstraints(c);
north.add(new JLabel(myTop.selprinterServer), c);
c.gridy++;
}
// Description
TextFieldConstraints(c);
descriptionField(north, c);
if (action == Constants.MODIFYATTACHED ||
action == Constants.MODIFYNETWORK ||
action == Constants.MODIFYREMOTE) {
if (workingPrinter.getComment() != null)
descText.setText(workingPrinter.getComment());
}
c.gridy++;
if (action != Constants.MODIFYREMOTE) {
if (action == Constants.ADDLOCAL) {
comboboxConstraints(c);
printerportField(north, c);
c.gridy++;
} else if (action == Constants.MODIFYATTACHED) {
labelConstraints(c);
north.add(new JLabel(workingPrinter.getDevice()), c);
c.gridy++;
}
comboboxConstraints(c);
if ((action == Constants.ADDLOCAL) ||
(action == Constants.ADDNETWORK)) {
if ((pmMisc.isppdCachefile()) && (usePPD)) {
printermakeField(north, c);
c.gridy++;
printermodelsField(north, c);
c.gridy++;
ppdcontentsField(north, c);
} else {
printertypeField(north, c);
c.gridy++;
filecontentsField(north, c);
}
}
if ((action == Constants.MODIFYATTACHED) ||
(action == Constants.MODIFYNETWORK)) {
if (workingPrinter.getPPD() != null) {
printermakeField(north, c);
c.gridy++;
printermodelsField(north, c);
c.gridy++;
ppdcontentsField(north, c);
setMake();
setModel();
setPPD();
} else {
// display with printer type and file contents
printertypeField(north, c);
setPrinterType();
c.gridy++;
filecontentsField(north, c);
setType();
}
}
c.gridy++;
faultnotField(north, c);
if (action == Constants.MODIFYATTACHED ||
action == Constants.MODIFYNETWORK) {
setFault();
}
c.gridy++;
if (action == Constants.ADDNETWORK ||
action == Constants.MODIFYNETWORK) {
TextFieldConstraints(c);
destinationField(north, c);
c.gridy++;
comboboxConstraints(c);
protocolField(north, c);
c.gridy++;
if (action == Constants.MODIFYNETWORK)
setNetworkInfo();
}
optionsConstraints(c);
optionsFields(north, c);
if (action == Constants.MODIFYATTACHED ||
action == Constants.MODIFYNETWORK) {
if (workingPrinter.getIsDefaultPrinter()) {
defaultp.doClick();
}
setBanner();
}
} else {
optionsConstraints(c);
defaultoptionField(north, c);
if (workingPrinter.getIsDefaultPrinter()) {
defaultp.doClick();
}
}
add("North", north);
}
public void setNetworkInfo() {
String p = workingPrinter.getProtocol();
if (p != null) {
if (p.equals("bsd"))
protocolCombo.setSelectedItem("BSD");
else if (p.equals("tcp"))
protocolCombo.setSelectedItem("TCP");
else if (p.equals("uri"))
protocolCombo.setSelectedItem("URI");
}
if (destText != null)
destText.setText(workingPrinter.getDestination());
}
public void setMake() {
String make = workingPrinter.getMake();
if (make != null) {
makeCombo.setSelectedItem(make);
}
}
public void setModel() {
String model = workingPrinter.getModel();
if (model != null)
modelCombo.setSelectedItem(model);
}
public void setPPD() {
String ppd = workingPrinter.getPPD();
if (ppd != null)
ppdCombo.setSelectedItem(ppd);
}
public void setFault() {
String fault = workingPrinter.getNotify();
if (fault == null || fault == "none")
faultCombo.setSelectedItem(
pmUtility.getResource("None"));
else if (fault.equals("write"))
faultCombo.setSelectedItem(
pmUtility.getResource("Write.to.Superuser"));
else if (fault.equals("mail"))
faultCombo.setSelectedItem(
pmUtility.getResource("Mail.to.Superuser"));
else {
faultCombo.addItem(fault);
faultCombo.setSelectedItem(fault);
}
}
public void setBanner() {
String banner = workingPrinter.getBanner();
if (banner == null)
bannerCombo.setSelectedItem(
pmUtility.getResource("Always.Print.Banner"));
else if (banner.equals("never"))
bannerCombo.setSelectedItem(
pmUtility.getResource("Never.Print.Banner"));
else if (banner.equals("always"))
bannerCombo.setSelectedItem(
pmUtility.getResource("Always.Print.Banner"));
else if (banner.equals("optional"))
bannerCombo.setSelectedItem(
pmUtility.getResource("User.Selectable.Default.On"));
}
public void setType() {
// lpadmin can combine things like: simple,any ...
String filedata[] = workingPrinter.getFileContents();
String filecontents = new String();
if (filedata == null) {
fileCombo.setSelectedItem(
pmUtility.getResource("None"));
} else {
for (int i = 0; i < filedata.length; i++) {
if (i > 0 && filedata[i] != null)
filecontents = filecontents.concat(",");
filecontents = filecontents.concat(filedata[i]);
}
Debug.message("CLNT:pmInstPr:setType: filecontents = " +
filecontents);
if (filecontents.equals("postscript")) {
fileCombo.setSelectedItem(pmUtility.getResource(
"PostScript"));
} else if (filecontents.equals("application/postscript")) {
fileCombo.setSelectedItem(pmUtility.getResource(
"PostScript"));
} else if (filecontents.equals("simple")) {
fileCombo.setSelectedItem(pmUtility.getResource("ASCII"));
} else if (filecontents.equals("text/plain")) {
fileCombo.setSelectedItem(pmUtility.getResource("ASCII"));
} else if (filecontents.equals("postscript,simple")) {
fileCombo.setSelectedItem(pmUtility.getResource(
"Both.PostScript.and.ASCII"));
} else if (filecontents.equals("simple,postscript")) {
fileCombo.setSelectedItem(pmUtility.getResource(
"Both.PostScript.and.ASCII"));
} else if (filecontents.equals(
"text/plain,application/postscript")) {
fileCombo.setSelectedItem(pmUtility.getResource(
"Both.PostScript.and.ASCII"));
} else if (filecontents.equals("none")) {
fileCombo.setSelectedItem(
pmUtility.getResource("None"));
} else if (filecontents.equals("any")) {
fileCombo.setSelectedItem(
pmUtility.getResource("Any"));
} else if (filecontents.equals("application/octet-stream")) {
fileCombo.setSelectedItem(
pmUtility.getResource("Any"));
} else {
Debug.message(
"CLNT:pmInstPr:setType()unknown file contents type");
fileCombo.addItem(filecontents);
fileCombo.setSelectedItem(filecontents);
}
}
}
public void setPrinterType() {
int x = 0;
String type = workingPrinter.getPrinterType();
Debug.message(
"CLNT:pmInstPrsetPrinterType(): printer type is " + type);
if (type == null)
return;
if (type.equals("PS")) {
typeCombo.setSelectedItem("PostScript");
} else if (type.equals("hplaser")) {
typeCombo.setSelectedItem("HP Printer");
} else if (type.equals("PSR")) {
typeCombo.setSelectedItem("Reverse PostScript");
} else if (type.equals("epson2500")) {
typeCombo.setSelectedItem("Epson 2500");
} else if (type.equals("ibmproprinter")) {
typeCombo.setSelectedItem("IBM ProPrinter");
} else if (type.equals("qume5")) {
typeCombo.setSelectedItem("Qume Sprint 5");
} else if (type.equals("daisy")) {
typeCombo.setSelectedItem("Daisy");
} else if (type.equals("diablo")) {
typeCombo.setSelectedItem("Diablo");
} else if (type.equals("datagraphix")) {
typeCombo.setSelectedItem("Datagraphix");
} else if (type.equals("la100")) {
typeCombo.setSelectedItem("DEC LA100");
} else if (type.equals("ln03")) {
typeCombo.setSelectedItem("DEC LN03");
} else if (type.equals("decwriter")) {
typeCombo.setSelectedItem("Dec Writer");
} else if (type.equals("ti800")) {
typeCombo.setSelectedItem("Texas Instruments 800");
} else {
typeCombo.addItem(type);
typeCombo.setSelectedItem(type);
Debug.message(
"CLNT:pmInstPr:setPrinterType(): user defined type " +
type);
}
}
public void getMakeModelPPD() throws pmGuiException {
if (pmMisc.isppdCachefile()) {
getMake();
model = (String)modelCombo.getSelectedItem();
ppd = (String)ppdCombo.getSelectedItem();
}
}
public void getTypeContents() throws pmGuiException {
ptype = (String)typeCombo.getSelectedItem();
fcontents = (String)fileCombo.getSelectedItem();
}
public void getFault() throws pmGuiException {
faultn = (String)faultCombo.getSelectedItem();
}
public void getBanner() throws pmGuiException {
banner = (String)bannerCombo.getSelectedItem();
}
public void getPrinterServer() throws pmGuiException {
// Printer Name is a required field.
printer = pnameText.getText();
if (printer.equals("")) {
pnameText.requestFocus();
throw new pmIncompleteFormException(
pmUtility.getResource("Printer.name.required."));
}
if (!Valid.localPrinterName(printer)) {
pnameText.requestFocus();
throw new pmIncompleteFormException(
pmUtility.getResource("Printer.name.invalid."));
}
server = null;
try {
if ((useLocalhost))
server = "localhost";
else
server = myTop.host.getLocalHostName();
} catch (Exception e) {
Debug.warning(
"CLNT:pmInstPr:getLocalHostName exception " + e);
}
Debug.message(
"CLNT:pmInstPr:getPrinterServer(): printer is: " + printer);
Debug.message(
"CLNT:pmInstPr:getPrinterServer(): server is: " + server);
}
public void getPort() throws pmGuiException {
port = (String)portCombo.getSelectedItem();
if (port.equals(pmUtility.getResource("Not.Selected"))) {
portCombo.requestFocus();
throw new pmIncompleteFormException
(pmUtility.getResource(
"Printer.Port.Selection.required"));
}
Debug.message("CLNT:pmInstPr:getPort(): port is: " + port);
}
public void getMake() throws pmGuiException {
make = (String)makeCombo.getSelectedItem();
if (make.equals(pmUtility.getResource("Not.Selected"))) {
makeCombo.requestFocus();
throw new pmIncompleteFormException
(pmUtility.getResource(
"Printer.Make.Selection.required"));
}
Debug.message("CLNT:pmInstPr:getMake(): make is: " + make);
}
public void getNetworkInfo() throws pmIncompleteFormException {
destination = destText.getText();
if (destination.equals("")) {
destText.requestFocus();
throw new pmIncompleteFormException(
pmUtility.getResource("Destination.required."));
}
if (!Valid.destination(destination)) {
destText.requestFocus();
throw new pmIncompleteFormException(
pmUtility.getResource("Destination.invalid."));
}
protocol = (String)protocolCombo.getSelectedItem();
port = new String("/dev/null");
Debug.message(
"CLNT:pmInstPr:getNetworkInfo(): destination is: " +
destination);
Debug.message(
"CLNT:pmInstPr:getNetworkInfo(): protocol is: " + protocol);
}
public void getDescription() {
String messy;
messy = descText.getText();
description = messy.trim();
Debug.message(
"CLNT:pmInstPr:getDescription():description: " + "<" +
description + ">");
if (workingPrinter.getComment() == null && description.equals(""))
description = null;
}
public void getUserAccess() {
if (accessModel.getRowCount() != 0) {
useraccesslist = new String[accessModel.getRowCount()];
accessModel.accesstoArray(useraccesslist);
} else {
useraccesslist = null;
}
}
public String gui2lpptype(String t) {
String lp;
if (t != null) {
if (t.equals("PostScript"))
lp = new String("PS");
else if (t.equals("HP Printer"))
lp = new String("hplaser");
else if (t.equals("Reverse PostScript"))
lp = new String("PSR");
else if (t.equals("Epson 2500"))
lp = new String("epson2500");
else if (t.equals("IBM ProPrinter"))
lp = new String("ibmproprinter");
else if (t.equals("Qume Sprint 5"))
lp = new String("qume5");
else if (t.equals("Daisy"))
lp = new String("daisy");
else if (t.equals("Diablo"))
lp = new String("diablo");
else if (t.equals("Datagraphix"))
lp = new String("datagraphix");
else if (t.equals("DEC LA100"))
lp = new String("la100");
else if (t.equals("DEC LN03"))
lp = new String("ln03");
else if (t.equals("Dec Writer"))
lp = new String("decwriter");
else if (t.equals("Texas Instruments 800"))
lp = new String("ti800");
else {
Debug.message(
"CLNT:pmIns:gui2lptype: printer type unknown: " + t);
lp = new String(t);
}
} else {
Debug.message("CLNT:pmInstPr:gui2lptype: input printer type null");
lp = new String("");
}
return lp;
}
public String[] gui2lpfcontents(String f) {
String[] lp = null;
if (f != null) {
if (f.equals(pmUtility.getResource("PostScript"))) {
lp = new String[1];
lp[0] = new String("postscript");
} else if (f.equals(pmUtility.getResource("ASCII"))) {
lp = new String[1];
lp[0] = new String("simple");
} else if (f.equals(pmUtility.getResource(
"Both.PostScript.and.ASCII"))) {
lp = new String[2];
lp[0] = new String("simple");
lp[1] = new String("postscript");
} else if (f.equals(pmUtility.getResource("Any"))) {
lp = new String[1];
lp[0] = new String("any");
} else if (f.equals(pmUtility.getResource("None"))) {
lp = new String[1];
lp[0] = new String("none");
}
} else {
Debug.message(
"CLNT:pmInstPr:gui2lpfcontents(): input string null");
}
return lp;
}
public String gui2lpfaultn(String n) {
String lp = null;
if (n != null) {
if (n.equals(pmUtility.getResource("Write.to.Superuser")))
lp = new String("write");
else if (n.equals(pmUtility.getResource("Mail.to.Superuser")))
lp = new String("mail");
else if (n.equals(pmUtility.getResource("None")))
lp = new String("none");
} else {
Debug.message(
"CLNT:pmInstPr:gui2lpfaultn():input faultnotify null");
}
return lp;
}
public String gui2lpprotocol(String p) {
String lp = null;
if (p.equals("TCP"))
lp = new String("tcp");
else if (p.equals("BSD"))
lp = new String("bsd");
else if (p.equals("URI"))
lp = new String("uri");
else {
Debug.message(
"CLNT:pmInstPr:gui2lpprotocol: protocol is empty");
}
return lp;
}
public String gui2lpbanner(String p) {
String lp = null;
if (p.equals(pmUtility.getResource("Always.Print.Banner")))
lp = new String("always");
else if (p.equals(pmUtility.getResource("Never.Print.Banner")))
lp = new String("never");
else if (p.equals(pmUtility.getResource("User.Selectable.Default.On")))
lp = new String("optional");
else {
Debug.message(
"CLNT:pmInstPr:gui2lpbanner(): banner is empty");
}
if (lp != null)
Debug.message(
"CLNT:pmInstPr:gui2lpbanner(): banner is " + lp);
return lp;
}
public void updatePrinter() {
if (workingPrinter != null) {
if (printer != null)
workingPrinter.setPrinterName(printer);
if (server != null) {
workingPrinter.setPrintServer(server);
}
if (description != null)
workingPrinter.setComment(description);
if ((port != null) &&
(!port.equals(pmUtility.getResource("Not.Selected"))))
workingPrinter.setDevice(port);
if (make != null) {
workingPrinter.setMake(make);
}
if (model != null) {
workingPrinter.setModel(model);
}
if (ppd != null) {
workingPrinter.setPPD(ppd);
}
workingPrinter.setUsePPD(usePPD);
if (ptype != null)
workingPrinter.setPrinterType(gui2lpptype(ptype));
if (fcontents != null)
workingPrinter.setFileContents(gui2lpfcontents(fcontents));
if (faultn != null)
workingPrinter.setNotify(gui2lpfaultn(faultn));
if (destination != null)
workingPrinter.setDestination(destination);
if (protocol != null)
workingPrinter.setProtocol(gui2lpprotocol(protocol));
if (useraccesslist != null)
workingPrinter.setUserAllowList(useraccesslist);
else {
String[] a = new String[1];
a[0] = new String("none");
workingPrinter.setUserAllowList(a);
}
if (defaultp != null)
workingPrinter.setIsDefaultPrinter(defaultp.isSelected());
if (banner != null)
workingPrinter.setBanner(gui2lpbanner(banner));
} else {
Debug.warning(
"CLNT:pmInstPr:updatePrinter(): workingPrinter null");
}
}
void gatherLogs(Printer p) {
cmdLog = p.getCmdLog();
errorLog = p.getErrorLog();
warnLog = p.getWarnLog();
}
void dumpLogs(String who) {
Debug.message(who);
Debug.message(who + " command: " + cmdLog);
Debug.message(who + " warnings: " + warnLog);
Debug.message(who + " errors: " + errorLog);
}
public void doAddLocal() throws pmGuiException {
try {
getPrinterServer();
getDescription();
getPort();
if ((pmMisc.isppdCachefile()) && (usePPD)) {
getMakeModelPPD();
} else {
getTypeContents();
}
getFault();
getBanner();
getUserAccess();
updatePrinter();
} catch (pmIncompleteFormException ie) {
throw new pmIncompleteFormException(ie.getMessage());
}
boolean exist;
boolean failed = false;
// exists could throw an exception from the underyling cmds...
try {
exist = PrinterUtil.exists(printer, myTop.ns);
} catch (Exception e) {
throw new pmGuiException();
}
if (exist) {
throw new pmPrinterExistsException();
}
try {
workingPrinter.addLocalPrinter();
} catch (Exception e) {
failed = true;
} finally {
gatherLogs(workingPrinter);
pmCalls.debugShowPrinter(workingPrinter);
dumpLogs("doAddLocal()");
if (failed)
throw new pmAddPrinterFailedException(errorLog);
}
}
public void doAddNetwork() throws pmGuiException {
try {
getPrinterServer();
getDescription();
getNetworkInfo();
if ((pmMisc.isppdCachefile()) && (usePPD)) {
getMakeModelPPD();
} else {
getTypeContents();
}
getFault();
getBanner();
getUserAccess();
updatePrinter();
} catch (pmIncompleteFormException ie) {
throw new pmIncompleteFormException(ie.getMessage());
}
boolean exist = false;
try {
exist = PrinterUtil.exists(printer, myTop.ns);
} catch (Exception e) {
Debug.message(
"CLNT:pmInstPr:doAddNetwork:printer exists " + e);
throw new pmGuiException();
}
if (exist) {
Debug.message(
"CLNT:pmInstPr:Trying to add existing printer: " + printer);
throw new pmPrinterExistsException();
}
boolean failed = false;
try {
workingPrinter.addLocalPrinter();
} catch (Exception e) {
failed = true;
} finally {
gatherLogs(workingPrinter);
pmCalls.debugShowPrinter(workingPrinter);
dumpLogs("doAddNetwork()");
if (failed)
throw new pmAddPrinterFailedException(errorLog);
}
}
public void doModifyLocalAttached() throws pmGuiException {
getDescription();
getFault();
getBanner();
if (workingPrinter.getPPD() != null) {
getMakeModelPPD();
} else {
getTypeContents();
}
getUserAccess();
updatePrinter();
boolean failed = false;
try {
workingPrinter.modifyPrinter();
} catch (Exception e) {
Debug.warning("CLNT:doModifyLocalAttached: " + e);
failed = true;
} finally {
gatherLogs(workingPrinter);
pmCalls.debugShowPrinter(workingPrinter);
dumpLogs("doModifyLocalAttached()");
if (failed)
throw new pmModifyPrinterFailedException(errorLog);
}
}
public void doModifyLocalNetwork() throws pmGuiException {
getDescription();
getNetworkInfo();
getFault();
getBanner();
if (workingPrinter.getPPD() != null) {
getMakeModelPPD();
} else {
getTypeContents();
}
getUserAccess();
updatePrinter();
boolean failed = false;
try {
workingPrinter.modifyPrinter();
} catch (Exception e) {
Debug.warning("CLNT:pmInstPr:doModifyLocalNetwork: " + e);
failed = true;
} finally {
gatherLogs(workingPrinter);
pmCalls.debugShowPrinter(workingPrinter);
dumpLogs("doModifyLocalNetwork()");
if (failed)
throw new pmModifyPrinterFailedException(errorLog);
}
}
public void doModifyRemote() throws pmGuiException {
getDescription();
updatePrinter();
boolean failed = false;
try {
workingPrinter.modifyPrinter();
} catch (Exception e) {
Debug.warning("CLNT:doModifyRemote: " + e);
failed = true;
} finally {
gatherLogs(workingPrinter);
pmCalls.debugShowPrinter(workingPrinter);
dumpLogs("doModifyRemote()");
if (failed)
throw new pmModifyPrinterFailedException(errorLog);
}
}
public void doClearFields() {
if (pnameText != null)
pnameText.setText("");
if (snameText != null)
snameText.setText("");
if (descText != null)
descText.setText("");
if (portCombo != null)
portCombo.setSelectedIndex(0);
if (makeCombo != null)
makeCombo.setSelectedIndex(0);
if (modelCombo != null)
modelCombo.setSelectedIndex(0);
if (ppdCombo != null)
ppdCombo.setSelectedIndex(0);
if (typeCombo != null)
typeCombo.setSelectedIndex(0);
if (faultCombo != null)
faultCombo.setSelectedIndex(0);
if (protocolCombo != null)
protocolCombo.setSelectedIndex(0);
if (destText != null)
destText.setText("");
if (defaultp.isSelected())
defaultp.doClick();
if (bannerCombo != null)
bannerCombo.setSelectedIndex(0);
accessModel.removeListEntries();
accessModel.addaccessList("all");
}
public void doResetFields() {
if (workingPrinter != null) {
try {
if (workingPrinter.getComment() != null)
descText.setText(workingPrinter.getComment());
else
descText.setText("");
} catch (Exception e) {
Debug.message(
"CLNT:pmInstallPr:doResetFields(): getComment() " +
"Exception: " + e);
}
if (action == Constants.ADDLOCAL ||
action == Constants.ADDNETWORK ||
action == Constants.MODIFYATTACHED) {
try {
portCombo.setSelectedItem(workingPrinter.getDevice());
} catch (Exception e) {
Debug.message(
"CLNT:pmInsPr:doResetFields(): getDevice() " +
"Exception: " + e);
}
}
if (action != Constants.MODIFYREMOTE) {
if (workingPrinter.getPPD() != null) {
setMake();
setModel();
setPPD();
} else {
setPrinterType();
setType();
}
setFault();
if (action == Constants.MODIFYNETWORK)
setNetworkInfo();
try {
accessModel.removeListEntries();
accessModel.addaccessList(
workingPrinter.getUserAllowList());
accessList.setListData(accessModel.getAccessList());
accessList.ensureIndexIsVisible(0);
} catch (Exception e) {
Debug.warning(
"CLNT:InstPr:doResetFields(): addaccessList() " +
"Exception: " + e);
} finally {
accessList.clearSelection();
}
// selected and banner object out of sync
setBanner();
}
// selected and printer object out of sync
if ((defaultp.isSelected() &&
!workingPrinter.getIsDefaultPrinter()) ||
(!defaultp.isSelected() &&
workingPrinter.getIsDefaultPrinter()))
defaultp.doClick();
}
}
public boolean isactionModify() {
if (action == Constants.MODIFYATTACHED ||
action == Constants.MODIFYNETWORK ||
action == Constants.MODIFYREMOTE)
return true;
else
return false;
}
public void doReset() {
Debug.message("CLNT:pmInsPr:doReset()");
if (action == Constants.ADDLOCAL ||
action == Constants.ADDNETWORK) {
doClearFields();
} else {
doResetFields();
}
// as a side effect, the OK button will regain default status
if (defaultComponent != null)
defaultComponent.requestFocus();
}
public void doAction() throws pmGuiException {
// if nameservice, check for login
if (myTop.ns.getNameService().equals("nis") == true ||
myTop.ns.getNameService().equals("ldap") == true) {
try {
if (!myTop.ns.isAuth()) {
pmUtility.doLogin(myTop, frame);
}
} catch (pmUserCancelledException e) {
throw new pmLoginFailedException(
pmUtility.getResource("User.cancelled.login."));
} catch (pmGuiException ge) {
Debug.message("CLNT:pmInstPr: Required login failed.");
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource("Required.login.failed."),
myTop,
"LoginFailed");
m.setVisible(true);
Debug.message("CLNT:pmInstPr:required login failed.");
throw new pmLoginFailedException(
pmUtility.getResource("Required.login.failed."));
} catch (Exception e) {
Debug.message("CLNT:pmInstPr:login exception: " + e);
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource("Required.login.failed."),
myTop,
"LoginFailed");
m.setVisible(true);
throw new pmLoginFailedException(
pmUtility.getResource("Required.login.failed."));
}
}
frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
Debug.message("CLNT:pmInstPr:doAction: action " + action);
// Check for confirmation option
if (((myTop.getConfirmOption() == true) && (confirmAction() == true))
|| (myTop.getConfirmOption() == false)) {
try {
switch (action) {
case Constants.ADDLOCAL:
doAddLocal();
break;
case Constants.ADDNETWORK:
doAddNetwork();
break;
case Constants.MODIFYATTACHED:
workingPrinter.getPrinterDetails();
Debug.message(
"CLNT:pmInstPr:Printer Details: server is " +
workingPrinter.getPrintServer());
doModifyLocalAttached();
break;
case Constants.MODIFYNETWORK:
// add dest and protocol
workingPrinter.getPrinterDetails();
Debug.message("CLNT:pmInstPr:Printer Details: server is " +
workingPrinter.getPrintServer());
doModifyLocalNetwork();
break;
case Constants.MODIFYREMOTE:
workingPrinter.getPrinterDetails();
doModifyRemote();
break;
}
} catch (pmIncompleteFormException fe) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
fe.getMessage()); // "FormError"
m.setVisible(true);
throw new pmIncompleteFormException();
} catch (pmPrinterExistsException ee) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource(
"The.specified.printer.already.exists."));
m.setVisible(true);
} catch (pmNullSelectedPrinterException ne) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource(
"The.selected.printer.does.not.exist."));
m.setVisible(true);
cleanup();
// frame.dispose();
} catch (pmAddPrinterFailedException ae) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
ae.getMessage(),
myTop,
"AddPrinterFailed");
m.setVisible(true);
} catch (pmModifyPrinterFailedException me) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
me.getMessage(),
myTop,
"ModifyFailed");
m.setVisible(true);
} catch (pmGuiException ge) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Application.Error"),
ge.toString());
m.setVisible(true);
} catch (pmCmdFailedException cfe) {
String msg = cfe.getMessage();
if (msg == null || msg.length() == 0)
msg = pmUtility.getResource(
"error.message.command-failed");
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Command.Failed.Error"),
msg);
m.setVisible(true);
} catch (Exception e) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Unknown.Application.Error"),
e.toString());
m.setVisible(true);
} finally {
frame.setCursor(Cursor.getDefaultCursor());
myTop.setLogData(cmdLog, errorLog, warnLog);
myTop.showLogData(actionName);
}
// Update the list of printers
myTop.pmsetPrinterList();
}
}
public boolean confirmAction() {
if (myTop.getConfirmOption() == true) {
pmOKCancelDialog d = new pmOKCancelDialog(frame,
pmUtility.getResource("Action.Confirmation"),
pmUtility.getResource(
"Continue.action.for.this.printer?"));
d.setVisible(true);
if (d.getValue() != JOptionPane.OK_OPTION) {
pmMessageDialog m =
new pmMessageDialog(
frame,
pmUtility.getResource("Warning"),
pmUtility.getResource("Operation.Cancelled"));
m.setVisible(true);
return false;
}
}
return true;
}
public void actionportCombo() {
Debug.message("CLNT:pmInstPr:actionportCombo()");
port = (String)portCombo.getSelectedItem();
if (port.equals(pmUtility.getResource("Other..."))) {
pmOther o = new pmOther(
frame,
pmUtility.getResource("SPM:Specify.Printer.Port"),
pmUtility.getResource("Enter.printer.port.or.file"),
myTop,
"PrinterPort");
o.setVisible(true);
if (o.getValue() == JOptionPane.OK_OPTION) {
port = o.deviceName.getText();
int idx = portCombo.getItemCount();
try {
if (!port.equals("") && Valid.device(port)) {
portCombo.insertItemAt(
port, (idx > 0) ? idx -1 : idx);
portCombo.setSelectedItem(port);
} else if (!port.equals("")) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource(
"Device.missing.or.not.writeable."),
myTop,
"PrinterPort"); // "InvalidDevice"
m.setVisible(true);
if (olddevice == null)
portCombo.setSelectedIndex(0);
else
portCombo.setSelectedItem(olddevice);
} else {
if (olddevice == null)
portCombo.setSelectedIndex(0);
else
portCombo.setSelectedItem(olddevice);
}
} catch (Exception de) {
Debug.warning(
"CLNT:pmInstPr:error validating device" + de);
}
} else { // Cancelled out of Other window
if (olddevice == null)
portCombo.setSelectedIndex(0);
else
portCombo.setSelectedItem(olddevice);
}
}
olddevice = (String)portCombo.getSelectedItem();
if (!port.equals(pmUtility.getResource("Not.Selected"))) {
portCombo.removeItem(pmUtility.getResource("Not.Selected"));
if ((pmMisc.isppdCachefile()) && (usePPD)) {
String makemodel[] = null;
String tmake;
int idx;
String models[] = null;
int i;
makemodel = PrinterUtil.getProbePrinter(olddevice);
if (makemodel != null) {
if ((makemodel[0] != null) &&
(!makemodel[0].equals(null))) {
idx = (makemodel[0]).indexOf(" ");
Debug.message(
"CLNT: makemodel[0] = " + makemodel[0]);
Debug.message(
"CLNT: makemodel[1] = " + makemodel[1]);
if (idx != -1)
tmake = new String(makemodel[0].substring(0, idx));
else
tmake = new String(makemodel[0]);
// Some Manufacturers have multiple names
// Collapse them
if ((tmake.equals("hp")) ||
(tmake.equals("Hewlett-Packard")) ||
(tmake.equals("HEWLETT-PACKARD")))
tmake = new String("HP");
if ((tmake.equals("MINOLTA-QMS")) ||
(tmake.equals("MINOLTA")))
tmake = new String("Minolta");
if ((tmake.equals("OKI")) ||
(tmake.equals("OKI DATA CORP")))
tmake = new String("Okidata");
if (tmake.equals("XEROX"))
tmake = new String("Xerox");
if (tmake.equals("EPSON"))
tmake = new String("Epson");
Debug.message("CLNT:pmInstPr:Probe:make: " + tmake);
if ((makemodel[1] != null) &&
(!makemodel[1].equals(null))) {
Debug.message(
"CLNT:pmInstPr:Probe:model: " + makemodel[1]);
try {
models = PrinterUtil.getModelsList(
tmake.trim());
} catch (Exception e) {
Debug.warning(
"CLNT:pmInstPr:getModelsList: exception" + e);
}
boolean havemodel = false;
boolean addmake = false;
if (models == null) {
Debug.warning(
"CLNT:pmInstPr:Probe:no models for "
+ tmake);
} else {
for (i = 0; i < models.length; i++) {
if (models[i].equalsIgnoreCase(
makemodel[1].trim())) {
havemodel = true;
}
}
// Some Printers do not preceed the model
// name with the Make. If fail, try adding
// Make to front of model
if (!havemodel) {
for (i = 0; i < models.length; i++) {
if (models[i].equalsIgnoreCase(
tmake.trim() +
" " + makemodel[1].trim())) {
havemodel = true;
addmake = true;
}
}
}
if (havemodel) {
makeCombo.setSelectedItem(tmake);
if (!addmake) {
modelCombo.setSelectedItem(makemodel[1]);
Debug.message("CLNT:pmInstPr:model is " +
makemodel[1]);
} else {
modelCombo.setSelectedItem(tmake.trim() +
" " + makemodel[1]);
Debug.message("CLNT:pmInstPr:model is " +
tmake.trim() + " " + makemodel[1]);
}
}
}
}
}
}
}
}
}
public void actiontypeCombo() {
Debug.message("CLNT:pmInstPr:actiontypeCombo()");
ptype = (String)typeCombo.getSelectedItem();
if (ptype.equals(pmUtility.getResource("Other..."))) {
pmOther o = new pmOther(
frame,
pmUtility.getResource("SPM:Specify.Printer.Type"),
pmUtility.getResource("Enter.printer.type:"),
myTop,
"PrinterType");
o.setVisible(true);
if (o.getValue() == JOptionPane.OK_OPTION) {
ptype = o.deviceName.getText();
int idx = typeCombo.getItemCount();
try {
if (!ptype.equals("") && Valid.printerType(ptype)) {
typeCombo.insertItemAt(
ptype, (idx > 0) ? idx -1 : idx);
typeCombo.setSelectedItem(ptype);
} else if (!ptype.equals("")) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource(
"Invalid.printer.type."),
myTop,
"PrinterType");
m.setVisible(true);
if (oldptype == null)
typeCombo.setSelectedIndex(0);
else
typeCombo.setSelectedItem(oldptype);
} else {
if (oldptype == null)
typeCombo.setSelectedIndex(0);
else
typeCombo.setSelectedItem(oldptype);
}
} catch (Exception pte) {
Debug.message(
"CLNT:pmInstPr:error validating printertype"
+ pte);
}
} else { // Cancelled out of Other window
if (oldptype == null)
typeCombo.setSelectedIndex(0);
else
typeCombo.setSelectedItem(oldptype);
}
}
oldptype = (String)typeCombo.getSelectedItem();
}
// Printer make has been selected
public void actionmakeCombo() {
int i;
make = (String)makeCombo.getSelectedItem();
if (!make.equals(pmUtility.getResource("Not.Selected")))
makeCombo.removeItem(pmUtility.getResource("Not.Selected"));
if (!oldmake.equals(make))
modelCombo.removeAllItems();
oldmake = make;
}
// Get Model
public void actionmodelCombo() {
int i;
String models[] = null;
if (!oldmake.equals(make)) {
try {
models = PrinterUtil.getModelsList(make);
} catch (Exception e) {
Debug.warning(
"CLNT:pmInstPr:actionmodelCombo: exception" + e);
}
if (models == null) {
Debug.warning(
"CLNT:pmInstPr:actionmodelCombo:no models for "
+ make);
modelCombo.removeAllItems();
modelCombo.addItem(pmUtility.getResource(
"No.Models.Found"));
} else {
for (i = 0; i < models.length; i++)
modelCombo.addItem(models[i]);
}
}
model = (String)modelCombo.getSelectedItem();
if (!oldmodel.equals(model))
ppdCombo.removeAllItems();
oldmodel = model;
}
public void actionppdCombo() {
int i;
int rec = -1;
int idx = -1;
String ppds[] = null;
if (!oldmodel.equals(model)) {
try {
ppds = PrinterUtil.getPPDList(make, model);
} catch (Exception e) {
Debug.warning(
"CLNT:pmInstPr:actionmodelCombo: exception" +e);
}
// Get the ppd files list
// If a recommended ppd is in the list, display it first
if (ppds == null) {
Debug.warning(
"CLNT:pmInstPr:actionmodelCombo: no ppds for " +
make + "/" + model);
ppdCombo.addItem(
pmUtility.getResource("No.PPD.Files.Found"));
} else {
for (i = 0; i < ppds.length; i++) {
ppdCombo.addItem(ppds[i]);
rec = ppds[i].indexOf("recommended");
if (rec != -1)
idx = i;
}
if (idx != -1)
ppdCombo.setSelectedIndex(idx);
}
}
ppd = (String)ppdCombo.getSelectedItem();
if (!ppd.equals(""))
ppdCombo.removeItem("");
}
public void actionaddButton() {
String tmp = null;
String trimtmp;
Debug.message("CLNT:pmInstPr:actionaddButton()");
try {
tmp = userText.getText();
} catch (Exception e) {
Debug.message(
"CLNT:pmInstPr:actionaddButton:UserAccessList empty");
}
if (tmp == null || tmp.equals("") || tmp.trim().equals("")) {
Debug.message("CLNT:pmInstPr:no username to add");
} else {
trimtmp = tmp.trim();
if (accessModel.isduplicate(trimtmp))
Debug.message("CLNT:pmInstPr:duplicate user");
else if (!Valid.user(trimtmp)) {
pmMessageDialog m = new pmMessageDialog(
frame,
pmUtility.getResource("Error"),
pmUtility.getResource("Invalid.username"));
// "FormError"
m.setVisible(true);
} else {
if (accessModel.getRowCount() > 0 &&
(accessModel.getElementAt(0).equals("all") ||
accessModel.getElementAt(0).equals("none")))
accessModel.removeRow(0);
if (trimtmp.equals("all") ||
trimtmp.equals("none")) {
accessModel.removeListEntries();
}
accessModel.addaccessList(trimtmp);
accessList.setListData(accessModel.getAccessList());
int rw = accessModel.getRowCount();
accessList.setSelectedIndex(rw - 1);
accessList.ensureIndexIsVisible(rw -1);
}
}
userText.setText("");
userText.requestFocus();
ascrollPane.revalidate();
ascrollPane.repaint();
frame.repaint();
}
public void actiondeleteButton() {
Debug.message("CLNT:pmInstPr:actiondeleteButton()");
int row;
int rcount;
int idx;
row = accessList.getSelectedIndex();
rcount = accessModel.getRowCount();
if ((row >= 0 && rcount > 0) && (!accessList.isSelectionEmpty())) {
accessModel.removeRow(row);
rcount = accessModel.getRowCount();
if (rcount != 0) {
if (row == rcount)
accessList.setSelectedIndex(row - 1);
idx = accessList.getFirstVisibleIndex();
if (idx > 0 && idx < rcount)
accessList.ensureIndexIsVisible(idx - 1);
}
}
userText.requestFocus();
frame.repaint();
}
// For ok/cancel
public void cleanup() {
if (action == Constants.ADDLOCAL) {
myTop.localinstallView = null;
}
if (action == Constants.ADDNETWORK) {
myTop.networkinstallView = null;
}
}
public void pmScreendispose() {
frame.dispose();
}
public void actionokButton() {
Debug.message("CLNT:pmInstPr:actionokButton()");
boolean incomplete = false;
try {
doAction();
} catch (pmLoginFailedException le) {
// User already notified
Debug.message("CLNT:pmInstPr:pmLoginFailedException caught");
} catch (pmIncompleteFormException fe) {
// User already notified
incomplete = true;
} catch (pmGuiException ge) {
Debug.message("CLNT:pmInstPr:login Exception, task cancelled");
}
if (!incomplete) {
cleanup();
myTop.pmsetdefaultpLabel();
Debug.message("CLNT:pmInstPr:actionokbutton(): work done");
pmCalls.debugShowPrinter(workingPrinter);
frame.setVisible(false);
frame.repaint();
// frame.dispose();
myTop.scrollPane.revalidate();
myTop.scrollPane.repaint();
}
}
public void actionapplyButton() {
Debug.message("CLNT:pmInstPr:actionapplyButton()");
try {
doAction();
} catch (pmLoginFailedException le) {
// User already notified
Debug.message("CLNT:pmInstPr:pmLoginFailedException caught");
} catch (pmGuiException ge) {
Debug.message("CLNT:pmInstPr:login Exception, task cancelled");
}
myTop.pmsetdefaultpLabel();
Debug.message("CLNT:pmInstPr:actionapplybutton(): work done");
pmCalls.debugShowPrinter(workingPrinter);
myTop.scrollPane.revalidate();
myTop.scrollPane.repaint();
}
public void actionresetButton() {
Debug.message("CLNT:pmInstPr:actionresetButton()");
doReset();
frame.repaint();
}
public void actioncancelButton() {
Debug.message("CLNT:pmInstPr:actioncancelButton()");
cleanup();
frame.setVisible(false);
frame.repaint();
// frame.dispose();
}
public void actionhelpButton() {
Debug.message("CLNT:pmInstPr:actionhelpButton()");
myTop.showHelpItem(helpTag);
}
public void Show() {
Debug.message("CLNT:pmInstPr:Show()");
frame.getContentPane().add("North", this);
frame.pack();
frame.setVisible(true);
frame.repaint();
// set focus to initial field, depending on which action is tbd
// this seems to work best after pack()
// default button is always OK, for now...
// frame.getRootPane().setDefaultButton (okButton);
okButton.setAsDefaultButton();
Debug.info("Show: default comp is " + defaultComponent);
if (defaultComponent != null) {
defaultComponent.requestFocus();
}
}
}