From: SVN by r. <sv...@ca...> - 2008-10-12 12:04:38
|
Author: roy Date: 2008-10-12 13:57:48 +0200 (Sun, 12 Oct 2008) New Revision: 312 Modified: src/main/java/nl/improved/sqlclient/charva/CharvaSQLShellWindow.java src/main/java/nl/improved/sqlclient/charva/SQLShellComponent.java Log: some fixes in method names implemented pageup/down Modified: src/main/java/nl/improved/sqlclient/charva/CharvaSQLShellWindow.java =================================================================== --- src/main/java/nl/improved/sqlclient/charva/CharvaSQLShellWindow.java 2008-10-12 11:37:51 UTC (rev 311) +++ src/main/java/nl/improved/sqlclient/charva/CharvaSQLShellWindow.java 2008-10-12 11:57:48 UTC (rev 312) @@ -21,12 +21,16 @@ import nl.improved.sqlclient.Screen; /** - * + * The sqlshell window implementation for charva. * @author roy */ class CharvaSQLShellWindow extends AbstractSQLShellWindow { private SQLShellComponent textComponent; + /** + * Constructor. + * @param textComponent the text component for rendering the text + */ public CharvaSQLShellWindow(SQLShellComponent textComponent) { this.textComponent = textComponent; } @@ -41,7 +45,10 @@ return Toolkit.getDefaultToolkit().getScreenRows()-1; } - void show() { + /** + * Force repaint of the screen. + */ + void repaintScreen() { paint(getScreen()); } @@ -75,11 +82,11 @@ if (totalLineCount > getScreenHeight()-1) { totalLineCount = getScreenHeight()-1; } - String trimmed = trim(newText); + String trimmed = trim(newText, screen.getPageUpCount()); if (trimmed.startsWith(textComponent.getText())) { textComponent.append(trimmed.substring(textComponent.getText().length())); } else { - textComponent.replaceRange(trim(newText), 0, textComponent.getText().length()); + textComponent.replaceRange(trimmed, 0, textComponent.getText().length()); } Point cursorPos = screen.getCursorPosition(); try { @@ -149,10 +156,10 @@ } else if (evt.getKeyCode() == KeyEvent.VK_DELETE) { handleInput(new InputKey(InputKey.SpecialKey.DELETE)); evt.consume(); - } else if (evt.getKeyCode() == KeyEvent.VK_PAGE_UP) { + } else if (evt.getKeyCode() == KeyEvent.VK_PAGE_DOWN) { handleInput(new InputKey(InputKey.SpecialKey.PAGE_DOWN)); evt.consume(); - } else if (evt.getKeyCode() == KeyEvent.VK_PAGE_DOWN) { + } else if (evt.getKeyCode() == KeyEvent.VK_PAGE_UP) { handleInput(new InputKey(InputKey.SpecialKey.PAGE_UP)); evt.consume(); } else if (evt.getKeyCode() == KeyEvent.VK_LEFT) { @@ -180,7 +187,7 @@ evt.consume(); } - private String trim(StringBuilder text) { + private String trim(StringBuilder text, int pageUpCount) { String strText = text.toString(); if (strText.indexOf('\n') < 0) { return strText; @@ -191,16 +198,21 @@ return strText; } StringBuilder newString = new StringBuilder(); + int offset = Math.max(0, lines.length - ((pageUpCount +1) * maxHeight)); boolean endsWithReturn = strText.endsWith("\n"); - for (int i = lines.length - maxHeight; i < lines.length; i++) { - newString.append(lines[i]); - if (i < lines.length-1 || endsWithReturn) { + for (int i = 0; i < maxHeight; i++) { + newString.append(lines[i+offset]); + if (i+offset < lines.length-1 || endsWithReturn) { newString.append('\n'); } } return newString.toString(); } + /** + * Hacked version of a charva (swing) popup menu. + * It returns the selected menu item on hide. + */ private static class MyPopupMenu extends JPopupMenu { private String selectedValue; public MyPopupMenu(Vector items) { Modified: src/main/java/nl/improved/sqlclient/charva/SQLShellComponent.java =================================================================== --- src/main/java/nl/improved/sqlclient/charva/SQLShellComponent.java 2008-10-12 11:37:51 UTC (rev 311) +++ src/main/java/nl/improved/sqlclient/charva/SQLShellComponent.java 2008-10-12 11:57:48 UTC (rev 312) @@ -34,7 +34,7 @@ component.setBounds(new Point(0,0), new Dimension(Toolkit.getDefaultToolkit().getScreenColumns()-2 , Toolkit.getDefaultToolkit().getScreenRows()-2)); frame.add(component); - component.sqlshellWindow.show(); + component.sqlshellWindow.repaintScreen(); frame.pack(); frame.show(); } |