PageRenderTime 53ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/jEdit/tags/jedit-4-1-pre5/org/gjt/sp/jedit/gui/ViewRegisters.java

#
Java | 184 lines | 128 code | 35 blank | 21 comment | 26 complexity | 48d69c5ddbe6b1fb592e2585b0c39f05 MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
  1. /*
  2. * ViewRegisters.java - View registers dialog
  3. * Copyright (C) 1999, 2000, 2001 Slava Pestov
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License
  7. * as published by the Free Software Foundation; either version 2
  8. * of the License, or any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program; if not, write to the Free Software
  17. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  18. */
  19. package org.gjt.sp.jedit.gui;
  20. import javax.swing.*;
  21. import javax.swing.border.*;
  22. import javax.swing.event.*;
  23. import java.awt.*;
  24. import java.awt.event.*;
  25. import java.util.Vector;
  26. import org.gjt.sp.jedit.*;
  27. public class ViewRegisters extends EnhancedDialog
  28. {
  29. public ViewRegisters(View view)
  30. {
  31. super(view,jEdit.getProperty("view-registers.title"),true);
  32. JPanel content = new JPanel(new BorderLayout());
  33. content.setBorder(new EmptyBorder(12,12,12,12));
  34. setContentPane(content);
  35. JPanel panel = new JPanel(new BorderLayout());
  36. panel.setBorder(new EmptyBorder(0,12,0,0));
  37. JLabel label = new JLabel(jEdit.getProperty("view-registers.register"));
  38. label.setBorder(new EmptyBorder(0,0,3,0));
  39. panel.add(BorderLayout.NORTH,label);
  40. DefaultListModel registerModel = new DefaultListModel();
  41. registerList = new JList(registerModel);
  42. registerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  43. registerList.setCellRenderer(new Renderer());
  44. Registers.Register[] registers = Registers.getRegisters();
  45. int index = 0;
  46. for(int i = 0; i < registers.length; i++)
  47. {
  48. Registers.Register reg = registers[i];
  49. if(reg == null)
  50. continue;
  51. String value = reg.toString();
  52. if(value == null || value.length() == 0)
  53. continue;
  54. registerModel.addElement(new Character((char)i));
  55. }
  56. if(registerModel.getSize() == 0)
  57. registerModel.addElement(jEdit.getProperty("view-registers.none"));
  58. panel.add(BorderLayout.CENTER,new JScrollPane(registerList));
  59. content.add(BorderLayout.WEST,panel);
  60. panel = new JPanel(new BorderLayout());
  61. panel.setBorder(new EmptyBorder(0,12,0,0));
  62. label = new JLabel(jEdit.getProperty("view-registers.contents"));
  63. label.setBorder(new EmptyBorder(0,0,3,0));
  64. panel.add(BorderLayout.NORTH,label);
  65. contentTextArea = new JTextArea(10,80);
  66. contentTextArea.setEditable(false);
  67. panel.add(BorderLayout.CENTER,new JScrollPane(contentTextArea));
  68. content.add(BorderLayout.CENTER,panel);
  69. panel = new JPanel();
  70. panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));
  71. panel.setBorder(new EmptyBorder(12,0,0,0));
  72. close = new JButton(jEdit.getProperty("common.close"));
  73. close.addActionListener(new ActionHandler());
  74. panel.add(Box.createGlue());
  75. panel.add(close);
  76. panel.add(Box.createGlue());
  77. getRootPane().setDefaultButton(close);
  78. content.add(BorderLayout.SOUTH,panel);
  79. registerList.addListSelectionListener(new ListHandler());
  80. registerList.setSelectedIndex(index);
  81. pack();
  82. setLocationRelativeTo(view);
  83. show();
  84. }
  85. // EnhancedDialog implementation
  86. public void ok()
  87. {
  88. dispose();
  89. }
  90. public void cancel()
  91. {
  92. dispose();
  93. }
  94. // end EnhancedDialog implementation
  95. // private members
  96. private JList registerList;
  97. private JTextArea contentTextArea;
  98. private JButton close;
  99. class Renderer extends DefaultListCellRenderer
  100. {
  101. public Component getListCellRendererComponent(
  102. JList list, Object value, int index,
  103. boolean isSelected, boolean cellHasFocus)
  104. {
  105. super.getListCellRendererComponent(list,value,
  106. index,isSelected,cellHasFocus);
  107. if(value instanceof Character)
  108. {
  109. char name = ((Character)value).charValue();
  110. String label;
  111. if(name == '\n')
  112. label = "\n";
  113. else if(name == '\t')
  114. label = "\t";
  115. else if(name == '$')
  116. label = jEdit.getProperty("view-registers.clipboard");
  117. else if(name == '%')
  118. label = jEdit.getProperty("view-registers.selection");
  119. else
  120. label = String.valueOf((char)name);
  121. setText(label);
  122. }
  123. return this;
  124. }
  125. }
  126. class ActionHandler implements ActionListener
  127. {
  128. public void actionPerformed(ActionEvent evt)
  129. {
  130. if(evt.getSource() == close)
  131. cancel();
  132. }
  133. }
  134. class ListHandler implements ListSelectionListener
  135. {
  136. public void valueChanged(ListSelectionEvent evt)
  137. {
  138. Object value = registerList.getSelectedValue();
  139. if(!(value instanceof Character))
  140. return;
  141. char name = ((Character)value).charValue();
  142. Registers.Register reg = Registers.getRegister(name);
  143. if(reg == null)
  144. return;
  145. contentTextArea.setText(reg.toString());
  146. contentTextArea.setCaretPosition(0);
  147. }
  148. }
  149. }