blob: 4401abb7a76cffda079540a67f12a64aceb45b72 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.netbeans.modules.j2ee.ddloaders.ejb;
import java.awt.Component;
import java.util.List;
import java.util.Iterator;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import org.openide.util.NbBundle;
import org.openide.filesystems.FileStateInvalidException;
/** Panel that contains list of changes for deployment descriptor
* to accomodate recent servlet modification.
*
* @author Radim Kubacki
*/
public class DDChangesPanel extends JPanel {
private JPanel changesPanel;
private JScrollPane jScrollPane1;
/* pkg private */ JList changesList;
/* pkg private */ DefaultListModel listModel;
/** Initializes the Form */
public DDChangesPanel (String caption, final JButton processButton) {
setLayout (new java.awt.BorderLayout (0, 12));
setBorder (new EmptyBorder (12, 12, 11, 0));
JTextArea text = new JTextArea ();
text.setEnabled (false);
text.setEditable (false);
text.setDisabledTextColor (UIManager.getColor ("Label.foreground")); // NOI18N
text.setBackground (UIManager.getColor ("Label.background")); // NOI18N
text.setLineWrap (true);
text.setWrapStyleWord (true);
text.setText (caption);
add (text, "North"); // NOI18N
changesPanel = new JPanel ();
changesPanel.setLayout (new java.awt.BorderLayout (5, 5));
JLabel changesLabel = new JLabel ();
changesLabel.setText (NbBundle.getMessage (DDChangesPanel.class, "LAB_ChangesList"));
changesLabel.getAccessibleContext ().setAccessibleDescription (NbBundle.getMessage (DDChangesPanel.class, "ACS_ChangesListA11yDesc")); // NOI18N
changesPanel.add (changesLabel, "North"); // NOI18N
jScrollPane1 = new JScrollPane ();
listModel = new DefaultListModel ();
changesList = new JList (listModel);
changesList.setToolTipText (NbBundle.getMessage (DDChangesPanel.class, "HINT_ChangesList"));
changesList.setCellRenderer (new ChangesListCellRenderer ());
changesList.addListSelectionListener (new ListSelectionListener () {
public void valueChanged (ListSelectionEvent e) {
processButton.setEnabled (!changesList.isSelectionEmpty ());
}
});
changesLabel.setLabelFor (changesList);
changesLabel.setDisplayedMnemonic (NbBundle.getMessage (DDChangesPanel.class, "LAB_ChangesList_Mnemonic").charAt (0));
getAccessibleContext().setAccessibleDescription(NbBundle.getMessage (DDChangesPanel.class, "ACS_ChangesListA11yPanelDesc"));
jScrollPane1.setViewportView (changesList);
changesPanel.add (jScrollPane1, "Center"); // NOI18N
add (changesPanel, "Center"); // NOI18N
}
@Override
public java.awt.Dimension getPreferredSize () {
return new java.awt.Dimension(600, 400);
}
public synchronized void setChanges (List changes) {
listModel.clear ();
if (changes != null) {
Iterator it = changes.iterator ();
while (it.hasNext ()) {
listModel.addElement (it.next ());
}
}
}
public DefaultListModel getListModel() {
return listModel;
}
public JList getChangesList() {
return changesList;
}
static class ChangesListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected,
boolean cellHasFocus) {
Component comp = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
try {
if ((comp instanceof JLabel) && (value instanceof DDChangeEvent)) {
DDChangeEvent evt = (DDChangeEvent)value;
String label = ""; // NOI18N
String clz = evt.getNewValue ();
if (evt.getType () == DDChangeEvent.EJB_ADDED) {
label = NbBundle.getMessage (DDChangesPanel.class, "LAB_addServletElement", clz);
}
else if (evt.getType() == DDChangeEvent.EJB_CLASS_CHANGED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_changeEjbElement", evt.getOldValue (), //NOI18N
evt.getNewValue());
}
else if (evt.getType() == DDChangeEvent.EJB_CLASS_DELETED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_deleteEjbElement", evt.getNewValue()); //NOI18N
}
else if (evt.getType() == DDChangeEvent.EJB_HOME_CHANGED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_changeHomeElement", evt.getOldValue(), //NOI18N
evt.getNewValue());
}
else if (evt.getType() == DDChangeEvent.EJB_REMOTE_CHANGED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_changeRemoteElement", //NOI18N
evt.getOldValue(), evt.getNewValue());
}
else if (evt.getType() ==
DDChangeEvent.EJB_LOCAL_HOME_CHANGED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_changeLocalHomeElement", //NOI18N
evt.getOldValue(), evt.getNewValue());
}
else if (evt.getType() == DDChangeEvent.EJB_LOCAL_CHANGED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_changeLocalElement", //NOI18N
evt.getOldValue(), evt.getNewValue());
}
else if (evt.getType() == DDChangeEvent.EJB_HOME_DELETED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_deleteHomeElement", //NOI18N
evt.getNewValue ());
}
else if (evt.getType() == DDChangeEvent.EJB_REMOTE_DELETED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_deleteRemoteElement", //NOI18N
evt.getNewValue ());
}
else if (evt.getType() ==
DDChangeEvent.EJB_LOCAL_HOME_DELETED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_deleteLocalHomeElement", //NOI18N
evt.getNewValue());
}
else if (evt.getType() == DDChangeEvent.EJB_LOCAL_DELETED){
label = NbBundle.getMessage(DDChangesPanel.class,
"LAB_deleteLocalElement", //NOI18N
evt.getNewValue ());
}
else if (evt.getType () == DDChangeEvent.EJB_MOVED) {
String fsname;
try {
fsname = evt.getOldDD ().getPrimaryFile ().getFileSystem ().getDisplayName ();
}
catch (FileStateInvalidException e) {
fsname = ""; // NOI18N
}
label = NbBundle.getMessage (DDChangesPanel.class, "LAB_moveServletElement", clz, fsname);
}
((JLabel)comp).setText (label);
}
}
catch (Exception e) {
e.printStackTrace ();
}
return comp;
}
}
}