From: <ez...@us...> - 2013-05-19 02:56:49
|
Revision: 23001 http://jedit.svn.sourceforge.net/jedit/?rev=23001&view=rev Author: ezust Date: 2013-05-19 02:56:27 +0000 (Sun, 19 May 2013) Log Message: ----------- Brought back "changeToPvSelected()" action. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/actions.xml plugins/Console/trunk/console/ConsoleMenuProvider.java Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2013-05-19 02:49:49 UTC (rev 23000) +++ plugins/Console/trunk/Console.props 2013-05-19 02:56:27 UTC (rev 23001) @@ -28,6 +28,7 @@ commando-compile.label=Compile Current Buffer... commando-run.label=Run Current Buffer... chdir-pv-root.label=CD to Root +chdir-pv-selected.label=CD to Selected Node project-compile.label=Compile Project project-run.label=Run Project Modified: plugins/Console/trunk/actions.xml =================================================================== --- plugins/Console/trunk/actions.xml 2013-05-19 02:49:49 UTC (rev 23000) +++ plugins/Console/trunk/actions.xml 2013-05-19 02:56:27 UTC (rev 23001) @@ -54,7 +54,12 @@ VFSBrowser.browseDirectory(view,directory); </CODE> </ACTION> - + <ACTION NAME="chdir-pv-selected"> + <CODE> + changeToPvSelected(view); + </CODE> + </ACTION> + <ACTION NAME="chdir-pv-root"> <CODE> changeToPvRoot(view); Modified: plugins/Console/trunk/console/ConsoleMenuProvider.java =================================================================== --- plugins/Console/trunk/console/ConsoleMenuProvider.java 2013-05-19 02:49:49 UTC (rev 23000) +++ plugins/Console/trunk/console/ConsoleMenuProvider.java 2013-05-19 02:56:27 UTC (rev 23001) @@ -44,6 +44,7 @@ menu.add(GUIUtilities.loadMenuItem(jEdit.getAction("project-run"), false)); menu.addSeparator(); menu.add(GUIUtilities.loadMenuItem(jEdit.getAction("chdir-pv-root"), false)); + menu.add(GUIUtilities.loadMenuItem(jEdit.getAction("chdir-pv-selected"), false)); superMenu.add(menu); superMenu.addSeparator(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2013-05-19 16:48:51
|
Revision: 23004 http://jedit.svn.sourceforge.net/jedit/?rev=23004&view=rev Author: ezust Date: 2013-05-19 16:47:35 +0000 (Sun, 19 May 2013) Log Message: ----------- Better logic in commandoptionpane. Modified Paths: -------------- plugins/Console/trunk/console/ProjectCommandOptionPane.java plugins/Console/trunk/console/bsh/changeToPvRoot.bsh plugins/Console/trunk/docs/CHANGELOG.txt Modified: plugins/Console/trunk/console/ProjectCommandOptionPane.java =================================================================== --- plugins/Console/trunk/console/ProjectCommandOptionPane.java 2013-05-19 03:28:37 UTC (rev 23003) +++ plugins/Console/trunk/console/ProjectCommandOptionPane.java 2013-05-19 16:47:35 UTC (rev 23004) @@ -61,14 +61,12 @@ shell = new JComboBox(Shell.getShellNames()); _shell = proj.getProperty("console.shell"); - if (_shell == null) { - _shell = Console.shellForVFS(proj.getRootPath()); - } - else if (console.Shell.getShell(_shell) == null) { - proj.removeProperty("console.shell"); - _shell = "System"; - } + + // check that the previously chosen shell was not uninstalled: + if ((_shell != null) && (console.Shell.getShell(_shell) == null)) + _shell = null; + if (_shell == null) _shell = Console.shellForVFS(proj.getRootPath()); shell.setSelectedItem(_shell); String _compile = proj.getProperty("console.compile"); Modified: plugins/Console/trunk/console/bsh/changeToPvRoot.bsh =================================================================== --- plugins/Console/trunk/console/bsh/changeToPvRoot.bsh 2013-05-19 03:28:37 UTC (rev 23003) +++ plugins/Console/trunk/console/bsh/changeToPvRoot.bsh 2013-05-19 16:47:35 UTC (rev 23004) @@ -13,7 +13,6 @@ if (project == null) return; con = view.getDockableWindowManager().getDockable("console"); if (con == null) return; - if (!con.isVisible()) return; // view.getDockableWindowManager().showDockableWindow("console"); path = project.getRootPath(); _shell = project.getProperty("console.shell"); Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2013-05-19 03:28:37 UTC (rev 23003) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2013-05-19 16:47:35 UTC (rev 23004) @@ -6,16 +6,18 @@ Version 5.1.2 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Alan Ezust] New Console System Shell option: chdir events: Follow textarea - NPE fixed in ErrorsOptionPane - Instead of VFSNodeSelected messages, SshConsole always gets chdir messages to follow textArea buffer dir. + NPE fixed in ErrorsOptionPane. + Instead of VFSNodeSelected messages, SshConsole always gets textArea buffer chdir messages. + Re-added "change to PV selected node" action. + Bugfix in "change to PV root dir" and corresponding option in ProjectCommandOptionPane Version 5.1.1 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Alan Ezust] - #3589470 Revisited: Brought back old "generic" error pattern, and added gcc pattern. - Fix #3605191: Exception after node selected on windows. + #3589470 Revisited: Brought back old "generic" error pattern, and added gcc pattern. + Fix #3605191: Exception after node selected on windows. [Artem Bryantsev] Remade ANSI escape code parser's options: migration from values based on String to ones based on int. - + Version 5.1 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Artem Bryantsev] FR #3472822 - Console + Task Monitor @@ -39,7 +41,7 @@ Fixed incompatibility with SshConsole/ErrorList integration introduced in Console 4.5 (incorrect error paths - failed to open the correct remote files from ErrorList) New APIs: Console.shellForVFS(), Console.chDir(), Shell.chDir(), Shell.handlesVFS(). Refactored chdir code. New project option: Shell to use for executing build/run project commands. - #3589470: Better regexes for gcc 4.7.2 - enhanced "generic" error pattern. + #3589470: Better regexes for gcc 4.7.2 - enhanced "generic" error pattern. Version 5.0 Requires jEdit 5.0pre1, Java 1.6, ErrorList 2.0, and ProjectViewer 3.4.2 (optional). [Artem Bryantsev] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2013-05-19 17:05:45
|
Revision: 23005 http://jedit.svn.sourceforge.net/jedit/?rev=23005&view=rev Author: ezust Date: 2013-05-19 17:05:30 +0000 (Sun, 19 May 2013) Log Message: ----------- tooltips. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/console/ProjectCommandOptionPane.java Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2013-05-19 16:47:35 UTC (rev 23004) +++ plugins/Console/trunk/Console.props 2013-05-19 17:05:30 UTC (rev 23005) @@ -171,8 +171,9 @@ options.pv.commands.compile=Compile Project: options.pv.commands.run=Run Project: -options.pv.shell=Shell: - +options.pv.shell=Project Root Shell: +options.pv.shell.tooltip=CD to project root will switch to this shell first +options.pv.commands.tooltip=This command is run from the Project Root Shell/Dir ### SystemShell console.shell.info.toggle=true console.shell.info=This shell runs operating system processes.\n\ Modified: plugins/Console/trunk/console/ProjectCommandOptionPane.java =================================================================== --- plugins/Console/trunk/console/ProjectCommandOptionPane.java 2013-05-19 16:47:35 UTC (rev 23004) +++ plugins/Console/trunk/console/ProjectCommandOptionPane.java 2013-05-19 17:05:30 UTC (rev 23005) @@ -56,10 +56,12 @@ compile = new HistoryTextField("console.compile.project"); run = new HistoryTextField("console.run.project"); + compile.setToolTipText(jEdit.getProperty("options.pv.commands.tooltip")); + run.setToolTipText(jEdit.getProperty("options.pv.commands.tooltip")); + shell = new JComboBox(Shell.getShellNames()); + shell.setToolTipText(jEdit.getProperty("options.pv.shell.tooltip")); - shell = new JComboBox(Shell.getShellNames()); - _shell = proj.getProperty("console.shell"); // check that the previously chosen shell was not uninstalled: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sy...@us...> - 2013-05-31 09:45:19
|
Revision: 23018 http://jedit.svn.sourceforge.net/jedit/?rev=23018&view=rev Author: synh Date: 2013-05-31 09:45:12 +0000 (Fri, 31 May 2013) Log Message: ----------- Fix #3613991: Merge Stdout + Stderr on Windows duplicates output Modified Paths: -------------- plugins/Console/trunk/console/ParsingOutputStreamTask.java plugins/Console/trunk/docs/CHANGELOG.txt Modified: plugins/Console/trunk/console/ParsingOutputStreamTask.java =================================================================== --- plugins/Console/trunk/console/ParsingOutputStreamTask.java 2013-05-29 17:46:15 UTC (rev 23017) +++ plugins/Console/trunk/console/ParsingOutputStreamTask.java 2013-05-31 09:45:12 UTC (rev 23018) @@ -254,10 +254,16 @@ */ public void push(SimpleAttributeSet currentAttrs, String str) { - if ( pop(currentAttrs != cache_lastAttrs) ) + if (currentAttrs != cache_lastAttrs) { + pop(true); + cache_lastAttrs = currentAttrs; } + else + { + pop(false); + } buffer_start = lineBuffer.append(str).length(); } // }}} @@ -271,23 +277,26 @@ */ public boolean pop(boolean forced) { - if (forced || cache_strCount >= CACHE_SIZE_LIMIT) + if (buffer_start > 0) { - output.writeAttrs(cache_lastAttrs, lineBuffer.substring(0, buffer_start)); + if (forced || cache_strCount >= CACHE_SIZE_LIMIT) + { + output.writeAttrs(cache_lastAttrs, lineBuffer.substring(0, buffer_start)); + + if ( buffer_start < lineBuffer.length() ) // data over cache + { + lineBuffer.delete(0, buffer_start); + } + else // only cache + { + lineBuffer.setLength(0); + } + + buffer_start = 0; + cache_strCount = 0; - if ( buffer_start < lineBuffer.length() ) // data over cache - { - lineBuffer.delete(0, buffer_start); + return true; } - else // only cache - { - lineBuffer.setLength(0); - } - - buffer_start = 0; - cache_strCount = 0; - - return true; } return false; @@ -432,33 +441,32 @@ protected void outputData() throws Exception { /* the idea: - * 1. save "external" buffer (lineBuffer) to "internal" (line) + * 1. save data from "external" buffer (lineBuffer) to "internal" (line) * 2. use "external" buffer as an outputting cache * 3. if we have an unbreaked input string - append it to "external" * buffer AFTER the cached data; use "buffer_start" for navigation * purposes */ - String line = lineBuffer.substring(buffer_start); + // extract noncached data + String line = trim_cache(); // convert all line breaks to internal "standard": "\n" if ( ConsolePane.eolExchangeRequired() ) { - lineBuffer.setLength(buffer_start); - line = lineBuffer.append( ConsolePane.eolExchanging(line) ).toString(); + line = ConsolePane.eolExchanging(line); } // remove all ANSI escape sequences if ( ansiParser != null && ansiParser.touch(AnsiEscapeParser.Behaviour.REMOVE_ALL, line) ) { - lineBuffer.setLength(buffer_start); - line = lineBuffer.append( ansiParser.removeAll(line) ).toString(); + line = ansiParser.removeAll(line); } - // now there is no necessity to use external buffer -> clean - lineBuffer.ensureCapacity(buffer_start + line.length()); - trim_cache(); + //****************************************** + // parse error messages and escape sequences + Matcher matcher = eolPattern.matcher(line); int bPosition = 0; Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2013-05-29 17:46:15 UTC (rev 23017) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2013-05-31 09:45:12 UTC (rev 23018) @@ -10,6 +10,8 @@ Instead of VFSNodeSelected messages, SshConsole always gets textArea buffer chdir messages. Re-added "change to PV selected node" action. Bugfix in "change to PV root dir" and corresponding option in ProjectCommandOptionPane + [Artem Bryantsev] + Fix #3613991: Merge Stdout + Stderr on Windows duplicates output Version 5.1.1 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Alan Ezust] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2013-06-01 04:42:57
|
Revision: 23023 http://jedit.svn.sourceforge.net/jedit/?rev=23023&view=rev Author: ezust Date: 2013-06-01 04:42:50 +0000 (Sat, 01 Jun 2013) Log Message: ----------- prepare for tagging. Modified Paths: -------------- plugins/Console/trunk/console/bsh/changeToPvRoot.bsh plugins/Console/trunk/lang_de.properties Modified: plugins/Console/trunk/console/bsh/changeToPvRoot.bsh =================================================================== --- plugins/Console/trunk/console/bsh/changeToPvRoot.bsh 2013-06-01 04:15:49 UTC (rev 23022) +++ plugins/Console/trunk/console/bsh/changeToPvRoot.bsh 2013-06-01 04:42:50 UTC (rev 23023) @@ -13,7 +13,6 @@ if (project == null) return; con = view.getDockableWindowManager().getDockable("console"); if (con == null) return; - // view.getDockableWindowManager().showDockableWindow("console"); path = project.getRootPath(); _shell = project.getProperty("console.shell"); if (_shell == null) { Modified: plugins/Console/trunk/lang_de.properties =================================================================== --- plugins/Console/trunk/lang_de.properties 2013-06-01 04:15:49 UTC (rev 23022) +++ plugins/Console/trunk/lang_de.properties 2013-06-01 04:42:50 UTC (rev 23023) @@ -4,7 +4,6 @@ # :folding=explicit:collapseFolds=1:noWordSep=_\\: # # Missing properties for labels: -# - Option pane "Compile & Run": upper part ### Plugin properties plugin.console.ConsolePlugin.name=Konsole This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2013-08-20 20:54:46
|
Revision: 23144 http://jedit.svn.sourceforge.net/jedit/?rev=23144&view=rev Author: ezust Date: 2013-08-20 20:54:39 +0000 (Tue, 20 Aug 2013) Log Message: ----------- Bump version. Docs. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/docs/CHANGELOG.txt plugins/Console/trunk/docs/users-guide.xml Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2013-08-20 06:43:22 UTC (rev 23143) +++ plugins/Console/trunk/Console.props 2013-08-20 20:54:39 UTC (rev 23144) @@ -3,7 +3,7 @@ # We provide a custom action set, so we must be activated at startup plugin.console.ConsolePlugin.activate=startup plugin.console.ConsolePlugin.name=Console -plugin.console.ConsolePlugin.version=5.1.2 +plugin.console.ConsolePlugin.version=5.1.3 # jEdit 4.4 plugin API for short description. plugin.console.ConsolePlugin.description=A command line shell and plugin interface for adding other custom shells. Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2013-08-20 06:43:22 UTC (rev 23143) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2013-08-20 20:54:39 UTC (rev 23144) @@ -3,6 +3,10 @@ jEdit Console Plugin Changelog $Date$ + Version 5.1.3 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). + [Alan Ezust] + Use 'patch' edit mode for BufferOutput buffers of commands with 'diff' or 'patch' in them. + Version 5.1.2 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Alan Ezust] New Console System Shell option: chdir events: Follow textarea Modified: plugins/Console/trunk/docs/users-guide.xml =================================================================== --- plugins/Console/trunk/docs/users-guide.xml 2013-08-20 06:43:22 UTC (rev 23143) +++ plugins/Console/trunk/docs/users-guide.xml 2013-08-20 20:54:39 UTC (rev 23144) @@ -269,7 +269,9 @@ <listitem> <para> <guibutton>Run to buffer</guibutton> - runs the - currently-entered command, but shows the output in a new buffer, instead of in the console window. This has the same effect as pressing <keycap>Ctrl-Enter</keycap> from the text field. </para> + currently-entered command, but shows the output in a new buffer, instead of in + the console window. This has the same effect as pressing + <keycap>Ctrl-Enter</keycap> from the text field. </para> </listitem> <listitem> @@ -866,7 +868,9 @@ fails, you will always be asked for confirmation before running the next one, no matter what. Some commando files, such as the <filename>diff</filename> file included with the Console plugin, show their output in a new buffer, - rather than the console window. + rather than the console window. If the command contains <literal>diff</literal> + or <literal>patch</literal>, the edit mode will be set automatically to + <literal>patch</literal>. </para> </section> @@ -1496,14 +1500,19 @@ </funcsynopsis> <para> - The <function>execute()</function> method is called when the user enters a command. The complete command line is passed in as one string; + The <function>execute()</function> method is called when the user enters a + command. The complete command line is passed in as one string; how it is parsed is entirely up to you. </para> <para> - The <varname>output</varname> object provided is either an instance of <classname>ShellState</classname> or a special <classname>BufferOutput</classname> object if the user elected to have the command output go into a new buffer. + The <varname>output</varname> object provided is either an instance of + <classname>ShellState</classname> or a special + <classname>BufferOutput</classname> object if the user elected to have the + command output go into a new buffer. </para> <para> - As a convention, fatal errors (for example, parse errors in shell commands) should be sent to the <parameter>error</parameter> stream. + As a convention, fatal errors (for example, parse errors in shell commands) + should be sent to the <parameter>error</parameter> stream. </para> </listitem> <listitem> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2013-12-07 23:52:24
|
Revision: 23375 http://jedit.svn.sourceforge.net/jedit/?rev=23375&view=rev Author: ezust Date: 2013-12-07 23:52:16 +0000 (Sat, 07 Dec 2013) Log Message: ----------- New Project option: run commands from different directroy (shadow build/run). Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/build.xml plugins/Console/trunk/console/BufferOutput.java plugins/Console/trunk/console/ConsolePlugin.java plugins/Console/trunk/console/ProjectCommandOptionsService.java plugins/Console/trunk/console/Shell.java plugins/Console/trunk/console/commando/CommandoThread.java plugins/Console/trunk/console/commands/latex.xml plugins/Console/trunk/docs/CHANGELOG.txt Added Paths: ----------- plugins/Console/trunk/console/options/ProjectCommandOptionPane.java Removed Paths: ------------- plugins/Console/trunk/console/ProjectCommandOptionPane.java Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/Console.props 2013-12-07 23:52:16 UTC (rev 23375) @@ -3,19 +3,21 @@ # We provide a custom action set, so we must be activated at startup plugin.console.ConsolePlugin.activate=startup plugin.console.ConsolePlugin.name=Console -plugin.console.ConsolePlugin.version=5.1.3 +plugin.console.ConsolePlugin.version=5.1.4 # jEdit 4.4 plugin API for short description. plugin.console.ConsolePlugin.description=A command line shell and plugin interface for adding other custom shells. plugin.console.ConsolePlugin.docs=index.html -plugin.console.ConsolePlugin.author=Slava Pestov, Alan Ezust, Artem Bryantsev +plugin.console.ConsolePlugin.author=Slava Pestov (former), Alan Ezust, Artem Bryantsev # see jEdit.getBuild() to understand the numbering scheme. plugin.console.ConsolePlugin.depend.0=jedit 05.00.99.00 plugin.console.ConsolePlugin.depend.1=jdk 1.6 plugin.console.ConsolePlugin.depend.2=plugin errorlist.ErrorListPlugin 2.1 -plugin.console.ConsolePlugin.depend.3=optional plugin projectviewer.ProjectPlugin 3.5.0 +plugin.console.ConsolePlugin.depend.3=optional plugin CommonControlsPlugin 1.5 +plugin.console.ConsolePlugin.depend.4=optional plugin projectviewer.ProjectPlugin 3.5.0 + # Menu plugin.console.ConsolePlugin.menu=console run-last-console-command - \ commando - commando-compile commando-run console-clear - \ @@ -166,14 +168,14 @@ environment variables.</p></HTML> options.pv.commands.label=Console +options.pv.useRunDir=Directory to run commands: options.pv.commands.help=You can run these commands from Plugins->Console->Project. options.pv.commands.compile=Compile Project: options.pv.commands.run=Run Project: options.pv.shell=Project Root Shell: -options.pv.shell.tooltip=CD to project root will switch to this shell first -options.pv.commands.tooltip=This command is run from the Project Root Shell/Dir +options.pv.shell.tooltip=Use this shell for running commands ### SystemShell console.shell.info.toggle=true console.shell.info=This shell runs operating system processes.\n\ Modified: plugins/Console/trunk/build.xml =================================================================== --- plugins/Console/trunk/build.xml 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/build.xml 2013-12-07 23:52:16 UTC (rev 23375) @@ -8,6 +8,12 @@ - If necessary, change the list of files in the 'packageFiles' selector --> <!-- ================================================== --> + + <!-- One of these two property files below should define build.support to point to + a checkout of the build-support project: + svn co https://jedit.svn.sourceforge.net/svnroot/jedit/build-support/trunk + --> + <property file="build.properties" /> <property file="../build.properties" /> <property name="javadoc.packagenames" value="console.*,jcfunc.*" /> @@ -41,6 +47,7 @@ <path id="project.class.path"> <pathelement location="${jedit.plugins.dir}/ProjectViewer.jar"/> <pathelement location="${jedit.plugins.dir}/ErrorList.jar" /> + <pathelement location="${jedit.plugins.dir}/CommonControls.jar" /> </path> </project> Modified: plugins/Console/trunk/console/BufferOutput.java =================================================================== --- plugins/Console/trunk/console/BufferOutput.java 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/console/BufferOutput.java 2013-12-07 23:52:16 UTC (rev 23375) @@ -41,17 +41,16 @@ /** * - * Output to buffer implementation. + * Implementation of Console "Shell Command, Output to New Buffer" * - * TODO: add better docs here. - * */ public class BufferOutput implements Output { /** Guess the edit mode of the output based on the command line executed. */ - static public String guessMode(String command) { + static public String guessMode(String command) { + command = command.toLowerCase(); if (command.contains("diff") || command.contains("patch")) return "patch"; if (command.contains("html")) return "html"; Modified: plugins/Console/trunk/console/ConsolePlugin.java =================================================================== --- plugins/Console/trunk/console/ConsolePlugin.java 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/console/ConsolePlugin.java 2013-12-07 23:52:16 UTC (rev 23375) @@ -546,19 +546,14 @@ if (cmd == null || cmd.trim() == "") return; } - - // Run the command in the project's root, but then return to - // the original working directory - final SystemShell systemShell = getSystemShell(); + view.getDockableWindowManager().showDockableWindow("console"); final Console console = (Console) getConsole(view); - console.setShell("System"); if (jEdit.getBooleanProperty("console.clearBeforeExecute")) console.clear(); -/* console.getOutput().writeAttrs( - ConsolePane.colorAttributes(console.getInfoColor()), - "\n"+cmd+"\n"); */ - console.chDir(project.getRootPath(), true); + String runDir = project.getProperty("console.runDir"); + if (runDir == null) runDir = project.getRootPath(); + console.chDir(runDir, true); console.run(console.getShell(), console.getOutput(), cmd); } // }}} Deleted: plugins/Console/trunk/console/ProjectCommandOptionPane.java =================================================================== --- plugins/Console/trunk/console/ProjectCommandOptionPane.java 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/console/ProjectCommandOptionPane.java 2013-12-07 23:52:16 UTC (rev 23375) @@ -1,105 +0,0 @@ -/* - * ProjectCommandOptionsService.java - * :tabSize=4:indentSize=4:noTabs=false: - * :folding=explicit:collapseFolds=1: - * - * Copyright © 2010-2013 Damien Radtke, Alan Ezust - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package console; - - -import javax.swing.*; -import javax.swing.JComboBox; - -import org.gjt.sp.jedit.gui.HistoryTextField; -import org.gjt.sp.jedit.jEdit; -import projectviewer.vpt.VPTProject; -import projectviewer.gui.OptionPaneBase; - -/** - * @author Damien Radtke - * Projectviewer Console OptionPane - * An option pane for configuring project commands - */ -public class ProjectCommandOptionPane extends OptionPaneBase { - - private VPTProject proj; - private JComboBox shell; - private String _shell; - private HistoryTextField compile; - private HistoryTextField run; - - /* - * Constructor for ProjectCommandOptionPane - */ - public ProjectCommandOptionPane(VPTProject proj) { - super("pv.commands", "console"); - this.proj = proj; - } - - protected void _init() { - - compile = new HistoryTextField("console.compile.project"); - run = new HistoryTextField("console.run.project"); - compile.setToolTipText(jEdit.getProperty("options.pv.commands.tooltip")); - run.setToolTipText(jEdit.getProperty("options.pv.commands.tooltip")); - - shell = new JComboBox(Shell.getShellNames()); - shell.setToolTipText(jEdit.getProperty("options.pv.shell.tooltip")); - - _shell = proj.getProperty("console.shell"); - - // check that the previously chosen shell was not uninstalled: - if ((_shell != null) && (console.Shell.getShell(_shell) == null)) - _shell = null; - - if (_shell == null) _shell = Console.shellForVFS(proj.getRootPath()); - shell.setSelectedItem(_shell); - - String _compile = proj.getProperty("console.compile"); - if (_compile != null) - compile.setText(_compile); - - String _run = proj.getProperty("console.run"); - if (_run != null) - run.setText(_run); - - addComponent(new JLabel(jEdit.getProperty("options.pv.commands.help"))); - addComponent(jEdit.getProperty("options.pv.commands.compile"), compile); - addComponent(jEdit.getProperty("options.pv.commands.run"), run); - addComponent(jEdit.getProperty("options.pv.shell"), shell); - - } - - protected void _save() { - String ccmd = compile.getText(); - if (!ccmd.equals("")) { - proj.setProperty("console.compile", compile.getText()); - compile.getModel().addItem(ccmd); - } - String rcmd = run.getText(); - if (!rcmd.equals("")) { - run.getModel().addItem(rcmd); - proj.setProperty("console.run", rcmd); - } - String favoriteShell = shell.getSelectedItem().toString(); - if (!favoriteShell.equals(_shell)) - proj.setProperty("console.shell", favoriteShell); - } - -} Modified: plugins/Console/trunk/console/ProjectCommandOptionsService.java =================================================================== --- plugins/Console/trunk/console/ProjectCommandOptionsService.java 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/console/ProjectCommandOptionsService.java 2013-12-07 23:52:16 UTC (rev 23375) @@ -27,6 +27,8 @@ import org.gjt.sp.jedit.OptionPane; import org.gjt.sp.jedit.OptionGroup; +import console.options.ProjectCommandOptionPane; + /** * @author Damien Radtke * class ProjectCommandOptionsService Modified: plugins/Console/trunk/console/Shell.java =================================================================== --- plugins/Console/trunk/console/Shell.java 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/console/Shell.java 2013-12-07 23:52:16 UTC (rev 23375) @@ -24,8 +24,6 @@ import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.gui.DockableWindowManager; -import org.gjt.sp.util.Log; -import org.gjt.sp.util.StringList; // {{{ Shell class @@ -87,15 +85,7 @@ */ public static String[] getShellNames() { - StringList retVal = new StringList(); - - String[] newAPI = ServiceManager.getServiceNames(SERVICE); - for(int i = 0; i < newAPI.length; i++) - { - retVal.add(newAPI[i]); - } - - return retVal.toArray(); + return ServiceManager.getServiceNames(SERVICE); } //}}} //{{{ handlesVFS() Modified: plugins/Console/trunk/console/commando/CommandoThread.java =================================================================== --- plugins/Console/trunk/console/commando/CommandoThread.java 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/console/commando/CommandoThread.java 2013-12-07 23:52:16 UTC (rev 23375) @@ -27,7 +27,7 @@ import javax.swing.*; import java.util.Vector; import org.gjt.sp.jedit.*; -import org.gjt.sp.util.Log; + //}}} // {{{ commandothread class class CommandoThread extends Thread Modified: plugins/Console/trunk/console/commands/latex.xml =================================================================== --- plugins/Console/trunk/console/commands/latex.xml 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/console/commands/latex.xml 2013-12-07 23:52:16 UTC (rev 23375) @@ -43,10 +43,11 @@ <TOGGLE LABEL="Process a TCX table" VARNAME="tcx"/> </CAPTION> - <CAPTION LABEL="Output options"> - <CHOICE LABEL="Output format" VARNAME="format" DEFAULT="dvi"> - <OPTION LABEL="DVI" VALUE="dvi"/> - <OPTION LABEL="PDF" VALUE="pdf"/> + <CAPTION LABEL="Options"> + <CHOICE LABEL="Latex Executable" VARNAME="executable" DEFAULT="xelatex"> + <OPTION LABEL="xelatex" VALUE="xelatex"/> + <OPTION LABEL="latex" VALUE="latex"/> + <OPTION LABEL="pdflatex" VALUE="pdflatex"/> </CHOICE> <CHOICE LABEL="Interaction mode" VARNAME="interaction" DEFAULT="nonstopmode"> @@ -63,19 +64,16 @@ <COMMANDS> <COMMAND SHELL="System"> buf = new StringBuffer(); - + dir = sourcedir; if (makeIn.equals("projectroot")) { dir = projectroot; } else if (makeIn.equals("customloc")) { dir = customlocation; } - else dir = sourcedir; - if(format.equals("dvi")) - buf.append("latex"); - else - buf.append("pdflatex"); + console.ConsolePlugin.getConsole(view).chDir(dir); + buf.append(executable); if(!font_max.equals("")) { Added: plugins/Console/trunk/console/options/ProjectCommandOptionPane.java =================================================================== --- plugins/Console/trunk/console/options/ProjectCommandOptionPane.java (rev 0) +++ plugins/Console/trunk/console/options/ProjectCommandOptionPane.java 2013-12-07 23:52:16 UTC (rev 23375) @@ -0,0 +1,147 @@ +/* + * ProjectCommandOptionsService.java + * :tabSize=4:indentSize=4:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright © 2010-2013 Damien Radtke, Alan Ezust + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package console.options; + + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.*; + +import org.gjt.sp.jedit.gui.HistoryTextField; +import org.gjt.sp.jedit.jEdit; + +import common.gui.FileTextField; + +import console.Console; +import console.Shell; +import projectviewer.vpt.VPTProject; +import projectviewer.gui.OptionPaneBase; + +/** ProjectViewer Console OptionPane + * + * An option pane for configuring project commands + * + * @author Damien Radtke + * @author Alan Ezust + * + */ +@SuppressWarnings("serial") +public class ProjectCommandOptionPane extends OptionPaneBase implements ActionListener { + + private VPTProject proj; + private JComboBox<String> shell; + private String _shell; + private HistoryTextField compile; + + private HistoryTextField run; + private JCheckBox useRunDir; + private FileTextField runDir; + private String _runDir; + + /* + * Constructor for ProjectCommandOptionPane + */ + public ProjectCommandOptionPane(VPTProject proj) { + super("pv.commands", "console"); + this.proj = proj; + } + + protected void _init() { + + compile = new HistoryTextField("console.compile.project"); + + run = new HistoryTextField("console.run.project"); + useRunDir = new JCheckBox(jEdit.getProperty("options.pv.useRunDir")); + runDir = new FileTextField(); + shell = new JComboBox<String>(Shell.getShellNames()); + + runDir.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + +// compile.setToolTipText(jEdit.getProperty("options.pv.commands.tooltip")); +// run.setToolTipText(jEdit.getProperty("options.pv.commands.tooltip")); + shell.setToolTipText(jEdit.getProperty("options.pv.shell.tooltip")); + + _runDir = proj.getProperty("console.runDir"); + useRunDir.setSelected(_runDir != null); + useRunDir.addActionListener(this); + if (_runDir == null) + _runDir = proj.getRootPath(); + runDir.getTextField().setText(_runDir); + + + _shell = proj.getProperty("console.shell"); + // check that the previously chosen shell was not uninstalled: + if ((_shell != null) && (console.Shell.getShell(_shell) == null)) + _shell = null; + + if (_shell == null) _shell = Console.shellForVFS(proj.getRootPath()); + shell.setSelectedItem(_shell); + + String _compile = proj.getProperty("console.compile"); + if (_compile != null) + compile.setText(_compile); + + String _run = proj.getProperty("console.run"); + if (_run != null) + run.setText(_run); + + addComponent(new JLabel(jEdit.getProperty("options.pv.commands.help"))); + addComponent(jEdit.getProperty("options.pv.commands.compile"), compile); + addComponent(jEdit.getProperty("options.pv.commands.run"), run); + addComponent(useRunDir, runDir); + addComponent(jEdit.getProperty("options.pv.shell"), shell); + actionPerformed(null); + + } + + protected void _save() { + String ccmd = compile.getText(); + if (!ccmd.equals("")) { + proj.setProperty("console.compile", ccmd); + compile.getModel().addItem(ccmd); + } + else proj.removeProperty("console.compile"); + + String rcmd = run.getText(); + if (!rcmd.equals("")) { + run.getModel().addItem(rcmd); + proj.setProperty("console.run", rcmd); + } + else proj.removeProperty("console.run"); + + String favoriteShell = shell.getSelectedItem().toString(); + if (!favoriteShell.equals(_shell)) + proj.setProperty("console.shell", favoriteShell); + String rDir = runDir.getTextField().getText(); + if (useRunDir.isSelected() && (rDir != _runDir)) + proj.setProperty("console.runDir", rDir); + else proj.removeProperty("console.runDir"); + } + + @Override + public void actionPerformed(ActionEvent e) { + runDir.setEnabled(useRunDir.isSelected()); + } + +} Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2013-12-07 14:52:00 UTC (rev 23374) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2013-12-07 23:52:16 UTC (rev 23375) @@ -2,6 +2,9 @@ jEdit Console Plugin Changelog $Date$ + Version 5.1.4 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, CommonControls 1.5, and ProjectViewer 3.5 (optional). + [Alan Ezust] + New Project option: run commands from different directroy (shadow build/run). Version 5.1.3 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Alan Ezust] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2013-12-08 16:17:05
|
Revision: 23376 http://jedit.svn.sourceforge.net/jedit/?rev=23376&view=rev Author: ezust Date: 2013-12-08 16:16:56 +0000 (Sun, 08 Dec 2013) Log Message: ----------- Small label change. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/docs/CHANGELOG.txt Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2013-12-07 23:52:16 UTC (rev 23375) +++ plugins/Console/trunk/Console.props 2013-12-08 16:16:56 UTC (rev 23376) @@ -14,7 +14,7 @@ plugin.console.ConsolePlugin.depend.0=jedit 05.00.99.00 plugin.console.ConsolePlugin.depend.1=jdk 1.6 plugin.console.ConsolePlugin.depend.2=plugin errorlist.ErrorListPlugin 2.1 -plugin.console.ConsolePlugin.depend.3=optional plugin CommonControlsPlugin 1.5 +plugin.console.ConsolePlugin.depend.3=optional plugin CommonControlsPlugin 1.7.1 plugin.console.ConsolePlugin.depend.4=optional plugin projectviewer.ProjectPlugin 3.5.0 @@ -168,7 +168,7 @@ environment variables.</p></HTML> options.pv.commands.label=Console -options.pv.useRunDir=Directory to run commands: +options.pv.useRunDir=Run commands from here: options.pv.commands.help=You can run these commands from Plugins->Console->Project. options.pv.commands.compile=Compile Project: Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2013-12-07 23:52:16 UTC (rev 23375) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2013-12-08 16:16:56 UTC (rev 23376) @@ -2,9 +2,9 @@ jEdit Console Plugin Changelog $Date$ - Version 5.1.4 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, CommonControls 1.5, and ProjectViewer 3.5 (optional). + Version 5.1.4 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, CommonControls 1.7, and ProjectViewer 3.5 (optional). [Alan Ezust] - New Project option: run commands from different directroy (shadow build/run). + New Project option: run commands from different directory (shadow build/run). Version 5.1.3 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Alan Ezust] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2014-07-10 17:18:31
|
Revision: 23617 http://sourceforge.net/p/jedit/svn/23617 Author: ezust Date: 2014-07-10 17:18:24 +0000 (Thu, 10 Jul 2014) Log Message: ----------- Made wrapping brackets around arg lists an option on windows. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/console/ProcessRunner.java plugins/Console/trunk/console/options/SystemOptionPane.java Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2014-07-10 15:54:38 UTC (rev 23616) +++ plugins/Console/trunk/Console.props 2014-07-10 17:18:24 UTC (rev 23617) @@ -99,6 +99,8 @@ options.console.general.changedir.pvchange=On Project change, cd to project root dir options.console.general.changedir.followTextArea=When TextArea buffer dir changes, cd to it +options.console.shell.system.wrapBrackets=Wrap round brackets around argument lists in Windows shells + # options.console.general.changedir.pvselect=On ProjectViewer select node, cd to node dir options.console.general.mergeError=Merge stdout and stderr options.console.general.welcome=Show welcome message Modified: plugins/Console/trunk/console/ProcessRunner.java =================================================================== --- plugins/Console/trunk/console/ProcessRunner.java 2014-07-10 15:54:38 UTC (rev 23616) +++ plugins/Console/trunk/console/ProcessRunner.java 2014-07-10 17:18:24 UTC (rev 23617) @@ -161,13 +161,14 @@ } /* cmd, in contrast, can accept multiple arguments */ else { - if (containsBracketsOrRedirects(arglist)) - arglist.addAll(args); - else { + if (jEdit.getBooleanProperty("console.shell.system.wrapBrackets") && (!containsBracketsOrRedirects(args))) { arglist.add ("("); arglist.addAll(args); arglist.add(")"); } + else { + arglist.addAll(args); + } } ProcessBuilder processBuilder = new ProcessBuilder(); Map<String, String> processEnv = processBuilder.environment(); @@ -183,11 +184,11 @@ } // }}} - static final Pattern charPattern = Pattern.compile("[<>()]"); + static final Pattern charPattern = Pattern.compile("[<>\\(\\)]"); /** @return true if there are parantheses or redirect symbols in the list of arguments */ - static boolean containsBracketsOrRedirects(StringList arglist) { + static boolean containsBracketsOrRedirects(String[] arglist) { for (String a: arglist) { Matcher m = charPattern.matcher(a); Modified: plugins/Console/trunk/console/options/SystemOptionPane.java =================================================================== --- plugins/Console/trunk/console/options/SystemOptionPane.java 2014-07-10 15:54:38 UTC (rev 23616) +++ plugins/Console/trunk/console/options/SystemOptionPane.java 2014-07-10 17:18:24 UTC (rev 23617) @@ -16,6 +16,7 @@ { private JComboBox prefix; private JCheckBox clearBeforeExecute; + private JCheckBox wrapBracketsOnWindows; private JCheckBox rememberCWD; private JCheckBox nodeselect; private JCheckBox mergeError; @@ -49,6 +50,7 @@ pathDirs = new JTextField(jEdit.getProperty("console.shell.pathdirs")); addComponent(pathLabel, pathDirs); + pathDirsAppend = new JCheckBox(jEdit.getProperty("options.console.general.pathdirs.append")); pathDirsAppend.setSelected(jEdit.getBooleanProperty("console.shell.pathdirs.append")); addComponent(pathDirsAppend); @@ -61,6 +63,11 @@ clearBeforeExecute = new JCheckBox(jEdit.getProperty("options.console.system.clearBeforeExecute")); clearBeforeExecute.setSelected(jEdit.getBooleanProperty("console.clearBeforeExecute")); addComponent(clearBeforeExecute); + + wrapBracketsOnWindows = new JCheckBox(jEdit.getProperty("options.console.shell.system.wrapBrackets")); + wrapBracketsOnWindows.setSelected(jEdit.getBooleanProperty("console.shell.system.wrapBrackets")); + addComponent(wrapBracketsOnWindows); + showExitStatus = new JCheckBox(); showExitStatus.setText(jEdit.getProperty("options.console.general.showExitStatus")); @@ -99,6 +106,9 @@ jEdit.setBooleanProperty("console.rememberCWD", rememberCWD.isSelected()); jEdit.setBooleanProperty("console.processrunner.mergeError", mergeError.isSelected()); jEdit.setBooleanProperty("console.processrunner.showExitStatus", showExitStatus.isSelected()); + jEdit.setBooleanProperty("console.shell.system.wrapBrackets", wrapBracketsOnWindows.isSelected()); + + jEdit.setProperty("console.shell.pathdirs", pathDirs.getText()); jEdit.setBooleanProperty("console.shell.pathdirs.append", pathDirsAppend.isSelected()); jEdit.setProperty("console.shell.prefix", prefix.getSelectedItem().toString()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2016-01-20 23:29:35
|
Revision: 24297 http://sourceforge.net/p/jedit/svn/24297 Author: ezust Date: 2016-01-20 23:29:33 +0000 (Wed, 20 Jan 2016) Log Message: ----------- Added a null-check for the shell action. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/console/Shell.java plugins/Console/trunk/docs/CHANGELOG.txt Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2016-01-20 23:12:45 UTC (rev 24296) +++ plugins/Console/trunk/Console.props 2016-01-20 23:29:33 UTC (rev 24297) @@ -3,14 +3,14 @@ # We provide a custom action set, so we must be activated at startup plugin.console.ConsolePlugin.activate=startup plugin.console.ConsolePlugin.name=Console -plugin.console.ConsolePlugin.version=5.1.4 +plugin.console.ConsolePlugin.version=5.1.5 # jEdit 4.4 plugin API for short description. plugin.console.ConsolePlugin.description=A command line shell and plugin interface for adding other custom shells. plugin.console.ConsolePlugin.docs=index.html plugin.console.ConsolePlugin.author=Slava Pestov (former), Alan Ezust, Artem Bryantsev -# see jEdit.getBuild() to understand the numbering scheme. +# see jEdit.getBuild() to understand the numbering scheme. plugin.console.ConsolePlugin.depend.0=jedit 05.00.99.00 plugin.console.ConsolePlugin.depend.1=jdk 1.6 plugin.console.ConsolePlugin.depend.2=plugin errorlist.ErrorListPlugin 2.1 @@ -21,7 +21,7 @@ # Menu plugin.console.ConsolePlugin.menu=console run-last-console-command - \ commando - commando-compile commando-run console-clear - \ - browse-commando-directory rescan-commands + browse-commando-directory rescan-commands #- chdir-pv-root plugin.console.ConsolePlugin.menu.code=new console.ConsoleMenuProvider(); console.label=Console Modified: plugins/Console/trunk/console/Shell.java =================================================================== --- plugins/Console/trunk/console/Shell.java 2016-01-20 23:12:45 UTC (rev 24296) +++ plugins/Console/trunk/console/Shell.java 2016-01-20 23:29:33 UTC (rev 24297) @@ -48,14 +48,14 @@ </SERVICE> </SERVICES> </pre> -<p> To define a new Shell for your own plugin - * extend from this class, and return an instance of it +<p> To define a new Shell for your own plugin + * extend from this class, and return an instance of it * from the beanshell code in services.xml. - * </p><p> + * </p><p> * Because it is a service, it is a singleton instance, shared by all * for all Views and Console instances, and created only once while the plugin * is loaded. - * + * </p> <p> * @author Slava Pestov @@ -89,25 +89,25 @@ } //}}} //{{{ handlesVFS() - /** A System Shell can override this method and use + /** A System Shell can override this method and use any criteria at all to decide - whether this is a path that is preferred by this shell. - @param vfsPath the path to test if this shell handles + whether this is a path that is preferred by this shell. + @param vfsPath the path to test if this shell handles @return true if this shell is preferred for handling a path that looks like vfsPath */ public boolean handlesVFS(String vfsPath) { return false; }//}}} - + //{{{ chDir() /** A System Shell can override this method if it can respond to chDir messages @param pathStr vfs path to change directory @return true if the function did something, false if not. - */ + */ public boolean chDir(Console console, String pathStr) { return false; }// }}} - + //{{{ getShell() method /** * Returns the Shell service singleton with the specified name @@ -119,7 +119,7 @@ // new API return (Shell)ServiceManager.getService(SERVICE,name); } //}}} - + //{{{ openConsole() method /** * Called when a Console dockable first selects this shell. @@ -168,9 +168,9 @@ * derived classes. * * @param console The Console instance, to distinguish it from others when there are - * multiple View or Console instances. + * multiple View or Console instances. * @param input optional string to feed into the command's Standard input - * @param output Standard output - the destination to send output + * @param output Standard output - the destination to send output * @param error Standard error - the destionation to send error messages * @param command The command * @since Console 3.5 @@ -202,7 +202,7 @@ * Waits until any currently executing commands finish. * @return True if the most recent command exited successfully, * false otherwise - * @param console the same Console instance that was passed to execute() + * @param console the same Console instance that was passed to execute() */ public boolean waitFor(Console console) { @@ -220,7 +220,7 @@ //{{{ detach() method /** - * Detaches the currently running process. Called when Ctrl-Z is typed from the console. + * Detaches the currently running process. Called when Ctrl-Z is typed from the console. * @param console the same Console instance that was passed to execute() */ public void detach(Console console) @@ -272,12 +272,16 @@ } public void invoke(View view) { Console c = ConsolePlugin.getConsole(view); + if (c == null) { + view.getDockableWindowManager().showDockableWindow("console"); + c = ConsolePlugin.getConsole(view); + } c.setShell(shellName); } }// }}} // {{{ ToggleAction class /** A ToggleAction is a ShellAction which also toggles the - visibility of the Console. + visibility of the Console. */ public static class ToggleAction extends ShellAction { @@ -309,13 +313,13 @@ { super("console.shell." + shellName + "-show", shellName); } - - public String getLabel() + + public String getLabel() { return shellName; } - - public String getCode() + + public String getCode() { return "new console.Shell.SwitchAction(\"" + shellName + "\").invoke(view)"; } Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2016-01-20 23:12:45 UTC (rev 24296) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2016-01-20 23:29:33 UTC (rev 24297) @@ -2,6 +2,12 @@ jEdit Console Plugin Changelog $Date$ + + Version 5.1.5 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, CommonControls 1.7, and ProjectViewer 3.5 (optional). + [Alan Ezust] + Fix Plugin Bug#1835 SshConsole: toggle ssh shortcut doesn't work at first + + Version 5.1.4 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, CommonControls 1.7, and ProjectViewer 3.5 (optional). [Alan Ezust] New Project option: run commands from different directory (shadow build/run). @@ -13,7 +19,7 @@ Version 5.1.3 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Alan Ezust] - Use 'patch' edit mode for BufferOutput buffers of commands with 'diff' or 'patch' in them. + Use 'patch' edit mode for BufferOutput buffers of commands with 'diff' or 'patch' in them. Version 5.1.2 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, and ProjectViewer 3.5 (optional). [Alan Ezust] @@ -53,7 +59,7 @@ Observe jEdit's general option "Check for changed files" and check after command executions too. #3558537 - restore values from properties destroys user custom error patterns. - Fixed incompatibility with SshConsole/ErrorList integration introduced in Console 4.5 + Fixed incompatibility with SshConsole/ErrorList integration introduced in Console 4.5 (incorrect error paths - failed to open the correct remote files from ErrorList) New APIs: Console.shellForVFS(), Console.chDir(), Shell.chDir(), Shell.handlesVFS(). Refactored chdir code. New project option: Shell to use for executing build/run project commands. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dal...@us...> - 2016-05-30 23:33:54
|
Revision: 24398 http://sourceforge.net/p/jedit/svn/24398 Author: daleanson Date: 2016-05-30 23:33:52 +0000 (Mon, 30 May 2016) Log Message: ----------- Feature request #159, added ability to have multiple system and beanshell consoles. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/console/Console.java plugins/Console/trunk/console/ConsoleBeanShell.java plugins/Console/trunk/console/ConsolePlugin.java plugins/Console/trunk/console/Shell.java plugins/Console/trunk/console/SystemShell.java plugins/Console/trunk/console/options/GeneralOptionPane.java Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2016-05-26 21:02:14 UTC (rev 24397) +++ plugins/Console/trunk/Console.props 2016-05-30 23:33:52 UTC (rev 24398) @@ -12,7 +12,7 @@ # see jEdit.getBuild() to understand the numbering scheme. plugin.console.ConsolePlugin.depend.0=jedit 05.00.99.00 -plugin.console.ConsolePlugin.depend.1=jdk 1.6 +plugin.console.ConsolePlugin.depend.1=jdk 1.7 plugin.console.ConsolePlugin.depend.2=plugin errorlist.ErrorListPlugin 2.1 plugin.console.ConsolePlugin.depend.3=optional plugin CommonControlsPlugin 1.7.1 plugin.console.ConsolePlugin.depend.4=optional plugin projectviewer.ProjectPlugin 3.5.0 @@ -292,6 +292,12 @@ console.shell.runInDir={0}> {1} +### New Shell dialog +console.newshell.newShell=New Shell... +console.newshell.createNewShell=Create New Shell +console.newshell.selectShellType=Select Shell Type: +console.newshell.shellName=Enter Shell Name: + ### BeanShell console.beanshell.info=This shell evaluates commands in jEdit's BeanShell \ Modified: plugins/Console/trunk/console/Console.java =================================================================== --- plugins/Console/trunk/console/Console.java 2016-05-26 21:02:14 UTC (rev 24397) +++ plugins/Console/trunk/console/Console.java 2016-05-30 23:33:52 UTC (rev 24398) @@ -29,14 +29,15 @@ import java.awt.Dimension; import java.awt.Image; import java.awt.image.BufferedImage; +import java.awt.FlowLayout; import java.awt.Graphics2D; import java.awt.Insets; +import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; -import java.io.File; import java.util.Arrays; import java.util.ArrayList; import java.util.HashMap; @@ -59,7 +60,6 @@ import org.gjt.sp.jedit.msg.ViewUpdate; import org.gjt.sp.util.Log; -import console.SystemShell.ConsoleState; import errorlist.DefaultErrorSource; import errorlist.ErrorSource; import org.gjt.sp.util.StandardUtilities; @@ -128,7 +128,8 @@ } Shell s = Shell.getShell(defShell); - if (s == null) s = Shell.getShell("System"); + if (s == null) + s = Shell.getShell("System"); setShell(s); load(); propertiesChanged(); @@ -197,7 +198,8 @@ public Shell setShell(String shellStr) { Shell shell = Shell.getShell(shellStr); - if (shell == null) throw new RuntimeException("Unknown Shell: " + shellStr); + if (shell == null) + return null; return setShell(shell); } //}}} @@ -764,7 +766,10 @@ { String[] shells = Shell.getShellNames(); Arrays.sort(shells,new StandardUtilities.StringCompare<String>(true)); - shellCombo.setModel(new DefaultComboBoxModel(shells)); + String[] shellsPlusNew = new String[shells.length + 1]; + System.arraycopy(shells, 0, shellsPlusNew, 0, shells.length); + shellsPlusNew[shells.length] = jEdit.getProperty("console.newshell.newShell", "New Shell..."); + shellCombo.setModel(new DefaultComboBoxModel(shellsPlusNew)); shellCombo.setMaximumSize(shellCombo.getPreferredSize()); } //}}} @@ -786,6 +791,7 @@ infoColor = jEdit.getColorProperty("console.infoColor"); warningColor = jEdit.getColorProperty("console.warningColor"); errorColor = jEdit.getColorProperty("console.errorColor"); + updateShellList(); } //}}} @@ -1158,8 +1164,37 @@ { Object source = evt.getSource(); - if(source == shellCombo) + if(source == shellCombo) { + int index = shellCombo.getSelectedIndex(); + if (index == shellCombo.getItemCount() - 1) { + // "New Shell..." is always the last item in the combobox + // and is selected + + // need a popup to ask what kind of shell + NewShellDialog dialog = new NewShellDialog(); + dialog.show(); + String name = dialog.getShellName(); + String code; + switch(dialog.getShellType()) + { + case "BeanShell": + code = "new console.ConsoleBeanShell(\"" + name + "\");"; + break; + case "System": + default: + code = "new console.SystemShell(\"" + name + "\");"; + break; + } + + // create a new system shell service + ServiceManager.registerService(Shell.SERVICE, name, code, null); + updateShellList(); + shellCombo.setSelectedItem(name); + jEdit.setProperty("console.userShells", jEdit.getProperty("console.userShells", "") + ',' + name); + jEdit.setProperty("console.userShells." + name + ".code", code); + } setShell((String)shellCombo.getSelectedItem()); + } else if(source == runAgain) runLastCommand(); else if(source == stop) @@ -1233,6 +1268,89 @@ currentShell.detach(Console.this); } } //}}} + + class NewShellDialog extends JDialog + { + JComboBox<String> shellNames; + JTextField shellName; + + public NewShellDialog() { + super(jEdit.getActiveView(), jEdit.getProperty("console.newshell.createNewShell", "Create New Shell"), true); + /* + It would be nice to be able to list all existing shell names, but + the ServiceManager does not expose the code used to create the + other shells. The only code known, then, is the code to create a + new System shell or new BeanShell shell, so these choices are + hard coded here. Note that the shell names "BeanShell" and "System" + are also hard coded into their respective constructors, so no need + to load these names from properties. + */ + shellNames = new JComboBox<String>(new String[]{"System", "BeanShell"}); + shellName = new JTextField(); + JButton okButton = new JButton(jEdit.getProperty("common.ok")); + okButton.addActionListener( + new ActionListener() { + public void actionPerformed( ActionEvent ae ) { + String newName = NewShellDialog.this.getShellName(); + String[] existingNames = Shell.getShellNames(); + for (String name : existingNames) { + if (newName.equals(name)) { + JOptionPane.showMessageDialog(NewShellDialog.this, "A shell named " + name + " already exists.", "Shell already exists", JOptionPane.WARNING_MESSAGE); + return; + } + } + NewShellDialog.this.setVisible(false); + NewShellDialog.this.dispose(); + } + } + ); + JButton cancelButton = new JButton(jEdit.getProperty("common.cancel")); + cancelButton.addActionListener( + new ActionListener() { + public void actionPerformed( ActionEvent ae ) { + NewShellDialog.this.setVisible(false); + NewShellDialog.this.dispose(); + } + } + ); + GUIUtilities.makeSameSize(okButton, cancelButton); + JPanel panel = new JPanel(new BorderLayout()); + panel.setBorder(BorderFactory.createEmptyBorder(11, 11, 12, 12)); + AbstractOptionPane dialogPanel = new AbstractOptionPane(jEdit.getProperty("console.newshell.createNewShell", "Create New Shell")); + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + + dialogPanel.addComponent(jEdit.getProperty("console.newshell.selectShellType", "Select Shell Type:"), shellNames); + dialogPanel.addComponent(jEdit.getProperty("console.newshell.shellName", "Enter Shell Name:"), shellName); + + buttonPanel.add(okButton); + buttonPanel.add(cancelButton); + + panel.add(dialogPanel, BorderLayout.CENTER); + panel.add(buttonPanel, BorderLayout.SOUTH); + setContentPane(panel); + + // pack and center on view + pack(); + Rectangle v = jEdit.getActiveView().getBounds(); + Dimension size = getSize(); + int x = v.x + ( v.width - size.width ) / 2; + if ( x < 0 ) + x = 0; + int y = v.y + ( v.height - size.height ) / 2; + if ( y < 0 ) + y = 0; + setLocation( x, y ); + } + + public String getShellType() { + return (String)shellNames.getSelectedItem(); + } + + public String getShellName() { + return shellName.getText(); + } + } + // }}} private static final long serialVersionUID = -9185531673809120587L; } // }}} Modified: plugins/Console/trunk/console/ConsoleBeanShell.java =================================================================== --- plugins/Console/trunk/console/ConsoleBeanShell.java 2016-05-26 21:02:14 UTC (rev 24397) +++ plugins/Console/trunk/console/ConsoleBeanShell.java 2016-05-30 23:33:52 UTC (rev 24398) @@ -36,8 +36,14 @@ //{{{ ConsoleBeanShell constructor public ConsoleBeanShell() { - super("BeanShell"); + this("BeanShell"); } //}}} + + //{{{ ConsoleBeanShell constructor + public ConsoleBeanShell(String name) + { + super(name); + } //}}} //{{{ printInfoMessage() method public void printInfoMessage(Output output) @@ -96,7 +102,7 @@ ns.setVariable("console",null); ns.setVariable("output",null); } - catch(UtilEvalError e) + catch(UtilEvalError e) // NOPMD { } } Modified: plugins/Console/trunk/console/ConsolePlugin.java =================================================================== --- plugins/Console/trunk/console/ConsolePlugin.java 2016-05-26 21:02:14 UTC (rev 24397) +++ plugins/Console/trunk/console/ConsolePlugin.java 2016-05-30 23:33:52 UTC (rev 24398) @@ -83,7 +83,21 @@ // {{{ getSystemShell() method public static SystemShell getSystemShell() { - return (SystemShell) ServiceManager.getService("console.Shell", "System"); + try + { + Console console = getConsole(jEdit.getActiveView()); + if (console != null) + { + Shell shell = console.getShell(); + if (shell instanceof SystemShell) + return (SystemShell)shell; + } + return (SystemShell) ServiceManager.getService(Shell.SERVICE, "System"); + } + catch(Exception e) + { + return null; + } } // }}} // {{{ getShellSwitchActions() @@ -134,6 +148,21 @@ rescanCommands(); CommandoToolBar.init(); EditBus.addToBus(this); + + // load user-created shells + String userShells = jEdit.getProperty("console.userShells", ""); + if (!userShells.isEmpty()) + { + String[] shellNames = userShells.split("[,]"); + StringList optOut = StringList.split(jEdit.getProperty("console.userShells.optOut", ""), "[,]"); + for (String name : shellNames) + { + if (name == null || name.isEmpty() || optOut.contains(name)) + continue; + String code = jEdit.getProperty("console.userShells." + name + ".code"); + ServiceManager.registerService(Shell.SERVICE, name, code, null); + } + } } // }}} @@ -165,7 +194,9 @@ jEdit.removeActionSet(shellSwitchActions); allCommands.removeAllActions(); shellSwitchActions.removeAllActions(); - getSystemShell().beforeStopping(); + SystemShell systemShell = getSystemShell(); + if (systemShell != null) + systemShell.beforeStopping(); // ??? Does this really get all the Console objects that are in memory? View[] views = jEdit.getViews(); @@ -434,6 +465,8 @@ // {{{ getConsole() static method static public Console getConsole(View v) { + if (v == null) + return null; DockableWindowManager dwm = v.getDockableWindowManager(); return (Console) dwm.getDockable("console"); } @@ -543,7 +576,7 @@ projectviewer.PVActions.editProject(project, "pv.commands"); cmd = project.getProperty("console." + prop); - if (cmd == null || cmd.trim() == "") + if (cmd == null || cmd.trim().isEmpty()) return; } Modified: plugins/Console/trunk/console/Shell.java =================================================================== --- plugins/Console/trunk/console/Shell.java 2016-05-26 21:02:14 UTC (rev 24397) +++ plugins/Console/trunk/console/Shell.java 2016-05-30 23:33:52 UTC (rev 24398) @@ -24,8 +24,11 @@ import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.gui.DockableWindowManager; +import org.gjt.sp.util.StringList; +import java.util.Collections; + // {{{ Shell class /** * <p> @@ -85,7 +88,18 @@ */ public static String[] getShellNames() { - return ServiceManager.getServiceNames(SERVICE); + StringList shellNames = new StringList(ServiceManager.getServiceNames(SERVICE)); + StringList optOut = StringList.split(jEdit.getProperty("console.userShells.optOut", ""), "[,]"); + StringList shells = new StringList(); + for (String name : shellNames) + { + if (name != null && !name.isEmpty() && !optOut.contains(name)) + { + shells.add(name); + } + } + Collections.sort(shells); + return shells.toArray(); } //}}} //{{{ handlesVFS() @@ -117,7 +131,9 @@ public static Shell getShell(String name) { // new API - return (Shell)ServiceManager.getService(SERVICE,name); + if (name == null || name.isEmpty()) + return null; + return (Shell)ServiceManager.getService(SERVICE, name); } //}}} //{{{ openConsole() method @@ -248,6 +264,15 @@ return name; } //}}} + //{{{ setName() method + /** + * Sets the name of the shell. + */ + public void setName(String name) + { + this.name = name; + } //}}} + //{{{ toString() method /** * Returns the name of the shell. Modified: plugins/Console/trunk/console/SystemShell.java =================================================================== --- plugins/Console/trunk/console/SystemShell.java 2016-05-26 21:02:14 UTC (rev 24397) +++ plugins/Console/trunk/console/SystemShell.java 2016-05-30 23:33:52 UTC (rev 24398) @@ -87,7 +87,12 @@ // {{{ SystemShell constructor public SystemShell() { - super("System"); + this("System"); + } + + public SystemShell(String name) + { + super(name); lineSep = System.getProperty("line.separator"); consoleStateMap = new Hashtable<Console, ConsoleState>(); userHome = System.getProperty("user.home"); @@ -1033,7 +1038,7 @@ if (directoriesOnly && !matchFile.isDirectory()) continue; - match.append(typedDirName + filenames[i]); + match.append(typedDirName).append(filenames[i]); // Add a separator at the end if it's a // directory Modified: plugins/Console/trunk/console/options/GeneralOptionPane.java =================================================================== --- plugins/Console/trunk/console/options/GeneralOptionPane.java 2016-05-26 21:02:14 UTC (rev 24397) +++ plugins/Console/trunk/console/options/GeneralOptionPane.java 2016-05-30 23:33:52 UTC (rev 24398) @@ -25,12 +25,15 @@ //{{{ Imports import java.awt.Color; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.GridLayout; +import java.awt.GridBagConstraints; +import java.awt.event.*; import java.util.Arrays; import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.HashSet; import javax.swing.BorderFactory; import javax.swing.Box; @@ -40,16 +43,21 @@ import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; +import javax.swing.DefaultComboBoxModel; +import javax.swing.event.*; import org.gjt.sp.jedit.AbstractOptionPane; import org.gjt.sp.jedit.MiscUtilities; import org.gjt.sp.jedit.jEdit; import org.gjt.sp.jedit.gui.FontSelector; import org.gjt.sp.util.StandardUtilities.StringCompare; +import org.gjt.sp.jedit.gui.PingPongList; import org.gjt.sp.util.StringList; import org.gjt.sp.jedit.gui.HistoryModel ; +import org.gjt.sp.jedit.ServiceManager; import console.Shell; import console.gui.Label; @@ -63,6 +71,8 @@ private FontSelector font; private JComboBox encoding; private JComboBox defaultShell; + private PingPongList<String> pingPongList; + private JButton deleteSelectedButton; private JButton bgColor; private JButton plainColor; private JButton caretColor; @@ -85,21 +95,56 @@ //{{{ _init() method protected void _init() { - - StringList sl = new StringList(Shell.getShellNames()); - int idx = sl.indexOf("System"); - if (idx != 0) { - String other = sl.get(0); - sl.set(idx, other); - sl.set(0, "System"); - } - sl.add(jEdit.getProperty("options.last-selected")); - defaultShell = new JComboBox(sl.toArray()); - String ds = jEdit.getProperty("console.shell.default", "System"); - defaultShell.setSelectedItem(ds); + defaultShell = new JComboBox(); + reloadDefaultList(); addComponent(jEdit.getProperty("options.console.general.defaultshell", "Default Shell:"), defaultShell); + StringList userShells = StringList.split(jEdit.getProperty("console.userShells", ""), "[,]"); + StringList activeShells = new StringList(); + StringList inactiveShells = StringList.split(jEdit.getProperty("console.userShells.optOut", ""), "[,]"); + for ( String name : userShells ) + { + if (!inactiveShells.contains(name)) + { + activeShells.add(name); + } + } + pingPongList = new PingPongList<String>( inactiveShells, activeShells ); + pingPongList.setLeftTitle( "Available User Shells" ); + pingPongList.setRightTitle( "Active User Shells" ); + pingPongList.setLeftTooltip( "Drag to the right to make active" ); + pingPongList.setRightTooltip( "Drag to the left to make inactive" ); + pingPongList.addLeftListSelectionListener(new LeftListSelectionListener()); + pingPongList.addRightListSelectionListener(new RightListSelectionListener()); + deleteSelectedButton = new JButton( "Delete Selected"); + deleteSelectedButton.setEnabled(true); + pingPongList.addButton( deleteSelectedButton ); + deleteSelectedButton.addActionListener( new ActionListener(){ + + public void actionPerformed( ActionEvent ae ) + { + List<String> names = pingPongList.getRightSelectedValues(); + StringBuilder sb = new StringBuilder(128); + sb.append("Delete these shells?").append('\n'); + for (String name : names) + { + sb.append(name).append('\n'); + } + int answer = JOptionPane.showConfirmDialog(jEdit.getActiveView(), sb.toString(), "Confirm Shell Delete", JOptionPane.WARNING_MESSAGE ); + if (answer == JOptionPane.YES_OPTION) { + for (String name : names) + { + ServiceManager.unregisterService(Shell.SERVICE, name); + } + reloadLists(); + reloadDefaultList(); + } + } + } + ); + addComponent( pingPongList, GridBagConstraints.BOTH ); + showWelcomeMessage = new JCheckBox(); showWelcomeMessage.setText(jEdit.getProperty("options.console.general.welcome")); showWelcomeMessage.setSelected(jEdit.getBooleanProperty("console.shell.info.toggle")); @@ -237,6 +282,30 @@ jEdit.setProperty("ansi-escape.behaviour", String.valueOf( ansiBehaviour.getSelectedIndex() ) ); jEdit.setProperty("ansi-escape.mode" , String.valueOf( ansiMode.getSelectedIndex() ) ); + + // register/unregister shells with ServiceManager + Iterator<String> iter = pingPongList.getLeftDataIterator(); + StringBuilder sb = new StringBuilder(); + while(iter.hasNext()) + { + String name = iter.next(); + ServiceManager.unregisterService(Shell.SERVICE, name); + sb.append(name).append(','); + } + jEdit.unsetProperty("console.userShells.optOut"); + jEdit.setProperty("console.userShells.optOut", sb.toString()); + + sb = new StringBuilder(); + iter = pingPongList.getRightDataIterator(); + while(iter.hasNext()) + { + String name = iter.next(); + String code = jEdit.getProperty("console.userShells." + name + ".code"); + ServiceManager.registerService(Shell.SERVICE, name, code, null); + sb.append(name).append(','); + } + jEdit.unsetProperty("console.userShells"); + jEdit.setProperty("console.userShells", sb.toString()); } //}}} @@ -262,4 +331,74 @@ return b; } //}}} + //{{{ reloadLists() method + private void reloadLists() + { + // load the ping pong lists + StringList allShells = new StringList(ServiceManager.getServiceNames(Shell.SERVICE)); + StringList availableShells = new StringList(); + StringList selectedShells = new StringList(Shell.getShellNames()); + for ( String name : allShells ) + { + if (!selectedShells.contains(name)) + { + availableShells.add(name); + } + } + pingPongList.setLeftData( availableShells ); + pingPongList.setRightData( selectedShells ); + } //}}} + + // reload the default shell combo box + private void reloadDefaultList() + { + StringList sl = new StringList(Shell.getShellNames()); + int idx = sl.indexOf("System"); + if (idx != 0) { + String other = sl.get(0); + sl.set(idx, other); + sl.set(0, "System"); + } + sl.add(jEdit.getProperty("options.last-selected")); + + defaultShell.setModel( new DefaultComboBoxModel<String>( sl.toArray() ) ); + String ds = jEdit.getProperty("console.shell.default", "System"); + defaultShell.setSelectedItem(ds); + } + + class LeftListSelectionListener implements ListSelectionListener + { + public void valueChanged(ListSelectionEvent e) + { + HashSet<String> names = new HashSet<String>(pingPongList.getLeftSelectedValues()); + for (String name : names) + { + ServiceManager.unregisterService(Shell.SERVICE, name); + String optOut = jEdit.getProperty("console.userShells.optOut", ""); + StringList out = StringList.split(optOut, "[,]"); + out.add(name); + jEdit.setProperty("console.userShells.optOut", out.join(out, ",")); + } + reloadDefaultList(); + } + } + + class RightListSelectionListener implements ListSelectionListener + { + public void valueChanged(ListSelectionEvent e) + { + HashSet<String> names = new HashSet<String>(pingPongList.getRightSelectedValues()); + for (String name : names) + { + String code = jEdit.getProperty("console.userShells." + name + ".code"); + ServiceManager.registerService(Shell.SERVICE, name, code, null); + String optOut = jEdit.getProperty("console.userShells.optOut", ""); + StringList out = StringList.split(optOut, "[,]"); + out.remove(name); + jEdit.setProperty("console.userShells.optOut", out.join(out, ",")); + } + reloadDefaultList(); + } + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dal...@us...> - 2016-06-04 00:31:56
|
Revision: 24401 http://sourceforge.net/p/jedit/svn/24401 Author: daleanson Date: 2016-06-04 00:31:53 +0000 (Sat, 04 Jun 2016) Log Message: ----------- Changed options to use the DoubleJList from CommonControls rather than the PingPongList from jEdit utils. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/console/options/GeneralOptionPane.java Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2016-06-04 00:30:30 UTC (rev 24400) +++ plugins/Console/trunk/Console.props 2016-06-04 00:31:53 UTC (rev 24401) @@ -3,7 +3,7 @@ # We provide a custom action set, so we must be activated at startup plugin.console.ConsolePlugin.activate=startup plugin.console.ConsolePlugin.name=Console -plugin.console.ConsolePlugin.version=5.1.5 +plugin.console.ConsolePlugin.version=5.2.0 # jEdit 4.4 plugin API for short description. plugin.console.ConsolePlugin.description=A command line shell and plugin interface for adding other custom shells. @@ -14,7 +14,7 @@ plugin.console.ConsolePlugin.depend.0=jedit 05.00.99.00 plugin.console.ConsolePlugin.depend.1=jdk 1.7 plugin.console.ConsolePlugin.depend.2=plugin errorlist.ErrorListPlugin 2.1 -plugin.console.ConsolePlugin.depend.3=optional plugin CommonControlsPlugin 1.7.1 +plugin.console.ConsolePlugin.depend.3=optional plugin CommonControlsPlugin 1.7.5 plugin.console.ConsolePlugin.depend.4=optional plugin projectviewer.ProjectPlugin 3.5.0 Modified: plugins/Console/trunk/console/options/GeneralOptionPane.java =================================================================== --- plugins/Console/trunk/console/options/GeneralOptionPane.java 2016-06-04 00:30:30 UTC (rev 24400) +++ plugins/Console/trunk/console/options/GeneralOptionPane.java 2016-06-04 00:31:53 UTC (rev 24401) @@ -31,9 +31,7 @@ import java.util.Arrays; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import java.util.HashSet; import javax.swing.BorderFactory; import javax.swing.Box; @@ -43,7 +41,6 @@ import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JLabel; -import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.DefaultComboBoxModel; @@ -54,11 +51,12 @@ import org.gjt.sp.jedit.jEdit; import org.gjt.sp.jedit.gui.FontSelector; import org.gjt.sp.util.StandardUtilities.StringCompare; -import org.gjt.sp.jedit.gui.PingPongList; import org.gjt.sp.util.StringList; import org.gjt.sp.jedit.gui.HistoryModel ; import org.gjt.sp.jedit.ServiceManager; +import common.gui.DoubleJList; + import console.Shell; import console.gui.Label; //}}} @@ -71,8 +69,7 @@ private FontSelector font; private JComboBox encoding; private JComboBox defaultShell; - private PingPongList<String> pingPongList; - private JButton deleteSelectedButton; + private DoubleJList<String> dlist; private JButton bgColor; private JButton plainColor; private JButton caretColor; @@ -110,32 +107,24 @@ activeShells.add(name); } } - pingPongList = new PingPongList<String>( inactiveShells, activeShells ); - pingPongList.setLeftTitle( "Available User Shells" ); - pingPongList.setRightTitle( "Active User Shells" ); - pingPongList.setLeftTooltip( "Drag to the right to make active" ); - pingPongList.setRightTooltip( "Drag to the left to make inactive" ); - pingPongList.addLeftListSelectionListener(new LeftListSelectionListener()); - pingPongList.addRightListSelectionListener(new RightListSelectionListener()); - deleteSelectedButton = new JButton( "Delete Selected"); - deleteSelectedButton.setEnabled(true); - pingPongList.addButton( deleteSelectedButton ); - deleteSelectedButton.addActionListener( new ActionListener(){ + dlist = new DoubleJList<String>(); + dlist.setLeftListData(inactiveShells.toArray()); + dlist.setRightListData(activeShells.toArray()); + dlist.setLeftLabel( "Available User Shells" ); + dlist.setRightLabel( "Active User Shells" ); + dlist.setLeftToolTipText( "Right click to delete selected items" ); + dlist.setRightToolTipText( "Right click to delete selected items" ); + dlist.setShowDelete(true); + dlist.addDeleteListener( new ActionListener(){ public void actionPerformed( ActionEvent ae ) { - List<String> names = pingPongList.getRightSelectedValues(); - StringBuilder sb = new StringBuilder(128); - sb.append("Delete these shells?").append('\n'); - for (String name : names) - { - sb.append(name).append('\n'); - } - int answer = JOptionPane.showConfirmDialog(jEdit.getActiveView(), sb.toString(), "Confirm Shell Delete", JOptionPane.WARNING_MESSAGE ); - if (answer == JOptionPane.YES_OPTION) { + if (dlist.canDelete()) { + List<String> names = dlist.getDeleteSelectedValues(); for (String name : names) { ServiceManager.unregisterService(Shell.SERVICE, name); + jEdit.unsetProperty("console.userShells." + name + ".code"); } reloadLists(); reloadDefaultList(); @@ -143,7 +132,8 @@ } } ); - addComponent( pingPongList, GridBagConstraints.BOTH ); + dlist.init(); + addComponent( dlist, GridBagConstraints.NONE ); showWelcomeMessage = new JCheckBox(); showWelcomeMessage.setText(jEdit.getProperty("options.console.general.welcome")); @@ -154,7 +144,6 @@ addComponent(jEdit.getProperty("options.console.general.font"), font); String[] encodings = MiscUtilities.getEncodings(true); - // Arrays.sort(encodings,new MiscUtilities.StringICaseCompare()); Arrays.sort(encodings, new StringCompare<String>(true)); encoding = new JComboBox(encodings); encoding.setEditable(true); @@ -284,11 +273,10 @@ jEdit.setProperty("ansi-escape.mode" , String.valueOf( ansiMode.getSelectedIndex() ) ); // register/unregister shells with ServiceManager - Iterator<String> iter = pingPongList.getLeftDataIterator(); + List<String> data = dlist.getLeftValuesList(); StringBuilder sb = new StringBuilder(); - while(iter.hasNext()) + for (String name : data) { - String name = iter.next(); ServiceManager.unregisterService(Shell.SERVICE, name); sb.append(name).append(','); } @@ -296,10 +284,9 @@ jEdit.setProperty("console.userShells.optOut", sb.toString()); sb = new StringBuilder(); - iter = pingPongList.getRightDataIterator(); - while(iter.hasNext()) + data = dlist.getRightValuesList(); + for (String name : data) { - String name = iter.next(); String code = jEdit.getProperty("console.userShells." + name + ".code"); ServiceManager.registerService(Shell.SERVICE, name, code, null); sb.append(name).append(','); @@ -336,8 +323,12 @@ { // load the ping pong lists StringList allShells = new StringList(ServiceManager.getServiceNames(Shell.SERVICE)); + allShells.remove("System"); + allShells.remove("BeanShell"); StringList availableShells = new StringList(); StringList selectedShells = new StringList(Shell.getShellNames()); + selectedShells.remove("System"); + selectedShells.remove("BeanShell"); for ( String name : allShells ) { if (!selectedShells.contains(name)) @@ -345,8 +336,8 @@ availableShells.add(name); } } - pingPongList.setLeftData( availableShells ); - pingPongList.setRightData( selectedShells ); + dlist.setLeftListData( availableShells.toArray() ); + dlist.setRightListData( selectedShells.toArray() ); } //}}} // reload the default shell combo box @@ -366,39 +357,4 @@ defaultShell.setSelectedItem(ds); } - class LeftListSelectionListener implements ListSelectionListener - { - public void valueChanged(ListSelectionEvent e) - { - HashSet<String> names = new HashSet<String>(pingPongList.getLeftSelectedValues()); - for (String name : names) - { - ServiceManager.unregisterService(Shell.SERVICE, name); - String optOut = jEdit.getProperty("console.userShells.optOut", ""); - StringList out = StringList.split(optOut, "[,]"); - out.add(name); - jEdit.setProperty("console.userShells.optOut", out.join(out, ",")); - } - reloadDefaultList(); - } - } - - class RightListSelectionListener implements ListSelectionListener - { - public void valueChanged(ListSelectionEvent e) - { - HashSet<String> names = new HashSet<String>(pingPongList.getRightSelectedValues()); - for (String name : names) - { - String code = jEdit.getProperty("console.userShells." + name + ".code"); - ServiceManager.registerService(Shell.SERVICE, name, code, null); - String optOut = jEdit.getProperty("console.userShells.optOut", ""); - StringList out = StringList.split(optOut, "[,]"); - out.remove(name); - jEdit.setProperty("console.userShells.optOut", out.join(out, ",")); - } - reloadDefaultList(); - } - } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dal...@us...> - 2016-06-04 16:55:58
|
Revision: 24402 http://sourceforge.net/p/jedit/svn/24402 Author: daleanson Date: 2016-06-04 16:55:56 +0000 (Sat, 04 Jun 2016) Log Message: ----------- Split out NewShellDialog as a separate class so it can be used from the GeneralOptionPane to create new shells from the options. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/console/Console.java plugins/Console/trunk/console/options/GeneralOptionPane.java plugins/Console/trunk/docs/CHANGELOG.txt Added Paths: ----------- plugins/Console/trunk/console/gui/NewShellDialog.java Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2016-06-04 00:31:53 UTC (rev 24401) +++ plugins/Console/trunk/Console.props 2016-06-04 16:55:56 UTC (rev 24402) @@ -3,12 +3,12 @@ # We provide a custom action set, so we must be activated at startup plugin.console.ConsolePlugin.activate=startup plugin.console.ConsolePlugin.name=Console -plugin.console.ConsolePlugin.version=5.2.0 +plugin.console.ConsolePlugin.version=5.3.0 # jEdit 4.4 plugin API for short description. plugin.console.ConsolePlugin.description=A command line shell and plugin interface for adding other custom shells. plugin.console.ConsolePlugin.docs=index.html -plugin.console.ConsolePlugin.author=Slava Pestov (former), Alan Ezust, Artem Bryantsev +plugin.console.ConsolePlugin.author=Slava Pestov (former), Alan Ezust, Artem Bryantsev, Dale Anson # see jEdit.getBuild() to understand the numbering scheme. plugin.console.ConsolePlugin.depend.0=jedit 05.00.99.00 @@ -99,6 +99,13 @@ options.console.general.changedir.pvchange=On Project change, cd to project root dir options.console.general.changedir.followTextArea=When TextArea buffer dir changes, cd to it +# user shells messages +options.console.general.availableUserShells=Available User Shells +options.console.general.activeUserShells=Active User Shells +options.console.general.listToolTip=Right click to delete selected items +console.userShells.shellExistsMsg=A shell named {0} already exists. +console.userShells.shellExistsTitle=Shell Already Exists + options.console.shell.system.wrapBrackets=Wrap round brackets around argument lists in Windows shells # options.console.general.changedir.pvselect=On ProjectViewer select node, cd to node dir Modified: plugins/Console/trunk/console/Console.java =================================================================== --- plugins/Console/trunk/console/Console.java 2016-06-04 00:31:53 UTC (rev 24401) +++ plugins/Console/trunk/console/Console.java 2016-06-04 16:55:56 UTC (rev 24402) @@ -63,6 +63,9 @@ import errorlist.DefaultErrorSource; import errorlist.ErrorSource; import org.gjt.sp.util.StandardUtilities; + +import console.gui.NewShellDialog; + //}}} // {{{ class Console @@ -1269,87 +1272,6 @@ } } //}}} - class NewShellDialog extends JDialog - { - JComboBox<String> shellNames; - JTextField shellName; - - public NewShellDialog() { - super(jEdit.getActiveView(), jEdit.getProperty("console.newshell.createNewShell", "Create New Shell"), true); - /* - It would be nice to be able to list all existing shell names, but - the ServiceManager does not expose the code used to create the - other shells. The only code known, then, is the code to create a - new System shell or new BeanShell shell, so these choices are - hard coded here. Note that the shell names "BeanShell" and "System" - are also hard coded into their respective constructors, so no need - to load these names from properties. - */ - shellNames = new JComboBox<String>(new String[]{"System", "BeanShell"}); - shellName = new JTextField(); - JButton okButton = new JButton(jEdit.getProperty("common.ok")); - okButton.addActionListener( - new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - String newName = NewShellDialog.this.getShellName(); - String[] existingNames = Shell.getShellNames(); - for (String name : existingNames) { - if (newName.equals(name)) { - JOptionPane.showMessageDialog(NewShellDialog.this, "A shell named " + name + " already exists.", "Shell already exists", JOptionPane.WARNING_MESSAGE); - return; - } - } - NewShellDialog.this.setVisible(false); - NewShellDialog.this.dispose(); - } - } - ); - JButton cancelButton = new JButton(jEdit.getProperty("common.cancel")); - cancelButton.addActionListener( - new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - NewShellDialog.this.setVisible(false); - NewShellDialog.this.dispose(); - } - } - ); - GUIUtilities.makeSameSize(okButton, cancelButton); - JPanel panel = new JPanel(new BorderLayout()); - panel.setBorder(BorderFactory.createEmptyBorder(11, 11, 12, 12)); - AbstractOptionPane dialogPanel = new AbstractOptionPane(jEdit.getProperty("console.newshell.createNewShell", "Create New Shell")); - JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); - - dialogPanel.addComponent(jEdit.getProperty("console.newshell.selectShellType", "Select Shell Type:"), shellNames); - dialogPanel.addComponent(jEdit.getProperty("console.newshell.shellName", "Enter Shell Name:"), shellName); - - buttonPanel.add(okButton); - buttonPanel.add(cancelButton); - - panel.add(dialogPanel, BorderLayout.CENTER); - panel.add(buttonPanel, BorderLayout.SOUTH); - setContentPane(panel); - - // pack and center on view - pack(); - Rectangle v = jEdit.getActiveView().getBounds(); - Dimension size = getSize(); - int x = v.x + ( v.width - size.width ) / 2; - if ( x < 0 ) - x = 0; - int y = v.y + ( v.height - size.height ) / 2; - if ( y < 0 ) - y = 0; - setLocation( x, y ); - } - - public String getShellType() { - return (String)shellNames.getSelectedItem(); - } - - public String getShellName() { - return shellName.getText(); - } - } // }}} private static final long serialVersionUID = -9185531673809120587L; Added: plugins/Console/trunk/console/gui/NewShellDialog.java =================================================================== --- plugins/Console/trunk/console/gui/NewShellDialog.java (rev 0) +++ plugins/Console/trunk/console/gui/NewShellDialog.java 2016-06-04 16:55:56 UTC (rev 24402) @@ -0,0 +1,109 @@ + +package console.gui; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.*; +import javax.swing.text.*; + +import org.gjt.sp.jedit.*; +import org.gjt.sp.jedit.gui.*; + +import console.Shell; + +public class NewShellDialog extends JDialog { + + JComboBox<String> shellNames; + JTextField shellName; + + + public NewShellDialog() { + super( jEdit.getActiveView(), jEdit.getProperty( "console.newshell.createNewShell", "Create New Shell" ), true ); + /* + * It would be nice to be able to list all existing shell names, but + * the ServiceManager does not expose the code used to create the + * other shells. The only code known, then, is the code to create a + * new System shell or new BeanShell shell, so these choices are + * hard coded here. Note that the shell names "BeanShell" and "System" + * are also hard coded into their respective constructors, so no need + * to load these names from properties. + */ + shellNames = new JComboBox<String>( new String[] {"System", "BeanShell"} ); + shellName = new JTextField(); + JButton okButton = new JButton( jEdit.getProperty( "common.ok" ) ); + okButton.addActionListener( new ActionListener(){ + + public void actionPerformed( ActionEvent ae ) { + String newName = getShellName(); + String[] existingNames = Shell.getShellNames(); + for ( String name : existingNames ) { + if ( newName.equals( name ) ) { + JOptionPane.showMessageDialog( NewShellDialog.this, + jEdit.getProperty( "console.userShells.shellExistsMsg", new String[] {name} ), + jEdit.getProperty( "console.userShells.shellExistsTitle", "Shell already exists" ), + JOptionPane.WARNING_MESSAGE ); + return; + } + } + setVisible( false ); + dispose(); + } + } + ); + JButton cancelButton = new JButton( jEdit.getProperty( "common.cancel" ) ); + cancelButton.addActionListener( new ActionListener(){ + + public void actionPerformed( ActionEvent ae ) { + NewShellDialog.this.setVisible( false ); + NewShellDialog.this.dispose(); + } + } + ); + GUIUtilities.makeSameSize( okButton, cancelButton ); + JPanel panel = new JPanel( new BorderLayout() ); + panel.setBorder( BorderFactory.createEmptyBorder( 11, 11, 12, 12 ) ); + AbstractOptionPane dialogPanel = new AbstractOptionPane( jEdit.getProperty( "console.newshell.createNewShell", "Create New Shell" ) ); + JPanel buttonPanel = new JPanel( new FlowLayout( FlowLayout.RIGHT ) ); + + dialogPanel.addComponent( jEdit.getProperty( "console.newshell.selectShellType", "Select Shell Type:" ), shellNames ); + dialogPanel.addComponent( jEdit.getProperty( "console.newshell.shellName", "Enter Shell Name:" ), shellName ); + + buttonPanel.add( okButton ); + buttonPanel.add( cancelButton ); + + panel.add( dialogPanel, BorderLayout.CENTER ); + panel.add( buttonPanel, BorderLayout.SOUTH ); + setContentPane( panel ); + + // pack and center on view + pack(); + Rectangle v = jEdit.getActiveView().getBounds(); + Dimension size = getSize(); + int x = v.x + ( v.width - size.width ) / 2; + if ( x < 0 ) { + x = 0; + } + + int y = v.y + ( v.height - size.height ) / 2; + if ( y < 0 ) { + y = 0; + } + + setLocation( x, y ); + } + + + public String getShellType() { + return ( String )shellNames.getSelectedItem(); + } + + + public String getShellName() { + return shellName.getText(); + } +} Modified: plugins/Console/trunk/console/options/GeneralOptionPane.java =================================================================== --- plugins/Console/trunk/console/options/GeneralOptionPane.java 2016-06-04 00:31:53 UTC (rev 24401) +++ plugins/Console/trunk/console/options/GeneralOptionPane.java 2016-06-04 16:55:56 UTC (rev 24402) @@ -57,8 +57,11 @@ import common.gui.DoubleJList; +import console.Console; import console.Shell; import console.gui.Label; +import console.gui.NewShellDialog; + //}}} public class GeneralOptionPane extends AbstractOptionPane @@ -110,10 +113,41 @@ dlist = new DoubleJList<String>(); dlist.setLeftListData(inactiveShells.toArray()); dlist.setRightListData(activeShells.toArray()); - dlist.setLeftLabel( "Available User Shells" ); - dlist.setRightLabel( "Active User Shells" ); - dlist.setLeftToolTipText( "Right click to delete selected items" ); - dlist.setRightToolTipText( "Right click to delete selected items" ); + dlist.setLeftLabel( jEdit.getProperty("options.console.general.availableUserShells", "Available User Shells") ); + dlist.setRightLabel( jEdit.getProperty("options.console.general.activeUserShells", "Active User Shells") ); + dlist.setLeftToolTipText( jEdit.getProperty("options.console.general.listToolTip", "Right click to delete selected items") ); + dlist.setRightToolTipText( jEdit.getProperty("options.console.general.listToolTip", "Right click to delete selected items") ); + dlist.setShowAdd(true); + dlist.addAddListener( + new ActionListener() { + public void actionPerformed(ActionEvent evt) + { + // need a popup to ask what kind of shell + NewShellDialog dialog = new NewShellDialog(); + dialog.show(); + String name = dialog.getShellName(); + String code; + switch(dialog.getShellType()) + { + case "BeanShell": + code = "new console.ConsoleBeanShell(\"" + name + "\");"; + break; + case "System": + default: + code = "new console.SystemShell(\"" + name + "\");"; + break; + } + + // create a new shell service + ServiceManager.registerService(Shell.SERVICE, name, code, null); + jEdit.setProperty("console.userShells", jEdit.getProperty("console.userShells", "") + ',' + name); + jEdit.setProperty("console.userShells." + name + ".code", code); + + reloadLists(); + reloadDefaultList(); + } + } + ); dlist.setShowDelete(true); dlist.addDeleteListener( new ActionListener(){ Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2016-06-04 00:31:53 UTC (rev 24401) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2016-06-04 16:55:56 UTC (rev 24402) @@ -3,6 +3,11 @@ jEdit Console Plugin Changelog $Date$ + Version 5.3.0 Requires jEdit 5.0, Java 1.7, ErrorList 2.1, CommonControls 1.7.5, and ProjectViewer 3.5 (optional). + [Dale Anson] + Feature request #159, multiple tabs for System shell. No tabs, actually, just + change shells from the existing drop down, also allow multiple BeanShell shells. + Version 5.1.5 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, CommonControls 1.7, and ProjectViewer 3.5 (optional). [Alan Ezust] Fix Plugin Bug#1835 SshConsole: toggle ssh shortcut doesn't work at first This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dal...@us...> - 2016-06-14 20:36:21
|
Revision: 24410 http://sourceforge.net/p/jedit/svn/24410 Author: daleanson Date: 2016-06-14 20:36:19 +0000 (Tue, 14 Jun 2016) Log Message: ----------- Feature request #159, added ability to have multiple shells of any installed type. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/console/Console.java plugins/Console/trunk/console/ConsolePlugin.java plugins/Console/trunk/console/Shell.java plugins/Console/trunk/console/gui/NewShellDialog.java plugins/Console/trunk/console/options/GeneralOptionPane.java plugins/Console/trunk/docs/CHANGELOG.txt plugins/Console/trunk/docs/users-guide.xml plugins/Console/trunk/services.xml Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/Console.props 2016-06-14 20:36:19 UTC (rev 24410) @@ -103,8 +103,6 @@ options.console.general.availableUserShells=Available User Shells options.console.general.activeUserShells=Active User Shells options.console.general.listToolTip=Right click to delete selected items -console.userShells.shellExistsMsg=A shell named {0} already exists. -console.userShells.shellExistsTitle=Shell Already Exists options.console.shell.system.wrapBrackets=Wrap round brackets around argument lists in Windows shells @@ -304,6 +302,14 @@ console.newshell.createNewShell=Create New Shell console.newshell.selectShellType=Select Shell Type: console.newshell.shellName=Enter Shell Name: +console.newshell.shellExists.msg=A shell named {0} already exists. +console.newshell.shellExists.title=Shell Already Exists +console.newshell.unableToCreateShell.msg=No code available to create shell {0}. +console.newshell.unableToCreateShell.title=Unable to create shell +console.newshell.emptyName.msg=Name must not be empty. +console.newshell.emptyName.title=Missing Name +console.newshell.hasComma.msg=Name may not contain a comma. +console.newshell.hasComma.title=Illegal Name ### BeanShell Modified: plugins/Console/trunk/console/Console.java =================================================================== --- plugins/Console/trunk/console/Console.java 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/console/Console.java 2016-06-14 20:36:19 UTC (rev 24410) @@ -29,10 +29,8 @@ import java.awt.Dimension; import java.awt.Image; import java.awt.image.BufferedImage; -import java.awt.FlowLayout; import java.awt.Graphics2D; import java.awt.Insets; -import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -59,6 +57,7 @@ import org.gjt.sp.jedit.msg.PropertiesChanged; import org.gjt.sp.jedit.msg.ViewUpdate; import org.gjt.sp.util.Log; +import org.gjt.sp.util.StringList; import errorlist.DefaultErrorSource; import errorlist.ErrorSource; @@ -101,7 +100,7 @@ private ShellState shellState; // The selector of shells - private JComboBox shellCombo; + private JComboBox<String> shellCombo; private RolloverButton runAgain, run, toBuffer, stop, clear; private JLabel animationLabel; @@ -624,7 +623,7 @@ { Box box = new Box(BoxLayout.X_AXIS); - shellCombo = new JComboBox(); + shellCombo = new JComboBox<String>(); updateShellList(); shellCombo.addActionListener(new ActionHandler()); shellCombo.setRequestFocusEnabled(false); @@ -767,13 +766,14 @@ //{{{ updateShellList() method private void updateShellList() { + String selected = (String)shellCombo.getSelectedItem(); String[] shells = Shell.getShellNames(); - Arrays.sort(shells,new StandardUtilities.StringCompare<String>(true)); String[] shellsPlusNew = new String[shells.length + 1]; System.arraycopy(shells, 0, shellsPlusNew, 0, shells.length); shellsPlusNew[shells.length] = jEdit.getProperty("console.newshell.newShell", "New Shell..."); shellCombo.setModel(new DefaultComboBoxModel(shellsPlusNew)); shellCombo.setMaximumSize(shellCombo.getPreferredSize()); + shellCombo.setSelectedItem(selected); } //}}} //{{{ propertiesChanged() method @@ -1173,30 +1173,18 @@ // "New Shell..." is always the last item in the combobox // and is selected - // need a popup to ask what kind of shell + // show a dialog to ask what kind of shell NewShellDialog dialog = new NewShellDialog(); dialog.show(); String name = dialog.getShellName(); - String code; - switch(dialog.getShellType()) - { - case "BeanShell": - code = "new console.ConsoleBeanShell(\"" + name + "\");"; - break; - case "System": - default: - code = "new console.SystemShell(\"" + name + "\");"; - break; - } - - // create a new system shell service - ServiceManager.registerService(Shell.SERVICE, name, code, null); updateShellList(); shellCombo.setSelectedItem(name); - jEdit.setProperty("console.userShells", jEdit.getProperty("console.userShells", "") + ',' + name); - jEdit.setProperty("console.userShells." + name + ".code", code); } - setShell((String)shellCombo.getSelectedItem()); + String selected = (String)shellCombo.getSelectedItem(); + if (selected != null && selected.indexOf('(') > 0) { + selected = selected.substring(0, selected.indexOf('(')).trim(); + } + setShell(selected); } else if(source == runAgain) runLastCommand(); Modified: plugins/Console/trunk/console/ConsolePlugin.java =================================================================== --- plugins/Console/trunk/console/ConsolePlugin.java 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/console/ConsolePlugin.java 2016-06-14 20:36:19 UTC (rev 24410) @@ -29,10 +29,14 @@ import java.io.IOException; import java.io.StreamTokenizer; import java.io.StringReader; +import java.lang.reflect.Field; import java.net.URL; import java.util.Arrays; +import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.TreeMap; import javax.swing.JOptionPane; @@ -41,6 +45,7 @@ import org.gjt.sp.jedit.EditBus.EBHandler; import org.gjt.sp.jedit.gui.DockableWindowManager; import org.gjt.sp.jedit.msg.DynamicMenuChanged; +import org.gjt.sp.jedit.msg.EditorStarted; import org.gjt.sp.jedit.msg.PluginUpdate; import org.gjt.sp.jedit.msg.ViewUpdate; import org.gjt.sp.util.Log; @@ -68,6 +73,7 @@ private static ActionSet allCommands; private static ActionSet shellSwitchActions; static CommandoToolBar toolBar = null; + private static Map<String, ShellDescriptor> baseShells; // }}} // {{{ static final Members @@ -149,7 +155,132 @@ CommandoToolBar.init(); EditBus.addToBus(this); + + } // }}} + + // {{{ loadShells() method + // load the base shells (that is, those proviced via the service mechanism) + // and the shells created by the user + private void loadShells() { + // get details of base shells, that is, shells that are provided by either + // this plugin or other plugins, not user shells, which are loaded next. + loadBaseShells(); + // load user-created shells + loadUserShells(); + } // }}} + + // {{{ loadBaseShells() method + // Here's a crappy hack -- ServiceManager doesn't expose its list of + // service details, so this bit of awesomeness breaks in and gets it anyway. + public static void loadBaseShells() { + baseShells = new HashMap<String, ShellDescriptor>(); + try { + Class sm = Class.forName("org.gjt.sp.jedit.ServiceManager"); + Field f = sm.getDeclaredField("serviceMap"); + f.setAccessible(true); + Map smMap = (Map)f.get(null); + for (Object o : smMap.values()) { + Field field = o.getClass().getDeclaredField("clazz"); + field.setAccessible(true); + String clazz = (String)field.get(o); + // there are lots of services, only want those that are shells + if (!"console.Shell".equals(clazz)) + continue; + ConsolePlugin.ShellDescriptor d = new ConsolePlugin.ShellDescriptor(); + field = o.getClass().getDeclaredField("name"); + field.setAccessible(true); + d.name = (String)field.get(o); + field = o.getClass().getDeclaredField("code"); + field.setAccessible(true); + // code will be null only if the plugin providing the service + // is not yet activated. + d.code = (String)field.get(o); + if (d.code != null) + d.code = d.code.trim(); + // might need the plugin jar later to force the plugin to + // activate + field = o.getClass().getDeclaredField("plugin"); + field.setAccessible(true); + d.plugin = (PluginJAR)field.get(o); + baseShells.put(d.name, d); + } + } + catch(Exception e) { + e.printStackTrace(); + } + } // }}} + + // {{{ getBaseShellNames() method + public static String[] getBaseShellNames() { + ArrayList<String> names = new ArrayList<String>(baseShells.keySet()); + return names.toArray(new String[names.size()]); + } // }}} + + // {{{ getBaseShellCode() method + /** + * @param name The name of the shell to get the constructor code for. + * @return The beanshell code that creates the shell. This may return null in + * the case that the plugin providing the shell is not yet activated. + */ + public static String getBaseShellCode(String name) { + if (name == null) + return null; + ShellDescriptor d = baseShells.get(name); + if (d == null) + return null; + return d.code; + } // }}} + + // {{{ getBaseShellPluginJAR() method + /** + * @param name The shell service name. + * @return The PluginJAR that provides a shell service. + */ + public static PluginJAR getBaseShellPluginJAR(String name) { + if (name == null) + return null; + ShellDescriptor d = baseShells.get(name); + if (d == null) + return null; + return d.plugin; + } // }}} + + // {{{ ShellDescriptor class + /** + * More or less the same as the Descriptor class from ServiceManager, this + * keeps track of shell creation details. + */ + public static class ShellDescriptor { + public String name = ""; + public String code = ""; + public PluginJAR plugin; + + public String toString() { + return new StringBuilder(name).append(", ").append(code).append(", ").append(plugin).toString(); + } + + @Override + public int hashCode() + { + return 31 * name.hashCode() + code.hashCode(); + } + + public boolean equals(Object o) + { + if(o instanceof ShellDescriptor) + { + ShellDescriptor d = (ShellDescriptor)o; + return d.name.equals(name) + && d.code.equals(code); + } + else + return false; + } + } // }}} + + // {{{ loadUserShells() method + private void loadUserShells() { String userShells = jEdit.getProperty("console.userShells", ""); if (!userShells.isEmpty()) { @@ -160,11 +291,29 @@ if (name == null || name.isEmpty() || optOut.contains(name)) continue; String code = jEdit.getProperty("console.userShells." + name + ".code"); - ServiceManager.registerService(Shell.SERVICE, name, code, null); + ServiceManager.registerService(Shell.SERVICE, name, code, null); + Shell shell = (Shell)ServiceManager.getService(Shell.SERVICE, name); + shell.setIsUserShell(true); + shell.setName(name); } } - } // }}} + + // {{{ getAllShells() method + private List<Shell> getAllShells() { + List<Shell> shells = new ArrayList<Shell>(); + String[] shellNames = Shell.getShellNames(); + if (shellNames != null && shellNames.length > 0) + { + for (String name : shellNames) + { + if (name == null || name.isEmpty()) + continue; + shells.add(Shell.getShell(name)); + } + } + return shells; + } // }}} // {{{ parseLine() /** parseLine() @@ -194,9 +343,14 @@ jEdit.removeActionSet(shellSwitchActions); allCommands.removeAllActions(); shellSwitchActions.removeAllActions(); - SystemShell systemShell = getSystemShell(); - if (systemShell != null) - systemShell.beforeStopping(); + // since there can now be multiple system shells, need to find them + // all and call beforeStopping on each one. + List<Shell> allShells = getAllShells(); + for (Shell shell : allShells) { + if (shell instanceof SystemShell) { + ((SystemShell)shell).beforeStopping(); + } + } // ??? Does this really get all the Console objects that are in memory? View[] views = jEdit.getViews(); @@ -232,8 +386,41 @@ public void handlePluginUpdate(PluginUpdate msg) { rescanShells(); + + if (PluginUpdate.REMOVED.equals(msg.getWhat())) { + if (baseShells != null) { + PluginJAR plugin = msg.getPluginJAR(); + if (plugin == null) { + return; + } + List<String> removed = new ArrayList<String>(); + for (String name : baseShells.keySet()) { + ShellDescriptor d = baseShells.get(name); + if (d != null && plugin.equals(d.plugin)) { + removed.add(name); + } + } + StringList userShells = new StringList(Shell.getUserShellNames()); + StringList optOut = StringList.split(jEdit.getProperty("console.userShells.optOut", ""), "[,]"); + for (String name : removed) { + baseShells.remove(name); + userShells.remove(name); + optOut.remove(name); + ServiceManager.unregisterService(Shell.SERVICE, name); + jEdit.unsetProperty("console.userShells." + name + ".code"); + } + jEdit.setProperty("console.userShells", userShells.join(",")); + jEdit.setProperty("console.userShells.optOut", optOut.join(",")); + } + } + } // }}} + + @EBHandler + public void handleEditorStarted(EditorStarted msg) { + loadShells(); + } // {{{ getConsoleSettingsDirectory() method public static String getConsoleSettingsDirectory() Modified: plugins/Console/trunk/console/Shell.java =================================================================== --- plugins/Console/trunk/console/Shell.java 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/console/Shell.java 2016-06-14 20:36:19 UTC (rev 24410) @@ -72,6 +72,7 @@ // /** @deprecated list of shells defined in the old API */ // private static Vector<Shell> shells = new Vector<Shell>(); private String name; + private boolean isUserShell = false; //}}} //{{{ Shell constructor @@ -101,6 +102,42 @@ Collections.sort(shells); return shells.toArray(); } //}}} + + public static String[] getBaseShellNames() { + StringList shellNames = new StringList(ServiceManager.getServiceNames(SERVICE)); + StringList optOut = StringList.split(jEdit.getProperty("console.userShells.optOut", ""), "[,]"); + StringList shells = new StringList(); + for (String name : shellNames) + { + if (name != null && !name.isEmpty() && !optOut.contains(name)) + { + Shell shell = Shell.getShell(name); + if (!shell.isUserShell()) { + shells.add(name); + } + } + } + Collections.sort(shells); + return shells.toArray(); + } + + public static String[] getUserShellNames() { + StringList shellNames = new StringList(ServiceManager.getServiceNames(SERVICE)); + StringList optOut = StringList.split(jEdit.getProperty("console.userShells.optOut", ""), "[,]"); + StringList shells = new StringList(); + for (String name : shellNames) + { + if (name != null && !name.isEmpty() && !optOut.contains(name)) + { + Shell shell = Shell.getShell(name); + if (shell.isUserShell()) { + shells.add(name); + } + } + } + Collections.sort(shells); + return shells.toArray(); + } //{{{ handlesVFS() /** A System Shell can override this method and use @@ -135,7 +172,15 @@ return null; return (Shell)ServiceManager.getService(SERVICE, name); } //}}} - + + public boolean isUserShell() { + return isUserShell; + } + + public void setIsUserShell(boolean b) { + isUserShell = b; + } + //{{{ openConsole() method /** * Called when a Console dockable first selects this shell. Modified: plugins/Console/trunk/console/gui/NewShellDialog.java =================================================================== --- plugins/Console/trunk/console/gui/NewShellDialog.java 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/console/gui/NewShellDialog.java 2016-06-14 20:36:19 UTC (rev 24410) @@ -13,7 +13,9 @@ import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.gui.*; +import org.gjt.sp.util.StringList; +import console.ConsolePlugin; import console.Shell; public class NewShellDialog extends JDialog { @@ -33,23 +35,75 @@ * are also hard coded into their respective constructors, so no need * to load these names from properties. */ - shellNames = new JComboBox<String>( new String[] {"System", "BeanShell"} ); + shellNames = new JComboBox<String>( Shell.getBaseShellNames());//new String[] {"System", "BeanShell"} ); shellName = new JTextField(); JButton okButton = new JButton( jEdit.getProperty( "common.ok" ) ); okButton.addActionListener( new ActionListener(){ public void actionPerformed( ActionEvent ae ) { + // check the name, it must not be empty, must not already exist, + // and cannot contain a comma String newName = getShellName(); + if (newName == null || newName.isEmpty()) { + JOptionPane.showMessageDialog(NewShellDialog.this, + jEdit.getProperty("console.newshell.emptyName.msg", "Name must not be empty."), + jEdit.getProperty("console.newshell.emptyName.title", "Missing Name"), + JOptionPane.ERROR_MESSAGE); + return; + } + if (newName.indexOf(',') > -1) { + JOptionPane.showMessageDialog(NewShellDialog.this, + jEdit.getProperty("console.newshell.hasComma.msg", "Name must not contain a comma."), + jEdit.getProperty("console.newshell.hasComma.title", "Illegal Name"), + JOptionPane.ERROR_MESSAGE); + return; + } String[] existingNames = Shell.getShellNames(); for ( String name : existingNames ) { if ( newName.equals( name ) ) { JOptionPane.showMessageDialog( NewShellDialog.this, - jEdit.getProperty( "console.userShells.shellExistsMsg", new String[] {name} ), - jEdit.getProperty( "console.userShells.shellExistsTitle", "Shell already exists" ), - JOptionPane.WARNING_MESSAGE ); + jEdit.getProperty( "console.newshell.shellExists.msg", new String[] {name} ), + jEdit.getProperty( "console.newshell.shellExists.title", "Shell already exists" ), + JOptionPane.ERROR_MESSAGE ); return; } } + + // create the shell + String name = getShellName(); + String type = getShellType(); + if (name == null || type == null) + return; + String code = ConsolePlugin.getBaseShellCode(type); + if (code == null) { + ConsolePlugin.getBaseShellPluginJAR(type).activatePlugin(); + ConsolePlugin.loadBaseShells(); + code = ConsolePlugin.getBaseShellCode(type); + if (code == null) { + JOptionPane.showMessageDialog(NewShellDialog.this, + jEdit.getProperty("console.newshell.unableToCreateShell.msg", new String[] {name} ), + jEdit.getProperty("console.newshell.unableToCreateShell.title", "Unable to create shell"), + JOptionPane.ERROR_MESSAGE); + return; + } + } + // possibly replace the name in the beanshell code, + // e.g. change: new javascriptshell.JavaScriptShell("JavaScript"); + // to: new javascriptshell.JavaScriptShell("name"); + if (code.indexOf('\"') > 0) { + code = code.replaceAll("\".*?\"", '\"' + name + '\"'); + } + + // create a new shell service + ServiceManager.registerService(Shell.SERVICE, name, code, ConsolePlugin.getBaseShellPluginJAR(type)); + Shell shell = (Shell)ServiceManager.getService(Shell.SERVICE, name); + shell.setName(name); + shell.setIsUserShell(true); + StringList userShells = StringList.split(jEdit.getProperty("console.userShells"), ","); + userShells.add(name); + jEdit.setProperty("console.userShells", userShells.join(",")); + jEdit.setProperty("console.userShells." + name + ".code", code); + setVisible( false ); dispose(); } Modified: plugins/Console/trunk/console/options/GeneralOptionPane.java =================================================================== --- plugins/Console/trunk/console/options/GeneralOptionPane.java 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/console/options/GeneralOptionPane.java 2016-06-14 20:36:19 UTC (rev 24410) @@ -32,6 +32,7 @@ import java.util.Arrays; import java.util.ArrayList; import java.util.List; +import java.util.ListIterator; import javax.swing.BorderFactory; import javax.swing.Box; @@ -44,6 +45,7 @@ import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.DefaultComboBoxModel; +import javax.swing.ListModel; import javax.swing.event.*; import org.gjt.sp.jedit.AbstractOptionPane; @@ -57,7 +59,6 @@ import common.gui.DoubleJList; -import console.Console; import console.Shell; import console.gui.Label; import console.gui.NewShellDialog; @@ -122,26 +123,9 @@ new ActionListener() { public void actionPerformed(ActionEvent evt) { - // need a popup to ask what kind of shell + // show a dialog to ask what kind of shell NewShellDialog dialog = new NewShellDialog(); dialog.show(); - String name = dialog.getShellName(); - String code; - switch(dialog.getShellType()) - { - case "BeanShell": - code = "new console.ConsoleBeanShell(\"" + name + "\");"; - break; - case "System": - default: - code = "new console.SystemShell(\"" + name + "\");"; - break; - } - - // create a new shell service - ServiceManager.registerService(Shell.SERVICE, name, code, null); - jEdit.setProperty("console.userShells", jEdit.getProperty("console.userShells", "") + ',' + name); - jEdit.setProperty("console.userShells." + name + ".code", code); reloadLists(); reloadDefaultList(); @@ -166,6 +150,8 @@ } } ); + dlist.addLeftListDataListener(leftDataListener); + dlist.addRightListDataListener(rightDataListener); dlist.init(); addComponent( dlist, GridBagConstraints.NONE ); @@ -306,27 +292,6 @@ jEdit.setProperty("ansi-escape.behaviour", String.valueOf( ansiBehaviour.getSelectedIndex() ) ); jEdit.setProperty("ansi-escape.mode" , String.valueOf( ansiMode.getSelectedIndex() ) ); - // register/unregister shells with ServiceManager - List<String> data = dlist.getLeftValuesList(); - StringBuilder sb = new StringBuilder(); - for (String name : data) - { - ServiceManager.unregisterService(Shell.SERVICE, name); - sb.append(name).append(','); - } - jEdit.unsetProperty("console.userShells.optOut"); - jEdit.setProperty("console.userShells.optOut", sb.toString()); - - sb = new StringBuilder(); - data = dlist.getRightValuesList(); - for (String name : data) - { - String code = jEdit.getProperty("console.userShells." + name + ".code"); - ServiceManager.registerService(Shell.SERVICE, name, code, null); - sb.append(name).append(','); - } - jEdit.unsetProperty("console.userShells"); - jEdit.setProperty("console.userShells", sb.toString()); } //}}} @@ -356,14 +321,24 @@ private void reloadLists() { // load the ping pong lists - StringList allShells = new StringList(ServiceManager.getServiceNames(Shell.SERVICE)); - allShells.remove("System"); - allShells.remove("BeanShell"); + StringList allUserShells = new StringList(ServiceManager.getServiceNames(Shell.SERVICE)); + ListIterator<String> it = allUserShells.listIterator(); + while (it.hasNext()) { + String name = it.next(); + if (!Shell.getShell(name).isUserShell()) { + it.remove(); + } + } StringList availableShells = new StringList(); StringList selectedShells = new StringList(Shell.getShellNames()); - selectedShells.remove("System"); - selectedShells.remove("BeanShell"); - for ( String name : allShells ) + it = selectedShells.listIterator(); + while (it.hasNext()) { + String name = it.next(); + if (!Shell.getShell(name).isUserShell()) { + it.remove(); + } + } + for ( String name : allUserShells ) { if (!selectedShells.contains(name)) { @@ -391,4 +366,83 @@ defaultShell.setSelectedItem(ds); } + // unregister any shell added to the left list, update the optOut property + private ListDataListener leftDataListener = new ListDataListener(){ + public void contentsChanged(ListDataEvent e) { + // do nothing + } + + public void intervalAdded(ListDataEvent e) { + ListModel<String> model = (ListModel<String>)e.getSource(); + int start = e.getIndex0(); + int end = e.getIndex1(); + + // unregister the shell + for (int i = start; i <= end; i++) { + String name = model.getElementAt(i); + ServiceManager.unregisterService(Shell.SERVICE, name); + } + + resetOptOut(); + reloadDefaultList(); + } + + public void intervalRemoved(ListDataEvent e) { + resetOptOut(); + reloadDefaultList(); + } + + }; + + // register any shell added to the list + private ListDataListener rightDataListener = new ListDataListener(){ + public void contentsChanged(ListDataEvent e) { + // do nothing + } + + public void intervalAdded(ListDataEvent e) { + ListModel<String> model = (ListModel<String>)e.getSource(); + int start = e.getIndex0(); + int end = e.getIndex1(); + + for (int i = start; i <= end; i++) { + String name = model.getElementAt(i); + String code = jEdit.getProperty("console.userShells." + name + ".code"); + ServiceManager.registerService(Shell.SERVICE, name, code, null); + } + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < model.getSize(); i++) + { + String name = model.getElementAt(i); + sb.append(name); + if (i < model.getSize() - 1) { + sb.append(','); + } + } + jEdit.unsetProperty("console.userShells"); + jEdit.setProperty("console.userShells", sb.toString()); + resetOptOut(); + reloadDefaultList(); + } + + public void intervalRemoved(ListDataEvent e) { + } + }; + + // resets the optOut property to the values in the left list + private void resetOptOut() { + List<String> data = dlist.getLeftValuesList(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < data.size(); i++) + { + String name = data.get(i); + sb.append(name); + if (i < data.size() - 1) { + sb.append(','); + } + } + jEdit.unsetProperty("console.userShells.optOut"); + jEdit.setProperty("console.userShells.optOut", sb.toString()); + } + } Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2016-06-14 20:36:19 UTC (rev 24410) @@ -6,7 +6,8 @@ Version 5.3.0 Requires jEdit 5.0, Java 1.7, ErrorList 2.1, CommonControls 1.7.5, and ProjectViewer 3.5 (optional). [Dale Anson] Feature request #159, multiple tabs for System shell. No tabs, actually, just - change shells from the existing drop down, also allow multiple BeanShell shells. + change shells from the existing drop down, also allow multiple shells from any + existing shell. Version 5.1.5 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, CommonControls 1.7, and ProjectViewer 3.5 (optional). [Alan Ezust] Modified: plugins/Console/trunk/docs/users-guide.xml =================================================================== --- plugins/Console/trunk/docs/users-guide.xml 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/docs/users-guide.xml 2016-06-14 20:36:19 UTC (rev 24410) @@ -243,8 +243,8 @@ </para> <para> - The console window consists of a popup for choosing the current - <firstterm>shell</firstterm>, a series of icon buttons, and a shell + The console window consists of a dropdown for choosing the current + <firstterm>shell</firstterm> or creating a new shell, a series of icon buttons, and a shell input/output area that occupies the remaining space of the window. </para> Modified: plugins/Console/trunk/services.xml =================================================================== --- plugins/Console/trunk/services.xml 2016-06-14 20:34:46 UTC (rev 24409) +++ plugins/Console/trunk/services.xml 2016-06-14 20:36:19 UTC (rev 24410) @@ -4,10 +4,10 @@ <SERVICES> <SERVICE CLASS="console.Shell" NAME="System"> - new console.SystemShell(); + new console.SystemShell("System"); </SERVICE> <SERVICE CLASS="console.Shell" NAME="BeanShell"> - new console.ConsoleBeanShell(); + new console.ConsoleBeanShell("BeanShell"); </SERVICE> <SERVICE CLASS="projectviewer.config.OptionsService" NAME="Console"> new console.ProjectCommandOptionsService(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2016-07-05 03:58:14
|
Revision: 24443 http://sourceforge.net/p/jedit/svn/24443 Author: ezust Date: 2016-07-05 03:58:12 +0000 (Tue, 05 Jul 2016) Log Message: ----------- dependencies bump, changelog fixing, whitespace. Modified Paths: -------------- plugins/Console/trunk/Console.props plugins/Console/trunk/console/ErrorThread.java plugins/Console/trunk/docs/CHANGELOG.txt Modified: plugins/Console/trunk/Console.props =================================================================== --- plugins/Console/trunk/Console.props 2016-06-29 23:29:25 UTC (rev 24442) +++ plugins/Console/trunk/Console.props 2016-07-05 03:58:12 UTC (rev 24443) @@ -11,9 +11,9 @@ plugin.console.ConsolePlugin.author=Slava Pestov (former), Alan Ezust, Artem Bryantsev, Dale Anson # see jEdit.getBuild() to understand the numbering scheme. -plugin.console.ConsolePlugin.depend.0=jedit 05.00.99.00 -plugin.console.ConsolePlugin.depend.1=jdk 1.7 -plugin.console.ConsolePlugin.depend.2=plugin errorlist.ErrorListPlugin 2.1 +plugin.console.ConsolePlugin.depend.0=jedit 05.02.99.00 +plugin.console.ConsolePlugin.depend.1=jdk 1.8 +plugin.console.ConsolePlugin.depend.2=plugin errorlist.ErrorListPlugin 2.3 plugin.console.ConsolePlugin.depend.3=optional plugin CommonControlsPlugin 1.7.5 plugin.console.ConsolePlugin.depend.4=optional plugin projectviewer.ProjectPlugin 3.5.0 Modified: plugins/Console/trunk/console/ErrorThread.java =================================================================== --- plugins/Console/trunk/console/ErrorThread.java 2016-06-29 23:29:25 UTC (rev 24442) +++ plugins/Console/trunk/console/ErrorThread.java 2016-07-05 03:58:12 UTC (rev 24443) @@ -3,7 +3,7 @@ * :tabSize=4:indentSize=4:noTabs=false: * :folding=explicit:collapseFolds=1: * - * Copyright (C) 2012 contributors + * Copyright (C) 2012 contributors * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -36,7 +36,7 @@ /** * @deprecated * Thread for handing error output of running subprocesses. - * Write data to a Console's ErrorOutput. + * Write data to a Console's ErrorOutput. */ //{{{ ErrorThread class @@ -48,7 +48,7 @@ private boolean aborted; private Color errorColor; //}}} - + //{{{ ErrorThread constructor ErrorThread(ConsoleProcess process, InputStream in, Color errorColor) { @@ -56,7 +56,7 @@ this.in = in; this.errorColor = errorColor; } //}}} - + //{{{ run() method public void run() { @@ -71,7 +71,7 @@ } Output output = process.getErrorOutput(); - StringBuilder lineBuffer = new StringBuilder(100); + StringBuilder lineBuffer = new StringBuilder(100); try { char[] input = new char[1024]; @@ -90,10 +90,10 @@ } break; } - + output.print( errorColor, lineBuffer.append(input, 0, read).toString() ); lineBuffer.setLength(0); - + Thread.sleep(10); } } @@ -103,7 +103,7 @@ { if ( process.isForeground() ) Log.log(Log.ERROR, e, e); - + Console console = process.getConsole(); Output error = process.getErrorOutput(); if (console != null) @@ -127,7 +127,7 @@ process.threadDone(); } } //}}} - + //{{{ abort() method void abort() { @@ -135,3 +135,4 @@ interrupt(); } //}}} } //}}} + Modified: plugins/Console/trunk/docs/CHANGELOG.txt =================================================================== --- plugins/Console/trunk/docs/CHANGELOG.txt 2016-06-29 23:29:25 UTC (rev 24442) +++ plugins/Console/trunk/docs/CHANGELOG.txt 2016-07-05 03:58:12 UTC (rev 24443) @@ -3,13 +3,11 @@ jEdit Console Plugin Changelog $Date$ - Version 5.3.0 Requires jEdit 5.0, Java 1.7, ErrorList 2.1, CommonControls 1.7.5, and ProjectViewer 3.5 (optional). - [Dale Anson] + Version 5.3.0 Requires jEdit 5.2, Java 1.8, ErrorList 2.3.1, CommonControls 1.7.5, and ProjectViewer 3.5 (optional). + [Dale Anson] Feature request #159, multiple tabs for System shell. No tabs, actually, just change shells from the existing drop down, also allow multiple shells from any - existing shell. - - Version 5.1.5 Requires jEdit 5.0, Java 1.6, ErrorList 2.1, CommonControls 1.7, and ProjectViewer 3.5 (optional). + existing shell. [Alan Ezust] Fix Plugin Bug#1835 SshConsole: toggle ssh shortcut doesn't work at first This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dal...@us...> - 2021-06-28 02:31:34
|
Revision: 25519 http://sourceforge.net/p/jedit/svn/25519 Author: daleanson Date: 2021-06-28 02:31:36 +0000 (Mon, 28 Jun 2021) Log Message: ----------- Fixed some errors for jEdit 5.7 and updated a bunch of javadoc tags. Modified Paths: -------------- plugins/Console/trunk/console/AnsiEscapeParser.java plugins/Console/trunk/console/BufferOutput.java plugins/Console/trunk/console/CommandOutputParser.java plugins/Console/trunk/console/Console.java plugins/Console/trunk/console/ConsolePane.java plugins/Console/trunk/console/ConsolePlugin.java plugins/Console/trunk/console/ConsoleProcess.java plugins/Console/trunk/console/DirectoryStack.java plugins/Console/trunk/console/ErrorMatcher.java plugins/Console/trunk/console/ErrorThread.java plugins/Console/trunk/console/InputThread.java plugins/Console/trunk/console/OutputThread.java plugins/Console/trunk/console/ProcessRunner.java plugins/Console/trunk/console/ProjectTreeListener.java plugins/Console/trunk/console/Shell.java plugins/Console/trunk/console/SimpleInputStreamTask.java plugins/Console/trunk/console/SimpleOutputStreamTask.java plugins/Console/trunk/console/StreamTask.java plugins/Console/trunk/console/StreamThread.java plugins/Console/trunk/console/SystemShellBuiltIn.java plugins/Console/trunk/console/commando/CommandoToolBar.java plugins/Console/trunk/console/gui/NewShellDialog.java plugins/Console/trunk/console/gui/PanelStack.java plugins/Console/trunk/jcfunc/Sequences.java plugins/Console/trunk/jcfunc/parameters/paramRM.java plugins/Console/trunk/jcfunc/parameters/paramSM.java Modified: plugins/Console/trunk/console/AnsiEscapeParser.java =================================================================== --- plugins/Console/trunk/console/AnsiEscapeParser.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/AnsiEscapeParser.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -65,9 +65,6 @@ /**<p> * Parser's state is decribed by following properties: * @param ansi_mode - type of escaped sequencies (what kind of escaped sequencies parser processes?) - * @see jcfunc.Sequences.MODE_7BIT - * @see jcfunc.Sequences.MODE_8BIT - * Usually use 7-bit mode. * @param behaviour - parser's behaviour proper (what parser does with found sequencies?) * @see Behaviour * @param func_arr - array of processing functions (escaped sequence == ESC + function) @@ -130,7 +127,6 @@ // fill parsing control function's list StringList funcs = StringList.split( jEdit.getProperty("ansi-escape.func-list").toLowerCase(), "\\s+"); String avaible_funcs = jEdit.getProperty("ansi-escape.func-list-values"); - String str = ""; int i = 0; while ( i < funcs.size() ) @@ -137,8 +133,7 @@ { if ( !avaible_funcs.contains( funcs.get(i) ) ) { - str = funcs.remove(i); - str = null; + funcs.remove(i); i--; } i++; @@ -216,6 +211,7 @@ * Check two things: * @param behaviour - is it the current parser's behaviour? * @param line - are there any matches?</p> + * @return true or false */ public boolean touch(Behaviour behaviour, String line) { Modified: plugins/Console/trunk/console/BufferOutput.java =================================================================== --- plugins/Console/trunk/console/BufferOutput.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/BufferOutput.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -48,7 +48,10 @@ public class BufferOutput implements Output { - /** Guess the edit mode of the output based on the command line executed. */ + /** Guess the edit mode of the output based on the command line executed. + * @param command the command + * @return return the result + */ static public String guessMode(String command) { command = command.toLowerCase(); if (command.contains("diff") || command.contains("patch")) @@ -120,6 +123,7 @@ /** * Should this run through error handlers and print in colors? + * @param message the message, which isn't used, no idea why it's a parameter */ public void printColored(String message) { Modified: plugins/Console/trunk/console/CommandOutputParser.java =================================================================== --- plugins/Console/trunk/console/CommandOutputParser.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/CommandOutputParser.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -89,6 +89,8 @@ // {{{ processLine methods /** * Processes a line without displaying it to the Output + * @param text the text to process + * @return see processLine(text, disp) */ final public int processLine(String text) { return processLine(text, false); Modified: plugins/Console/trunk/console/Console.java =================================================================== --- plugins/Console/trunk/console/Console.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/Console.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -57,7 +57,6 @@ import org.gjt.sp.jedit.msg.PropertiesChanged; import org.gjt.sp.jedit.msg.ViewUpdate; import org.gjt.sp.util.Log; -import org.gjt.sp.util.StringList; import errorlist.DefaultErrorSource; import errorlist.ErrorSource; @@ -209,6 +208,8 @@ /** * Creates a ShellState (output instance) if necessary. * Sets the current active shell to be this new shell. + * @param shell a shell + * @return a shell */ public Shell setShell(Shell shell) { @@ -270,8 +271,10 @@ //{{{ getOutputPane() method /** + * @return a text pane * @deprecated Use getConsolePane() instead. */ + @Deprecated public JTextPane getOutputPane() { return text; @@ -286,7 +289,8 @@ //{{{ getOutput() methods /** - * Returns the Output corresponding to a particular Shell, without changing + * @param shellName the name of a shell + * @return Returns the Output corresponding to a particular Shell, without changing * the selected Shell. */ public Output getOutput(String shellName) { @@ -299,7 +303,7 @@ return retval; } /** - * Returns the output instance for the currently selected Shell. + * @return Returns the output instance for the currently selected Shell. * @since Console 3.6 */ public Output getOutput() @@ -330,7 +334,7 @@ else if (msg instanceof DockableWindowUpdate) { DockableWindowUpdate dwu = (DockableWindowUpdate) msg; if (dwu.getWhat() != null && dwu.getWhat().equals(DockableWindowUpdate.ACTIVATED)) - if (dwu.getDockable().equals("console")) + if (dwu.getDockable().equals("console")) // NOPMD scrollToBottom(); } @@ -339,7 +343,7 @@ try { dir = view.getEditPane().getBuffer().getDirectory(); } - catch (NullPointerException npe) {} + catch (NullPointerException npe) {} // NOPMD // SshConsole always follows textPane. if ( !dir.isEmpty() && (dir.startsWith("sftp://") || jEdit.getBooleanProperty("console.changedir.followTextArea"))) { @@ -386,6 +390,7 @@ * Returns this console's error source instance. Plugin shells can * either add errors to this error source, or use their own; both * methods will look the same to the user. + * @return the default error source */ public DefaultErrorSource getErrorSource() { @@ -394,7 +399,7 @@ //{{{ getInfoColor() method /** - * Returns the informational text color. + * @return Returns the informational text color. */ public Color getInfoColor() { @@ -403,7 +408,7 @@ //{{{ getWarningColor() method /** - * Returns the warning text color. + * @return Returns the warning text color. */ public Color getWarningColor() { @@ -412,7 +417,7 @@ //{{{ getErrorColor() method /** - * Returns the error text color. + * @return Returns the error text color. */ public Color getErrorColor() { @@ -444,10 +449,13 @@ //{{{ print() method /** + * @param color a color + * @param msg a message * @deprecated Do not use the console as an <code>Output</code> * instance, use the <code>Output</code> given to you in * <code>Shell.execute()</code> instead. */ + @Deprecated public void print(Color color, String msg) { getOutput().print(color,msg); @@ -455,6 +463,8 @@ //{{{ writeAttrs() method /** + * @param attrs an attribute set + * @param msg a message * @deprecated Do not use the console as an <code>Output</code> * instance, use the <code>Output</code> given to you in * <code>Shell.execute()</code> instead. @@ -462,6 +472,7 @@ * see @ref Output for information about how to create additional * console Output instances. */ + @Deprecated public void writeAttrs(AttributeSet attrs, String msg) { getOutput().writeAttrs(attrs,msg); @@ -473,6 +484,7 @@ * instance, use the <code>Output</code> given to you in * <code>Shell.execute()</code> instead. */ + @Deprecated public void commandDone() { getOutput().commandDone(); @@ -480,6 +492,7 @@ //{{{ getShellState() method /** + * @param shell a shell * @return the Output of a Shell, assuming the Shell was already created.... * * @since Console 4.0.2. @@ -602,8 +615,8 @@ else error.print(null,""); - errorSource.clear(); - ErrorSource.unregisterErrorSource(errorSource); + ///errorSource.clear(); + ///ErrorSource.unregisterErrorSource(errorSource); try { shell.execute(this, input, output, error, cmd); @@ -818,8 +831,11 @@ }//}}} //{{{ shellForVFS method - /** @return a shell that is suited for this path, based on passing this - path onto the handlesVFS() method of each Shell. */ + /** + @param path a path + @return a shell that is suited for this path, based on passing this + path onto the handlesVFS() method of each Shell. + */ static public String shellForVFS(String path) { for (String name: Shell.getShellNames()) { Shell s = Shell.getShell(name); @@ -917,7 +933,7 @@ if(longestCommonStart.length() != 0) { - if(offset - info.offset + if(offset - info.offset // NOPMD != longestCommonStart.length()) { text.select(cmdStart + info.offset,caret); @@ -995,7 +1011,7 @@ //{{{ getInputStart() method /** - * Return InputStart position inside of document. + * @return Return InputStart position inside of document. */ public int getInputStart() { @@ -1006,6 +1022,7 @@ //{{{ setInputStart() method /** * Setup InputStart position inside of document. + * @param cmdStart the command */ public void setInputStart(int cmdStart) { Modified: plugins/Console/trunk/console/ConsolePane.java =================================================================== --- plugins/Console/trunk/console/ConsolePane.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/ConsolePane.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -237,6 +237,7 @@ /** * Return InputStart position inside of current (associated with * ConsolePane) document. + * @return an int */ public int getInputStart() { @@ -257,6 +258,7 @@ * ConsolePane) document. * ShellState class changes its InputStart position by oneself. * (see "Console.ShellState.writeSafely()" ). + * @param cmdStart start of command */ public void setInputStart(int cmdStart) { Modified: plugins/Console/trunk/console/ConsolePlugin.java =================================================================== --- plugins/Console/trunk/console/ConsolePlugin.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/ConsolePlugin.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -80,7 +80,7 @@ public static final String MENU = "plugin.console.ConsolePlugin.menu"; public static final String CMD_PATH = "/console/bsh/"; /** - * Return value of {@link #parseLine()} if the text does not match a + * Return value of parseLine() if the text does not match a * known error pattern. */ public static final int NO_ERROR = -1; @@ -319,7 +319,10 @@ /** parseLine() * Publicly documented class for parsing output of user defined * programs through the system shell error parser. - * + * @param view a view + * @param text some text + * @param directory some directory somewhere + * @param errorSource the error source * @return -1 if no error/warning, or an ErrorType. * Possible values are: * @see errorlist.ErrorSource#ERROR @@ -388,7 +391,7 @@ rescanShells(); if (PluginUpdate.REMOVED.equals(msg.getWhat())) { - if (baseShells != null) { + if (baseShells != null) { // NOPMD PluginJAR plugin = msg.getPluginJAR(); if (plugin == null) { return; @@ -432,6 +435,7 @@ // {{{ scanDirectory() /** * Given a filename, performs translations so that it's a command name + * @param directory the one to scan */ public static void scanDirectory(String directory) @@ -783,6 +787,7 @@ * current buffer. * note: these might not be needed anymore as of 4.3pre3 * @param buffer The buffer + * @return the package name */ public static String getPackageName(Buffer buffer) { @@ -833,6 +838,7 @@ * * @param buffer * The buffer + * @return the classname */ public static String getClassName(Buffer buffer) { @@ -854,6 +860,7 @@ * * @param buffer * The buffer + * @return the package */ public static String getPackageRoot(Buffer buffer) { @@ -881,6 +888,7 @@ * The view * @param text * The string to expand + * @return the variables */ public static String expandSystemShellVariables(View view, String text) { @@ -892,11 +900,12 @@ * Returns the value of the specified system shell environment variable. * * @param view The view - * @param var The variable name + * @param variable The variable name + * @return the variable value */ - public static String getSystemShellVariableValue(View view, String var) + public static String getSystemShellVariableValue(View view, String variable) { - return getSystemShell().getVariableValue(view, var); + return getSystemShell().getVariableValue(view, variable); } // }}} // {{{ setSystemShellVariableValue() method @@ -903,12 +912,12 @@ /** * Sets the value of the specified system shell environment variable. * - * @param var The variable name + * @param variable The variable name * @param value The value */ - public static void setSystemShellVariableValue(String var, String value) + public static void setSystemShellVariableValue(String variable, String value) { - getSystemShell().getVariables().put(var, value); + getSystemShell().getVariables().put(variable, value); } // }}} // {{{ getUserCommandDirectory() Modified: plugins/Console/trunk/console/ConsoleProcess.java =================================================================== --- plugins/Console/trunk/console/ConsoleProcess.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/ConsoleProcess.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -44,6 +44,7 @@ */ // {{{ ConsoleProcess class +@Deprecated class ConsoleProcess { // {{{ Data members Modified: plugins/Console/trunk/console/DirectoryStack.java =================================================================== --- plugins/Console/trunk/console/DirectoryStack.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/DirectoryStack.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -43,6 +43,7 @@ // {{{ processLine() /** + * @param line a line * @return true if the directory has changed * (i.e. an entering/leaving message has been encountered */ Modified: plugins/Console/trunk/console/ErrorMatcher.java =================================================================== --- plugins/Console/trunk/console/ErrorMatcher.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/ErrorMatcher.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -212,7 +212,9 @@ } // }}} // {{{ set() - /** Copies values from one ErrorMatcher into this */ + /** Copies values from one ErrorMatcher into this + * @param other a new error matcher + */ public void set(ErrorMatcher other) { clear(); @@ -272,6 +274,7 @@ * TODO: also check that any referred to group number * (from the filename/linenumber/error message), as well as * the extralines, actually exists in the regex. + * @return true or false */ public boolean isValid() { Modified: plugins/Console/trunk/console/ErrorThread.java =================================================================== --- plugins/Console/trunk/console/ErrorThread.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/ErrorThread.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -40,6 +40,7 @@ */ //{{{ ErrorThread class +@Deprecated public class ErrorThread extends OutputThread { //{{{ Private members Modified: plugins/Console/trunk/console/InputThread.java =================================================================== --- plugins/Console/trunk/console/InputThread.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/InputThread.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -37,6 +37,7 @@ * @deprecated * Thread for feeding input to a running subprocess. */ +@Deprecated class InputThread extends Thread { InputStream inputPipe; Modified: plugins/Console/trunk/console/OutputThread.java =================================================================== --- plugins/Console/trunk/console/OutputThread.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/OutputThread.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -26,7 +26,7 @@ * @deprecated * Abstract class for StreamThread and ErrorThread. */ - +@Deprecated abstract class OutputThread extends Thread { OutputThread() {} Modified: plugins/Console/trunk/console/ProcessRunner.java =================================================================== --- plugins/Console/trunk/console/ProcessRunner.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/ProcessRunner.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -76,6 +76,7 @@ // {{{ final supportsEnvironmentVariables() /** @deprecated - all processrunners support it with jdk 1.5 */ + @Deprecated final boolean supportsEnvironmentVariables() { return true; Modified: plugins/Console/trunk/console/ProjectTreeListener.java =================================================================== --- plugins/Console/trunk/console/ProjectTreeListener.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/ProjectTreeListener.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -35,6 +35,8 @@ import projectviewer.event.ViewerUpdate; import org.gjt.sp.jedit.bsh.NameSpace; + +import javax.swing.SwingUtilities; // }}} // {{{ ProjectTreeListener class @@ -77,23 +79,13 @@ if (vu.getType() != ViewerUpdate.Type.PROJECT_LOADED) return; final View view = vu.getView(); if ((view == null) || (view != console.getView())) return; - new Thread() + + SwingUtilities.invokeLater(() -> { - public void run() - { - try - { - sleep(500); - } - catch (InterruptedException ie) - { - interrupt(); - } String code = "changeToPvRoot(view);"; NameSpace namespace = BeanShell.getNameSpace(); BeanShell.eval(view, namespace, code); - } - }.start(); + }); } // }}} Modified: plugins/Console/trunk/console/Shell.java =================================================================== --- plugins/Console/trunk/console/Shell.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/Shell.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -85,7 +85,7 @@ //{{{ getShellNames() method /** - * Returns an array of all registered shells. + * @return Returns an array of all registered shells. */ public static String[] getShellNames() { @@ -152,6 +152,7 @@ //{{{ chDir() /** A System Shell can override this method if it can respond to chDir messages + @param console a console @param pathStr vfs path to change directory @return true if the function did something, false if not. */ @@ -164,6 +165,7 @@ * Returns the Shell service singleton with the specified name * @param name The shell name. Common values are: * "System", "BeanShell", "Factor", "Ant", "Python", etc.... + * @return a Shell */ public static Shell getShell(String name) { @@ -171,6 +173,11 @@ if (name == null || name.isEmpty()) return null; return (Shell)ServiceManager.getService(SERVICE, name); + // java.lang.ClassCastException: clojure.shell.ClojureShell cannot be cast to console.Shell + // at console.Shell.getShell(Shell.java:173) + // at console.ConsolePlugin.getAllShells(ConsolePlugin.java:312) + // at console.ConsolePlugin.stop(ConsolePlugin.java:348) + // but ClojureShell extends ProcessShell which extends Shell, so what gives? } //}}} public boolean isUserShell() { @@ -184,6 +191,7 @@ //{{{ openConsole() method /** * Called when a Console dockable first selects this shell. + * @param console a console * @since Console 4.0.2 */ public void openConsole(Console console) @@ -193,6 +201,7 @@ //{{{ closeConsole() method /** * Called when a Console dockable is closed. + * @param console a console * @since Console 4.0.2 */ public void closeConsole(Console console) @@ -242,6 +251,9 @@ /** A convenience function - you do not override this method. ** + * @param console a console + * @param command the command + * @param output the error output */ final public void execute(Console console, String command, Output output) { execute(console, null, output, null, command); @@ -293,6 +305,7 @@ * Returns possible completions for the specified command. * @param console The console instance * @param command The command + * @return some completion info * @since Console 3.6 */ public CompletionInfo getCompletions(Console console, String command) @@ -302,7 +315,7 @@ //{{{ getName() method /** - * Returns the name of the shell. + * @return Returns the name of the shell. */ public String getName() { @@ -312,6 +325,7 @@ //{{{ setName() method /** * Sets the name of the shell. + * @param name a name */ public void setName(String name) { Modified: plugins/Console/trunk/console/SimpleInputStreamTask.java =================================================================== --- plugins/Console/trunk/console/SimpleInputStreamTask.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/SimpleInputStreamTask.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -56,6 +56,8 @@ // {{{ actionInsideWaitingLoop() method /** * Run waiting loop inside. + * @param inr a reader + * @throws Exception an exception */ protected void actionInsideWaitingLoop(BufferedReader inr) throws Exception { @@ -65,6 +67,7 @@ /** * Run BEFORE main working loop starts * (under "try" section) + * @throws Exception an exception */ protected void beforeWorking() throws Exception { @@ -76,6 +79,7 @@ * @param _line string for flushing to working process * * (under "try" section) + * @throws Exception an exception */ protected void flushData(String _line) throws Exception { @@ -100,6 +104,7 @@ * By default dump data about exception to jEdit.Log * BEFORE "exception_dumpToOwner()" method * (under "catch" section) + * @param e an exception */ protected void exception_dumpToLog(Exception e) { @@ -110,6 +115,7 @@ /** * By default do nothing AFTER "exception_dumpToLog" method * (under "catch" section) + * @param e an exception */ protected void exception_dumpToOwner(Exception e) { Modified: plugins/Console/trunk/console/SimpleOutputStreamTask.java =================================================================== --- plugins/Console/trunk/console/SimpleOutputStreamTask.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/SimpleOutputStreamTask.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -103,6 +103,8 @@ // {{{ actionInsideWaitingLoop() method /** * Run waiting loop inside. + * @param isr an input stream reader + * @throws Exception an exception */ protected void actionInsideWaitingLoop(InputStreamReader isr) throws Exception { @@ -115,6 +117,7 @@ * - "finalOutputing()" method * * (under "try" section) + * @throws Exception an exception */ protected void afterWorking() throws Exception { @@ -124,6 +127,7 @@ /** * Run BEFORE main working loop starts * (under "try" section) + * @throws Exception an Exception */ protected void beforeWorking() throws Exception { @@ -150,6 +154,7 @@ * By default dump data about exception to jEdit.Log * BEFORE "exception_dumpToOwner()" method * (under "catch" section) + * @param e an exception */ protected void exception_dumpToLog(Exception e) { @@ -160,6 +165,7 @@ /** * By default do nothing AFTER "exception_dumpToLog" method * (under "catch" section) + * @param e an exception */ protected void exception_dumpToOwner(Exception e) { @@ -238,6 +244,7 @@ * - Clean internal buffer "lineBuffer" * * (under "try" section) + * @throws Exception an exception */ protected void outputData() throws Exception { @@ -249,6 +256,7 @@ /** * Setup waiting loop. * Output handler reads data from external stream inside this loop. + * @param wl the loop */ public void setWaitingLoop(WLTypes wl) { Modified: plugins/Console/trunk/console/StreamTask.java =================================================================== --- plugins/Console/trunk/console/StreamTask.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/StreamTask.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -28,11 +28,11 @@ StreamTask | | - | +-- SimpleInputStreamTask --> InputStreamTask + | +-- SimpleInputStreamTask --> InputStreamTask | - SimpleOutputStreamTask --> ErrorStreamTask + SimpleOutputStreamTask --> ErrorStreamTask | - ParsingOutputStreamTask --> OutputStreamTask</p> + ParsingOutputStreamTask --> OutputStreamTask</p> */ public abstract class StreamTask extends Thread { Modified: plugins/Console/trunk/console/StreamThread.java =================================================================== --- plugins/Console/trunk/console/StreamThread.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/StreamThread.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -52,6 +52,7 @@ */ // {{{ class StreamThread +@Deprecated class StreamThread extends OutputThread { // {{{ Private members Modified: plugins/Console/trunk/console/SystemShellBuiltIn.java =================================================================== --- plugins/Console/trunk/console/SystemShellBuiltIn.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/SystemShellBuiltIn.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -92,6 +92,10 @@ //{{{ execute() method /** * Used by executeBuiltIn + * @param console A console + * @param output Some output + * @param error Where to send the error output + * @param args a list of arguments */ public void execute(Console console, Output output, Output error, Vector<String> args) @@ -541,6 +545,7 @@ /** * @deprecated */ + @Deprecated public void execute(Console console, Output output, Output error, Vector<String> args, Hashtable<String, Object> values) { Modified: plugins/Console/trunk/console/commando/CommandoToolBar.java =================================================================== --- plugins/Console/trunk/console/commando/CommandoToolBar.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/commando/CommandoToolBar.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -90,7 +90,9 @@ } // }}} - /** Remove the instance from the all views */ + /** Remove the instance from the all views + * @param v a view + */ public static void remove(View v) { CommandoToolBar tb = smToolBarMap.get(v); Modified: plugins/Console/trunk/console/gui/NewShellDialog.java =================================================================== --- plugins/Console/trunk/console/gui/NewShellDialog.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/gui/NewShellDialog.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -14,6 +14,7 @@ import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.gui.*; import org.gjt.sp.util.StringList; +import org.gjt.sp.util.GenericGUIUtilities; import console.ConsolePlugin; import console.Shell; @@ -118,7 +119,7 @@ } } ); - GUIUtilities.makeSameSize( okButton, cancelButton ); + GenericGUIUtilities.makeSameSize( okButton, cancelButton ); JPanel panel = new JPanel( new BorderLayout() ); panel.setBorder( BorderFactory.createEmptyBorder( 11, 11, 12, 12 ) ); AbstractOptionPane dialogPanel = new AbstractOptionPane( jEdit.getProperty( "console.newshell.createNewShell", "Create New Shell" ) ); Modified: plugins/Console/trunk/console/gui/PanelStack.java =================================================================== --- plugins/Console/trunk/console/gui/PanelStack.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/console/gui/PanelStack.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -28,7 +28,9 @@ /** * @deprecated - use @ref add(String, JPanel) + * @param o an object */ + @Deprecated public void add(Object o) { throw new RuntimeException ("Don't call this."); } Modified: plugins/Console/trunk/jcfunc/Sequences.java =================================================================== --- plugins/Console/trunk/jcfunc/Sequences.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/jcfunc/Sequences.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -667,7 +667,9 @@ } //}}} //{{{ generateFullWorkingSet() method - /** Returns map of Records. Map contains information about ALL control functions. */ + /** Returns map of Records. Map contains information about ALL control functions. + * @return an enum map + */ public static EnumMap<CF, Record> generateFullWorkingSet() { return generateWorkingSet(CF.values()); @@ -678,6 +680,7 @@ Returns map of Records. Map contains information about SELECTED control functions only. If array of control functions is empty - returned Map is empty too. @param args array of control functions + @return something */ public static EnumMap<CF, Record> generateWorkingSet(CF... args) { @@ -694,6 +697,7 @@ Returns control function's RegExp-pattern. @param cmd control function @param mode mode of control function's repersentation, MODE_7BIT and MODE_8BIT + @return the pattern */ public static String getCFPattern(CF cmd, int mode) { @@ -711,6 +715,7 @@ Returns common control function's RegExp-pattern, which matches any sequence. @param mode mode of control function's repersentation, MODE_7BIT or MODE_8BIT @param exceptLF_CR enables skipping following symbols: Line Feed and Carriage Return + @return the pattern */ public static String getCommonCFPattern(int mode, boolean exceptLF_CR) { @@ -727,6 +732,7 @@ @param exclC0Set array of excluded C0-functions @param exclC1Set array of excluded C1-functions @param exclSymSet array of excluded symbols (from CSI-functions) + @return the pattern */ public static String getCommonCFPattern(int mode, C0[] exclC0Set, C1[] exclC1Set, Sym[] exclSymSet) { Modified: plugins/Console/trunk/jcfunc/parameters/paramRM.java =================================================================== --- plugins/Console/trunk/jcfunc/parameters/paramRM.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/jcfunc/parameters/paramRM.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -58,6 +58,7 @@ HEM(10), /** @deprecated POSITIONING UNIT MODE */ + @Deprecated PUM(11), /** SEND/RECEIVE MODE */ @@ -91,6 +92,7 @@ GRCM(21), /** @deprecated ZERO DEFAULT MODE */ + @Deprecated ZDM(22), /** Don't define in Standart */ Modified: plugins/Console/trunk/jcfunc/parameters/paramSM.java =================================================================== --- plugins/Console/trunk/jcfunc/parameters/paramSM.java 2021-06-27 18:56:11 UTC (rev 25518) +++ plugins/Console/trunk/jcfunc/parameters/paramSM.java 2021-06-28 02:31:36 UTC (rev 25519) @@ -58,6 +58,7 @@ HEM(10), /** @deprecated POSITIONING UNIT MODE */ + @Deprecated PUM(11), /** SEND/RECEIVE MODE */ @@ -91,6 +92,7 @@ GRCM(21), /** @deprecated ZERO DEFAULT MODE */ + @Deprecated ZDM(22), /** Don't define in Standart */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |