/** * Copyright (c) 2009 Juwi MacMillan Group GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.juwimm.cms.deploy.panel.wizard; import static de.juwimm.cms.client.beans.Application.*; import static de.juwimm.cms.common.Constants.*; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.util.Vector; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumn; import org.apache.log4j.Logger; import de.juwimm.cms.client.beans.Beans; import de.juwimm.cms.common.Constants; import de.juwimm.cms.deploy.frame.Wizard; import de.juwimm.cms.deploy.panel.table.PagesTableModel; import de.juwimm.cms.gui.table.TableSorter; import de.juwimm.cms.util.ActionHub; import de.juwimm.cms.util.Communication; import de.juwimm.cms.vo.ViewComponentValue; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author <a href="mailto:s.kulawik@juwimm.com">Sascha-Matthias Kulawik</a> * @version $Id$ */ public class PanAuthorShowList extends JPanel implements WizardPanel { private static Logger log = Logger.getLogger(PanAuthorShowList.class); private Communication comm = ((Communication) getBean(Beans.COMMUNICATION)); private Wizard wizard; private PagesTableModel tblModel; private int internalUnitId = 0; private int taskId = 0; private JTable tblChange = new JTable(); private JScrollPane scpChange = new JScrollPane(); private JLabel lblChanged = new JLabel(); private GridBagLayout gridBagLayout = new GridBagLayout(); private JButton btnPreview = new JButton(); private JTextField txtPath = new JTextField(); public PanAuthorShowList() { try { jbInit(); getTblChange().setRowHeight(22); getTblChange().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); getTblChange().getSelectionModel().addListSelectionListener(new MyListSelectionListener()); getBtnPreview().setEnabled(true); getLblChanged().setText(rb.getString("wizard.author.getApproval.lblChanged")); getBtnPreview().setText(rb.getString("wizard.author.getApproval.btnPreview")); } catch (Exception exe) { log.error("Initialization Error", exe); } } public void setWizard(Wizard wizard) { this.wizard = wizard; if (this.getTblModel().getRowCount() == 0) { wizard.setNextEnabled(false); } else { wizard.setNextEnabled(true); } } public void setUnitId(int unitId) { this.setInternalUnitId(unitId); fillTable(Constants.DEPLOY_STATUS_EDITED, this.getTblChange(), new MyTableCellRenderer()); } void jbInit() throws Exception { this.setLayout(getGridBagLayout()); getLblChanged().setText("PAGES"); getBtnPreview().setText("SELECT"); getBtnPreview().addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { btnPreviewActionPerformed(e); } }); txtPath.setEditable(false); txtPath.setText(""); this.add(getScpChange(), new GridBagConstraints(0, 1, 2, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 10, 0, 10), 230, 0)); this.add(getLblChanged(), new GridBagConstraints(0, 0, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 10, 0, 0), 0, 0)); this.add(getBtnPreview(), new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 10, 10), 0, 0)); this.add(txtPath, new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 10, 10, 10), 136, 0)); getScpChange().getViewport().add(getTblChange()); } protected void fillTable(int status, JTable tbl, DefaultTableCellRenderer cellRenderer) { try { Vector viewComponents; if (getInternalUnitId() <= 0) { viewComponents = comm.getAllViewComponents4Status(status); } else { viewComponents = comm.getViewComponents4Status(getInternalUnitId(), status); } setTblModel(new PagesTableModel(viewComponents)); getTblModel().addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { boolean retVal = false; for (int i = 0; i < getTblChange().getRowCount(); i++) { boolean sel = ((Boolean) getTblChange().getValueAt(i, 2)).booleanValue(); if (sel) { retVal = true; } } if (retVal) { wizard.setNextEnabled(true); } else { wizard.setNextEnabled(false); } } }); TableSorter tblSorter = new TableSorter(getTblModel(), getTblChange().getTableHeader()); getTblChange().setModel(tblSorter); //m_Sorter.addMouseListenerToHeaderInTable(tbl); TableColumn column = tbl.getColumnModel().getColumn(0); column.setPreferredWidth(290); column = tbl.getColumnModel().getColumn(1); column.setPreferredWidth(100); column.setCellRenderer(cellRenderer); } catch (Exception exe) { log.error("Error", exe); } } /** * @version $Id$ */ protected class MyTableCellRenderer extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); String s = value.toString(); if (s.equals("0")) { setText(rb.getString("wizard.author.getApproval.ADD")); } else if (s.equals("1") || s.equals("2")) { setText(rb.getString("wizard.author.getApproval.DELETE")); } else if (s.equals("3")) { setText(rb.getString("wizard.author.getApproval.MODIFY")); } return this; } } /** * @version $Id$ */ protected class MyListSelectionListener implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { txtPath.setText((String) getTblModel().getValueAt(getTblChange().getSelectedRow(), 3)); getBtnPreview().setEnabled(true); } } private void btnPreviewActionPerformed(ActionEvent e) { ViewComponentValue view = (ViewComponentValue) getTblModel().getValueAt(getTblChange().getSelectedRow(), 4); ActionHub.fireActionPerformed(new ActionEvent(view.getViewComponentId() + "", ActionEvent.ACTION_PERFORMED, Constants.ACTION_TREE_JUMP)); } public void setTaskId(int taskId) { this.taskId = taskId; } public void save() { int count = getTblModel().getRowCount(); ViewComponentValue view; String command; Vector<Integer> selectedVcs = new Vector<Integer>(); for (int i = 0; i < count; i++) { if (((Boolean) getTblModel().getValueAt(i, 2)).booleanValue()) { try { view = (ViewComponentValue) getTblModel().getValueAt(i, 4); try { command = (String) getTblModel().getValueAt(i, 1); if (command.equals(rb.getString("wizard.author.getApproval.ADD"))) { view.setDeployCommand((byte) 0); } else if (command.equals(rb.getString("wizard.author.getApproval.DELETE"))) { view.setDeployCommand((byte) 1); } else if (command.equals(rb.getString("wizard.author.getApproval.MODIFY"))) { view.setDeployCommand((byte) 3); } } catch (Exception ex) { } selectedVcs.add(new Integer(view.getViewComponentId())); view.setStatus(Constants.DEPLOY_STATUS_FOR_APPROVAL); comm.updateStatus4ViewComponent(view); try { comm.setStatus4ViewComponentId(view.getViewComponentId(), Constants.DEPLOY_STATUS_FOR_APPROVAL); } catch (Exception exe) { } } catch (Exception ex) { JOptionPane.showMessageDialog(this, "Der Status des Contents kann nicht ge�ndert werden\n" + ex.getMessage(), "CMS", JOptionPane.ERROR_MESSAGE); } } } try { comm.addViewComponentsToTask(taskId, selectedVcs.toArray(new Integer[0])); } catch (Exception exe) { log.error("Error adding vc to task " + taskId, exe); } } /** * @param tblModel The tblModel to set. */ protected void setTblModel(PagesTableModel tblModel) { this.tblModel = tblModel; } /** * @return Returns the tblModel. */ protected PagesTableModel getTblModel() { return tblModel; } /** * @param tblChange The tblChange to set. */ void setTblChange(JTable tblChange) { this.tblChange = tblChange; } /** * @return Returns the tblChange. */ JTable getTblChange() { return tblChange; } /** * @param scpChange The scpChange to set. */ void setScpChange(JScrollPane scpChange) { this.scpChange = scpChange; } /** * @return Returns the scpChange. */ JScrollPane getScpChange() { return scpChange; } /** * @param lblChanged The lblChanged to set. */ void setLblChanged(JLabel lblChanged) { this.lblChanged = lblChanged; } /** * @return Returns the lblChanged. */ JLabel getLblChanged() { return lblChanged; } /** * @param gridBagLayout The gridBagLayout to set. */ void setGridBagLayout(GridBagLayout gridBagLayout) { this.gridBagLayout = gridBagLayout; } /** * @return Returns the gridBagLayout. */ GridBagLayout getGridBagLayout() { return gridBagLayout; } /** * @param btnPreview The btnPreview to set. */ void setBtnPreview(JButton btnPreview) { this.btnPreview = btnPreview; } /** * @return Returns the btnPreview. */ JButton getBtnPreview() { return btnPreview; } /** * @param internalUnitId The internalUnitId to set. */ protected void setInternalUnitId(int internalUnitId) { this.internalUnitId = internalUnitId; } /** * @return Returns the internalUnitId. */ protected int getInternalUnitId() { return internalUnitId; } }