PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/jEdit/tags/jedit-4-2-pre4/org/gjt/sp/jedit/gui/ViewRegisters.java

#
Java | 183 lines | 127 code | 35 blank | 21 comment | 26 complexity | ca47228803f05ece0dd96407907d82f2 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 org.gjt.sp.jedit.*;
  26. public class ViewRegisters extends EnhancedDialog
  27. {
  28. public ViewRegisters(View view)
  29. {
  30. super(view,jEdit.getProperty("view-registers.title"),true);
  31. JPanel content = new JPanel(new BorderLayout());
  32. content.setBorder(new EmptyBorder(12,12,12,12));
  33. setContentPane(content);
  34. JPanel panel = new JPanel(new BorderLayout());
  35. panel.setBorder(new EmptyBorder(0,12,0,0));
  36. JLabel label = new JLabel(jEdit.getProperty("view-registers.register"));
  37. label.setBorder(new EmptyBorder(0,0,3,0));
  38. panel.add(BorderLayout.NORTH,label);
  39. DefaultListModel registerModel = new DefaultListModel();
  40. registerList = new JList(registerModel);
  41. registerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  42. registerList.setCellRenderer(new Renderer());
  43. Registers.Register[] registers = Registers.getRegisters();
  44. int index = 0;
  45. for(int i = 0; i < registers.length; i++)
  46. {
  47. Registers.Register reg = registers[i];
  48. if(reg == null)
  49. continue;
  50. String value = reg.toString();
  51. if(value == null || value.length() == 0)
  52. continue;
  53. registerModel.addElement(new Character((char)i));
  54. }
  55. if(registerModel.getSize() == 0)
  56. registerModel.addElement(jEdit.getProperty("view-registers.none"));
  57. panel.add(BorderLayout.CENTER,new JScrollPane(registerList));
  58. content.add(BorderLayout.WEST,panel);
  59. panel = new JPanel(new BorderLayout());
  60. panel.setBorder(new EmptyBorder(0,12,0,0));
  61. label = new JLabel(jEdit.getProperty("view-registers.contents"));
  62. label.setBorder(new EmptyBorder(0,0,3,0));
  63. panel.add(BorderLayout.NORTH,label);
  64. contentTextArea = new JTextArea(10,80);
  65. contentTextArea.setEditable(false);
  66. panel.add(BorderLayout.CENTER,new JScrollPane(contentTextArea));
  67. content.add(BorderLayout.CENTER,panel);
  68. panel = new JPanel();
  69. panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));
  70. panel.setBorder(new EmptyBorder(12,0,0,0));
  71. close = new JButton(jEdit.getProperty("common.close"));
  72. close.addActionListener(new ActionHandler());
  73. panel.add(Box.createGlue());
  74. panel.add(close);
  75. panel.add(Box.createGlue());
  76. getRootPane().setDefaultButton(close);
  77. content.add(BorderLayout.SOUTH,panel);
  78. registerList.addListSelectionListener(new ListHandler());
  79. registerList.setSelectedIndex(index);
  80. pack();
  81. setLocationRelativeTo(view);
  82. show();
  83. }
  84. // EnhancedDialog implementation
  85. public void ok()
  86. {
  87. dispose();
  88. }
  89. public void cancel()
  90. {
  91. dispose();
  92. }
  93. // end EnhancedDialog implementation
  94. // private members
  95. private JList registerList;
  96. private JTextArea contentTextArea;
  97. private JButton close;
  98. class Renderer extends DefaultListCellRenderer
  99. {
  100. public Component getListCellRendererComponent(
  101. JList list, Object value, int index,
  102. boolean isSelected, boolean cellHasFocus)
  103. {
  104. super.getListCellRendererComponent(list,value,
  105. index,isSelected,cellHasFocus);
  106. if(value instanceof Character)
  107. {
  108. char name = ((Character)value).charValue();
  109. String label;
  110. if(name == '\n')
  111. label = "\n";
  112. else if(name == '\t')
  113. label = "\t";
  114. else if(name == '$')
  115. label = jEdit.getProperty("view-registers.clipboard");
  116. else if(name == '%')
  117. label = jEdit.getProperty("view-registers.selection");
  118. else
  119. label = String.valueOf((char)name);
  120. setText(label);
  121. }
  122. return this;
  123. }
  124. }
  125. class ActionHandler implements ActionListener
  126. {
  127. public void actionPerformed(ActionEvent evt)
  128. {
  129. if(evt.getSource() == close)
  130. cancel();
  131. }
  132. }
  133. class ListHandler implements ListSelectionListener
  134. {
  135. public void valueChanged(ListSelectionEvent evt)
  136. {
  137. Object value = registerList.getSelectedValue();
  138. if(!(value instanceof Character))
  139. return;
  140. char name = ((Character)value).charValue();
  141. Registers.Register reg = Registers.getRegister(name);
  142. if(reg == null)
  143. return;
  144. contentTextArea.setText(reg.toString());
  145. contentTextArea.setCaretPosition(0);
  146. }
  147. }
  148. }