ProcessControl processControl)
ProcessControl processControl, SwingDispatcherFactory swingDispatcherFactory)
  public ProcessStatusTableModel(Resources resources,                                 ProcessControl processControl)    throws ConsoleException {    m_columnHeadings = new String[3];    m_columnHeadings[NAME_COLUMN_INDEX] =      resources.getString("processTable.nameColumn.label");    m_columnHeadings[TYPE_COLUMN_INDEX] =      resources.getString("processTable.processTypeColumn.label");    m_columnHeadings[STATE_COLUMN_INDEX] =      resources.getString("processTable.stateColumn.label");    m_workerProcessesString =      resources.getString("processTable.processes.label");    m_threadsString = resources.getString("processTable.threads.label");    m_agentString = resources.getString("processTable.agentProcess.label");    m_workerString = resources.getString("processTable.workerProcess.label");    m_stateStartedString = resources.getString("processState.started.label");    m_stateRunningString = resources.getString("processState.running.label");    m_stateFinishedString = resources.getString("processState.finished.label");    m_stateConnectedString =      resources.getString("processState.connected.label");    m_stateDisconnectedString =      resources.getString("processState.connected.label");    m_stateUnknownString = resources.getString("processState.unknown.label");    processControl.addProcessStatusListener(      new SwingDispatchedProcessStatusListener(        new ProcessStatus.Listener() {          public void update(ProcessStatus.ProcessReports[] processReports,                             boolean newAgent) {            final List rows = new ArrayList();            int runningThreads = 0;            int totalThreads = 0;            int workerProcesses = 0;            Arrays.sort(processReports, m_processReportsComparator);            for (int i = 0; i < processReports.length; ++i) {              final AgentProcessReport agentProcessStatus =                processReports[i].getAgentProcessReport();              rows.add(new RowData(agentProcessStatus));              final WorkerProcessReport[] workerProcessStatuses =                processReports[i].getWorkerProcessReports();              Arrays.sort(workerProcessStatuses, m_processReportComparator);              for (int j = 0; j < workerProcessStatuses.length; ++j) {                runningThreads +=                  workerProcessStatuses[j].getNumberOfRunningThreads();                totalThreads +=                  workerProcessStatuses[j].getMaximumNumberOfThreads();                rows.add(new RowData(workerProcessStatuses[j]));              }              workerProcesses += workerProcessStatuses.length;            }            rows.add(              new RowData(runningThreads, totalThreads, workerProcesses));            m_data = (RowData[])rows.toArray(new RowData[rows.size()]);            fireTableDataChanged();          }        }      )    );  }