📄 statusbar.java
字号:
if (visible >= lineCount) { buf.append("All"); } else if (firstLine == 0) { buf.append("Top"); } else if (firstLine + visible >= lineCount) { buf.append("Bot"); } else { float percent = (float)firstLine / (float)lineCount * 100.0f; buf.append(Integer.toString((int)percent)); buf.append('%'); } caretStatus.setText(buf.toString()); } } //}}} //{{{ updateBufferStatus() method public void updateBufferStatus() { //if(!isShowing()) // return; Buffer buffer = view.getBuffer(); if (showWrap) { String wrap = buffer.getStringProperty("wrap"); if(wrap.equals("none")) this.wrap.setText("-"); else if(wrap.equals("hard")) this.wrap.setText("H"); else if(wrap.equals("soft")) this.wrap.setText("S"); } if (showLineSeperator) { String lineSep = buffer.getStringProperty("lineSeparator"); if("\n".equals(lineSep)) this.lineSep.setText("U"); else if("\r\n".equals(lineSep)) this.lineSep.setText("W"); else if("\r".equals(lineSep)) this.lineSep.setText("M"); } if (showEditMode || showFoldMode || showEncoding) { /* This doesn't look pretty and mode line should * probably be split up into seperate * components/strings */ buf.setLength(0); if (buffer.isLoaded()) { if (showEditMode) buf.append(buffer.getMode().getName()); if (showFoldMode) { if (showEditMode) buf.append(","); buf.append((String)view.getBuffer().getProperty("folding")); } if (showEncoding) { if (showEditMode || showFoldMode) buf.append(","); buf.append(buffer.getStringProperty("encoding")); } } mode.setText("(" + buf.toString() + ")"); } } //}}} //{{{ updateMiscStatus() method public void updateMiscStatus() { //if(!isShowing()) // return; JEditTextArea textArea = view.getTextArea(); if (showMultiSelect) multiSelect.setText(textArea.isMultipleSelectionEnabled() ? "M" : "-"); if (showRectSelect) rectSelect.setText(textArea.isRectangularSelectionEnabled() ? "R" : "-"); if (showOverwrite) overwrite.setText(textArea.isOverwriteEnabled() ? "O" : "-"); } //}}} //{{{ Private members private View view; private JPanel panel; private Box box; private ToolTipLabel caretStatus; private Component messageComp; private JLabel message; private JLabel mode; private JLabel wrap; private JLabel multiSelect; private JLabel rectSelect; private JLabel overwrite; private JLabel lineSep; /* package-private for speed */ StringBuffer buf = new StringBuffer(); private Timer tempTimer; private boolean currentMessageIsIO; private Segment seg = new Segment(); private boolean showCaretStatus; private boolean showEditMode; private boolean showFoldMode; private boolean showEncoding; private boolean showWrap; private boolean showMultiSelect; private boolean showRectSelect; private boolean showOverwrite; private boolean showLineSeperator; //}}} static final String caretTestStr = "9999,999-999 99%"; //{{{ MouseHandler class class MouseHandler extends MouseAdapter { public void mouseClicked(MouseEvent evt) { Buffer buffer = view.getBuffer(); Object source = evt.getSource(); if(source == caretStatus) { if(evt.getClickCount() == 2) view.getTextArea().showGoToLineDialog(); } else if(source == mode) { if(evt.getClickCount() == 2) new BufferOptions(view,view.getBuffer()); } else if(source == wrap) buffer.toggleWordWrap(view); else if(source == multiSelect) view.getTextArea().toggleMultipleSelectionEnabled(); else if(source == rectSelect) view.getTextArea().toggleRectangularSelectionEnabled(); else if(source == overwrite) view.getTextArea().toggleOverwriteEnabled(); else if(source == lineSep) buffer.toggleLineSeparator(view); } } //}}} //{{{ ToolTipLabel class class ToolTipLabel extends JLabel { //{{{ getToolTipLocation() method public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(),-20); } //}}} } //}}} //{{{ MemoryStatus class class MemoryStatus extends JComponent implements ActionListener { //{{{ MemoryStatus constructor public MemoryStatus() { // fucking GTK look and feel Font font = new JLabel().getFont(); //Font font = UIManager.getFont("Label.font"); MemoryStatus.this.setFont(font); FontRenderContext frc = new FontRenderContext( null,false,false); Rectangle2D bounds = font.getStringBounds( memoryTestStr,frc); Dimension dim = new Dimension((int)bounds.getWidth(), (int)bounds.getHeight()); setPreferredSize(dim); setMaximumSize(dim); lm = font.getLineMetrics(memoryTestStr,frc); setForeground(jEdit.getColorProperty("view.status.foreground")); setBackground(jEdit.getColorProperty("view.status.background")); progressForeground = jEdit.getColorProperty( "view.status.memory.foreground"); progressBackground = jEdit.getColorProperty( "view.status.memory.background"); addMouseListener(new MouseHandler()); } //}}} //{{{ addNotify() method public void addNotify() { super.addNotify(); timer = new Timer(2000,this); timer.start(); ToolTipManager.sharedInstance().registerComponent(this); } //}}} //{{{ removeNotify() method public void removeNotify() { timer.stop(); ToolTipManager.sharedInstance().unregisterComponent(this); super.removeNotify(); } //}}} //{{{ getToolTipText() method public String getToolTipText() { Runtime runtime = Runtime.getRuntime(); int freeMemory = (int)(runtime.freeMemory() / 1024); int totalMemory = (int)(runtime.totalMemory() / 1024); int usedMemory = (totalMemory - freeMemory); Integer[] args = { new Integer(usedMemory), new Integer(totalMemory) }; return jEdit.getProperty("view.status.memory-tooltip",args); } //}}} //{{{ getToolTipLocation() method public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(),-20); } //}}} //{{{ actionPerformed() method public void actionPerformed(ActionEvent evt) { MemoryStatus.this.repaint(); } //}}} //{{{ paintComponent() method public void paintComponent(Graphics g) { Insets insets = new Insets(0,0,0,0);//MemoryStatus.this.getBorder().getBorderInsets(this); Runtime runtime = Runtime.getRuntime(); int freeMemory = (int)(runtime.freeMemory() / 1024); int totalMemory = (int)(runtime.totalMemory() / 1024); int usedMemory = (totalMemory - freeMemory); int width = MemoryStatus.this.getWidth() - insets.left - insets.right; int height = MemoryStatus.this.getHeight() - insets.top - insets.bottom - 1; float fraction = ((float)usedMemory) / totalMemory; g.setColor(progressBackground); g.fillRect(insets.left,insets.top, (int)(width * fraction), height); String str = (usedMemory / 1024) + "/" + (totalMemory / 1024) + "Mb"; FontRenderContext frc = new FontRenderContext(null,false,false); Rectangle2D bounds = g.getFont().getStringBounds(str,frc); Graphics g2 = g.create(); g2.setClip(insets.left,insets.top, (int)(width * fraction), height); g2.setColor(progressForeground); g2.drawString(str, insets.left + (int)(width - bounds.getWidth()) / 2, (int)(insets.top + lm.getAscent())); g2.dispose(); g2 = g.create(); g2.setClip(insets.left + (int)(width * fraction), insets.top,MemoryStatus.this.getWidth() - insets.left - (int)(width * fraction), height); g2.setColor(MemoryStatus.this.getForeground()); g2.drawString(str, insets.left + (int)(width - bounds.getWidth()) / 2, (int)(insets.top + lm.getAscent())); g2.dispose(); } //}}} //{{{ Private members private static final String memoryTestStr = "999/999Mb"; private LineMetrics lm; private Color progressForeground; private Color progressBackground; private Timer timer; //}}} //{{{ MouseHandler class class MouseHandler extends MouseAdapter { public void mousePressed(MouseEvent evt) { if(evt.getClickCount() == 2) { jEdit.showMemoryDialog(view); repaint(); } } } //}}} } //}}} //{{{ Clock class class Clock extends JLabel implements ActionListener { //{{{ Clock constructor public Clock() { /* FontRenderContext frc = new FontRenderContext( null,false,false); Rectangle2D bounds = getFont() .getStringBounds(getTime(),frc); Dimension dim = new Dimension((int)bounds.getWidth(), (int)bounds.getHeight()); setPreferredSize(dim); setMaximumSize(dim); */ setForeground(jEdit.getColorProperty("view.status.foreground")); setBackground(jEdit.getColorProperty("view.status.background")); } //}}} //{{{ addNotify() method public void addNotify() { super.addNotify(); update(); int millisecondsPerMinute = 1000 * 60; timer = new Timer(millisecondsPerMinute,this); timer.setInitialDelay((int)( millisecondsPerMinute - System.currentTimeMillis() % millisecondsPerMinute) + 500); timer.start(); ToolTipManager.sharedInstance().registerComponent(this); } //}}} //{{{ removeNotify() method public void removeNotify() { timer.stop(); ToolTipManager.sharedInstance().unregisterComponent(this); super.removeNotify(); } //}}} //{{{ getToolTipText() method public String getToolTipText() { return new Date().toString(); } //}}} //{{{ getToolTipLocation() method public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(),-20); } //}}} //{{{ actionPerformed() method public void actionPerformed(ActionEvent evt) { update(); } //}}} //{{{ Private members private Timer timer; //{{{ getTime() method private String getTime() { return DateFormat.getTimeInstance( DateFormat.SHORT).format(new Date()); } //}}} //{{{ update() method private void update() { setText(getTime()); } //}}} //}}} } //}}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -