You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MessageHandlerPanel.java 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /********************************************************************
  2. * Copyright (c) 2007 Contributors. All rights reserved.
  3. * This program and the accompanying materials are made available
  4. * under the terms of the Eclipse Public License v1.0
  5. * which accompanies this distribution and is available at
  6. * http://eclipse.org/legal/epl-v10.html
  7. *
  8. * Contributors: IBM Corporation - initial API and implementation
  9. * Helen Hawkins - initial version (bug 148190)
  10. *******************************************************************/
  11. package org.aspectj.tools.ajbrowser.ui.swing;
  12. import java.awt.BorderLayout;
  13. import java.awt.event.MouseAdapter;
  14. import java.awt.event.MouseEvent;
  15. import java.awt.event.MouseListener;
  16. import java.util.Iterator;
  17. import java.util.List;
  18. import javax.swing.DefaultListModel;
  19. import javax.swing.JList;
  20. import javax.swing.JPanel;
  21. import javax.swing.JScrollPane;
  22. import org.aspectj.ajde.Ajde;
  23. import org.aspectj.ajde.ui.swing.CompilerMessagesCellRenderer;
  24. import org.aspectj.bridge.IMessage;
  25. import org.aspectj.tools.ajbrowser.ui.BrowserMessageHandler;
  26. /**
  27. * Panel used to display messages from the message handler
  28. */
  29. public class MessageHandlerPanel extends JPanel {
  30. private static final long serialVersionUID = -2251912345065588977L;
  31. private JScrollPane jScrollPane1 = new JScrollPane();
  32. private JList list;
  33. private DefaultListModel listModel;
  34. private BorderLayout borderLayout1 = new BorderLayout();
  35. public void showMessageHandlerPanel(BrowserMessageHandler handler, boolean showPanel) {
  36. if (!showPanel) {
  37. setVisible(false);
  38. return;
  39. }
  40. createList(handler.getMessages());
  41. try {
  42. jbInit();
  43. } catch (Exception e) {
  44. e.printStackTrace();
  45. }
  46. list.setModel(listModel);
  47. MouseListener mouseListener = new MouseAdapter() {
  48. public void mouseClicked(MouseEvent e) {
  49. if (e.getClickCount() >= 1) {
  50. int index = list.locationToIndex(e.getPoint());
  51. if (listModel.getSize() >= index && index != -1) {
  52. IMessage message = (IMessage) listModel
  53. .getElementAt(index);
  54. Ajde.getDefault().getEditorAdapter().showSourceLine(
  55. message.getSourceLocation(), true);
  56. }
  57. }
  58. }
  59. };
  60. list.addMouseListener(mouseListener);
  61. list.setCellRenderer(new CompilerMessagesCellRenderer());
  62. setVisible(showPanel);
  63. }
  64. private void createList(List<IMessage> messages) {
  65. list = new JList();
  66. listModel = new DefaultListModel();
  67. for (IMessage message : messages) {
  68. listModel.addElement(message);
  69. }
  70. }
  71. private void jbInit() throws Exception {
  72. this.setLayout(borderLayout1);
  73. this.add(jScrollPane1, BorderLayout.CENTER);
  74. jScrollPane1.getViewport().add(list, null);
  75. }
  76. }