/* ******************************************************************* * Copyright (c) 1999-2001 Xerox Corporation, * 2002 Palo Alto Research Center, Incorporated (PARC). * All rights reserved. * This program and the accompanying materials are made available * under the terms of the Eclipse Public License v1.0 * which accompanies this distribution and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Xerox/PARC initial implementation * Helen Hawkins Converted to new interface (bug 148190) * ******************************************************************/ package org.aspectj.ajde.ui.swing; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; import javax.swing.border.TitledBorder; import org.aspectj.ajde.Ajde; import org.aspectj.bridge.IMessage; import org.aspectj.bridge.Message; /** * Used for automatically updating build configuration files (".lst") when a * project configuration has changed. * * @author Mik Kersten */ 00054 public class UpdateConfigurationDialog extends JFrame { private static final long serialVersionUID = 5885112642841314728L; // private Vector buildConfigFiles; // private Vector filesToUpdate; // private boolean addToConfiguration; private String message1 = " Project has been updated."; private String message2 = " File list below."; private Box box5; private JButton cancel_button = new JButton(); private JButton ok_button = new JButton(); private FlowLayout flowLayout1 = new FlowLayout(); private JPanel globalButton_panel = new JPanel(); private JPanel jPanel1 = new JPanel(); private JPanel jPanel2 = new JPanel(); private TitledBorder titledBorder1; private TitledBorder titledBorder2; private BorderLayout borderLayout1 = new BorderLayout(); private BorderLayout borderLayout2 = new BorderLayout(); private BorderLayout borderLayout3 = new BorderLayout(); private JPanel jPanel3 = new JPanel(); private GridLayout gridLayout1 = new GridLayout(); private JScrollPane jScrollPane1 = new JScrollPane(); private JList updatedFilesList = new JList(); private JScrollPane jScrollPane2 = new JScrollPane(); private JList buildConfigList = new JList(); private Box box2; private JLabel messageLabel1 = new JLabel(); private JLabel messageLabel2 = new JLabel(); public UpdateConfigurationDialog(Vector filesToUpdate, Vector buildConfigFiles, boolean addToConfiguration, Component parentComponent) { try { // this.buildConfigFiles = buildConfigFiles; // this.filesToUpdate = filesToUpdate; // this.addToConfiguration = addToConfiguration; updatedFilesList.setListData(filesToUpdate); String action = "removed from"; if (addToConfiguration) action = "added to"; message1 = " Files have been " + action + " the project, which will affect the build configurations\n"; message2 = " listed below. These build configurations listed can be updated automatically."; //buildConfigList.setCellRenderer(new CheckListCellRenderer()); //CheckListener listener = new CheckListener(buildConfigList); buildConfigList.setListData(buildConfigFiles); jbInit(); this.doLayout(); this.setTitle("Build Configuration Update"); this.setSize(500, 320); // center it int posX = parentComponent.getX() + 100;//(parentComponent.getWidth()/2); int posY = parentComponent.getY() + 100;//(parentComponent.getHeight()/2); this.setLocation(posX, posY); } catch(Exception e) { Message msg = new Message("Could not open configuration dialog",IMessage.ERROR,e,null); Ajde.getDefault().getMessageHandler().handleMessage(msg); } } void cancel_button_actionPerformed(ActionEvent e) { this.dispose(); } void ok_button_actionPerformed(ActionEvent e) { // Object[] selected = buildConfigList.getSelectedValues(); // //LstBuildConfigFileUpdater.updateBuildConfigFiles(buildConfigFiles, filesToUpdate, addToConfiguration); this.dispose(); } private void jbInit() throws Exception { box5 = Box.createVerticalBox(); titledBorder1 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)),"Project Files Added/Removed"); titledBorder2 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)),"Build Configurations Affected"); box2 = Box.createVerticalBox(); this.getContentPane().setLayout(borderLayout1); cancel_button.setText("Cancel"); cancel_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { cancel_button_actionPerformed(e); } }); ok_button.setText("Update Selected Configurations"); ok_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { ok_button_actionPerformed(e); } }); globalButton_panel.setLayout(flowLayout1); jPanel1.setLayout(borderLayout3); jPanel1.setBorder(titledBorder1); jPanel1.setMinimumSize(new Dimension(154, 20)); jPanel1.setPreferredSize(new Dimension(154, 50)); jPanel2.setBorder(titledBorder2); jPanel2.setMinimumSize(new Dimension(36, 50)); jPanel2.setPreferredSize(new Dimension(272, 50)); jPanel2.setLayout(borderLayout2); globalButton_panel.setMinimumSize(new Dimension(297, 37)); globalButton_panel.setPreferredSize(new Dimension(297, 37)); jPanel3.setLayout(gridLayout1); jPanel3.setMinimumSize(new Dimension(154, 20)); jPanel3.setPreferredSize(new Dimension(154, 40)); buildConfigList.setBorder(BorderFactory.createLoweredBevelBorder()); messageLabel1.setText(message1); messageLabel2.setText(message2); updatedFilesList.setFont(new java.awt.Font("Dialog", 0, 10)); this.getContentPane().add(box5, BorderLayout.CENTER); box5.add(jPanel3, null); jPanel3.add(box2, null); box2.add(messageLabel1, null); box2.add(messageLabel2, null); box5.add(jPanel1, null); jPanel1.add(jScrollPane1, BorderLayout.CENTER); jScrollPane1.getViewport().add(updatedFilesList, null); box5.add(jPanel2, null); jPanel2.add(jScrollPane2, BorderLayout.CENTER); jScrollPane2.getViewport().add(buildConfigList, null); box5.add(globalButton_panel, null); globalButton_panel.add(ok_button, null); globalButton_panel.add(cancel_button, null); } } class CheckListCellRenderer extends JCheckBox implements ListCellRenderer { private static final long serialVersionUID = -9183012434083509581L; public CheckListCellRenderer() { super(); setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { setText(value.toString()); setFont(new java.awt.Font("Dialog", 0, 10)); setBackground(new Color(255, 255, 255)); setBackground(isSelected ? list.getSelectionBackground() : list.getBackground()); setForeground(isSelected ? list.getSelectionForeground() : list.getForeground()); setSelected(isSelected); return this; } } class CheckListener implements MouseListener, KeyListener { protected JList list; public CheckListener(JList list) { this.list = list; } public void mouseClicked(MouseEvent e) { doCheck(); } public void keyPressed(KeyEvent e) { if (e.getKeyChar() == ' ') doCheck(); } protected void doCheck() { int index = list.getSelectedIndex(); if (index < 0) { return; } list.getModel().getElementAt(index); list.repaint(); } public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void keyTyped(KeyEvent e) {} public void keyReleased(KeyEvent e) { } }