--- /dev/null
+
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import java.net.URL;
+import java.net.*;
+import java.io.*;
+import java.util.*;
+import com.easysw.cups.*;
+
+public class GLPjobList implements ActionListener
+{
+ Cups cups = null;
+ GridLayout mainLayout = null;
+ JPanel errorPanel = null;
+ JScrollPane jobPane = null;
+
+ public GLPjobList(CupsPrinter cp)
+ {
+ load(cp);
+ }
+
+ // Constructor
+ public void load(CupsPrinter cp)
+ {
+ URL u;
+ CupsJob[] jobs;
+ int num_jobs = 0;
+
+ try
+ {
+ u = new URL("http://" + GLPvars.cupsServerName + ":631/printers/" +
+ cp.getPrinterName());
+ cups = new Cups(u);
+ cups.setUser(GLPvars.cupsUser);
+ cups.setPasswd(GLPvars.cupsPasswd);
+
+ jobs = cups.cupsGetJobs(GLPvars.showMyJobs,
+ GLPvars.showCompletedJobs );
+ }
+ catch (IOException e)
+ {
+ GLPjobTableModel tm = new GLPjobTableModel(1,1);
+ tm.setValueAt("Error getting job list(IOException)",0,0);
+ JTable table = new JTable(tm);
+ jobPane = new JScrollPane(table);
+ jobPane.setBackground(GLPcolors.backgroundColor);
+ return;
+ }
+
+ if (jobs == null)
+ {
+ String job_user = "";
+ String job_type = "";
+ if (GLPvars.showCompletedJobs)
+ job_type = "No completed jobs";
+ else
+ job_type = "No active jobs";
+ if (GLPvars.showMyJobs)
+ job_user = " for " + GLPvars.cupsUser;
+
+ GLPjobTableModel tm = new GLPjobTableModel(1,1);
+ tm.setValueAt(job_type + job_user + ".",0,0);
+ JTable table = new JTable(tm);
+ jobPane = new JScrollPane(table);
+ jobPane.setBackground(GLPcolors.backgroundColor);
+ return;
+ }
+
+ num_jobs = jobs.length;
+ int jobcount = 0;
+ for (int i=0; i < num_jobs; i++)
+ {
+ if (jobs[i].job_id < 0)
+ continue;
+ jobcount++;
+ }
+
+ if (jobcount < 1)
+ {
+ GLPjobTableModel tm = new GLPjobTableModel(1,1);
+ String comp_str = "active";
+ if (GLPvars.showCompletedJobs)
+ comp_str = "completed";
+
+ tm.setValueAt("No " + comp_str + " jobs on " +
+ cp.getPrinterName(),0,0);
+ JTable table = new JTable(tm);
+ jobPane = new JScrollPane(table);
+ jobPane.setBackground(GLPcolors.backgroundColor);
+ return;
+ }
+
+ GLPjobTableModel tm = new GLPjobTableModel(jobcount,6);
+ tm.setColumnName(0,"ID");
+ tm.setColumnName(1,"Name");
+ tm.setColumnName(2,"User");
+ tm.setColumnName(3,"Create Time");
+ tm.setColumnName(4,"Size");
+ tm.setColumnName(5,"Status");
+
+ String szString;
+ Date date = new Date();
+ int currjob = 0;
+ for (int i=0; i < num_jobs; i++)
+ {
+ //
+ // Bug in cupsGetJobs?
+ //
+ if (jobs[i].job_id < 0)
+ continue;
+
+ tm.setValueAt( new Integer( jobs[i].job_id), currjob, 0 );
+ tm.setValueAt( (Object)jobs[i].job_name, currjob, 1 );
+ tm.setValueAt( (Object)jobs[i].job_originating_user_name,currjob,2);
+
+ date.setTime(jobs[i].time_at_creation * 1000);
+ tm.setValueAt( date.toString(), currjob, 3 );
+
+ if (jobs[i].job_k_octets < 1000)
+ szString = Integer.toString(jobs[i].job_k_octets) + "k";
+ else
+ szString = Double.toString((float)jobs[i].job_k_octets / 1000.0) + "mb";
+ tm.setValueAt( szString, currjob, 4 );
+ tm.setValueAt( jobs[i].jobStatusText(), currjob, 5 );
+ currjob++;
+ }
+
+ JTable table = new JTable( tm );
+
+ jobPane = new JScrollPane(table);
+ jobPane.setBackground(GLPcolors.backgroundColor);
+ jobPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+ jobPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ // if (e.getActionCommand().equals(maskFieldString))
+ // {
+ // }
+ }
+
+
+ public JScrollPane getPanel()
+ {
+ return(jobPane);
+ }
+
+}