Browse Source

improve runner

ruki 8 years ago
parent
commit
4e2f9a640e

+ 220 - 228
.idea/workspace.xml

@@ -26,117 +26,105 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="plugin.xml" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/resources/META-INF/plugin.xml">
+      <file leaf-file-name="RebuildAction.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/RebuildAction.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="342">
-              <caret line="41" column="0" lean-forward="true" selection-start-line="41" selection-start-column="0" selection-end-line="41" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="XMakeToolWindowFactory.kt" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="315">
-              <caret line="21" column="0" lean-forward="true" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
+            <state relative-caret-position="165">
+              <caret line="11" column="43" lean-forward="true" selection-start-line="11" selection-start-column="43" selection-end-line="11" selection-end-column="43" />
               <folding>
-                <element signature="e#33#213#0" expanded="true" />
+                <element signature="e#33#227#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="XMakeToolWindowOutputPanel.kt" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowOutputPanel.kt">
+      <file leaf-file-name="XMakeRunConfiguration.kt" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="365">
-              <caret line="39" column="41" lean-forward="false" selection-start-line="39" selection-start-column="41" selection-end-line="39" selection-end-column="41" />
+            <state relative-caret-position="466">
+              <caret line="58" column="40" lean-forward="false" selection-start-line="58" selection-start-column="40" selection-end-line="58" selection-end-column="40" />
               <folding>
-                <element signature="e#33#666#0" expanded="true" />
+                <element signature="e#29#504#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="XMakeToolWindowProblemPanel.kt" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
+      <file leaf-file-name="BuildAction.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="329">
-              <caret line="32" column="40" lean-forward="false" selection-start-line="32" selection-start-column="40" selection-end-line="32" selection-end-column="40" />
+            <state relative-caret-position="165">
+              <caret line="11" column="32" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
               <folding>
-                <element signature="e#33#501#0" expanded="true" />
+                <element signature="e#33#227#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="TerminalExecutionConsole.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/TerminalExecutionConsole.java">
+      <file leaf-file-name="SystemUtils.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="288">
-              <caret line="124" column="9" lean-forward="false" selection-start-line="124" selection-start-column="9" selection-end-line="124" selection-end-column="9" />
+            <state relative-caret-position="464">
+              <caret line="124" column="8" lean-forward="true" selection-start-line="124" selection-start-column="8" selection-end-line="125" selection-end-column="48" />
               <folding>
-                <element signature="imports" expanded="true" />
-                <marker date="1509617876000" expanded="false" signature="3753:3764" ph=" { " />
-                <marker date="1509617876000" expanded="false" signature="3780:3788" ph=" }" />
+                <element signature="e#31#530#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="ContentFactory.class" pinned="false" current-in-tab="false">
-        <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/ui/content/ContentFactory.class">
+      <file leaf-file-name="ConsoleProcessHandler.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="120">
-              <caret line="14" column="12" lean-forward="false" selection-start-line="14" selection-start-column="12" selection-end-line="14" selection-end-column="12" />
-              <folding />
+            <state relative-caret-position="45">
+              <caret line="11" column="130" lean-forward="false" selection-start-line="11" selection-start-column="101" selection-end-line="11" selection-end-column="130" />
+              <folding>
+                <element signature="e#31#379#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="CleanAction.kt" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanAction.kt">
+      <file leaf-file-name="XMakeToolWindowOutputPanel.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowOutputPanel.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="105">
-              <caret line="7" column="6" lean-forward="false" selection-start-line="7" selection-start-column="6" selection-end-line="7" selection-end-column="6" />
+            <state relative-caret-position="416">
+              <caret line="37" column="23" lean-forward="true" selection-start-line="37" selection-start-column="23" selection-end-line="37" selection-end-column="23" />
               <folding>
-                <element signature="e#33#227#0" expanded="true" />
+                <element signature="e#33#684#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="SimpleToolWindowPanel.class" pinned="false" current-in-tab="false">
-        <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/ui/SimpleToolWindowPanel.class">
+      <file leaf-file-name="XMakeRunState.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="174">
-              <caret line="39" column="11" lean-forward="false" selection-start-line="39" selection-start-column="11" selection-end-line="39" selection-end-column="11" />
+            <state relative-caret-position="90">
+              <caret line="6" column="44" lean-forward="false" selection-start-line="6" selection-start-column="44" selection-end-line="6" selection-end-column="44" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="ExternalToolRunner.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ExternalToolRunner.java">
+      <file leaf-file-name="XMakeRunner.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunner.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="313">
-              <caret line="101" column="64" lean-forward="true" selection-start-line="101" selection-start-column="64" selection-end-line="101" selection-end-column="64" />
-              <folding>
-                <element signature="imports" expanded="true" />
-              </folding>
+            <state relative-caret-position="120">
+              <caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="BuildAction.kt" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt">
+      <file leaf-file-name="XMakeProjectTasksRunner.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="120">
-              <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
+            <state relative-caret-position="336">
+              <caret line="29" column="0" lean-forward="true" selection-start-line="29" selection-start-column="0" selection-end-line="29" selection-end-column="0" />
               <folding>
-                <element signature="e#33#227#0" expanded="true" />
+                <element signature="e#29#379#0" expanded="true" />
               </folding>
             </state>
           </provider>
@@ -156,9 +144,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>MyEditor</find>
-      <find>selected</find>
-      <find>myModel</find>
       <find>set</find>
       <find>withpara</find>
       <find>forceColors</find>
@@ -186,11 +171,16 @@
       <find>append</find>
       <find>showConsole</find>
       <find>html</find>
+      <find>show</find>
+      <find>myConsoleView</find>
+      <find>myOutputStreamWriter</find>
     </findStrings>
     <replaceStrings>
       <replace>XMakeProjectConfiguration</replace>
       <replace>projectConfiguration</replace>
       <replace>xmakeConfiguration</replace>
+      <replace>consoleView</replace>
+      <replace>outputStreamWriter</replace>
     </replaceStrings>
   </component>
   <component name="GradleLocalSettings">
@@ -226,32 +216,32 @@
         <option value="$PROJECT_DIR$/resources/META-INF/clion-only.xml" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/icons/XMakeIconProvider.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunner.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfigurationType.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeConfiguration.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeProjectConfiguration.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeProjectSettingsService.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeProjectSettingsServiceImpl.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanAction.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanConfigurationAction.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/QuickStartAction.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/RebuildAction.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfigurationEditor.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeProjectConfigurable.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/shared/XMakeConfiguration.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/ExternalToolRunner.java" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/TerminalExecutionConsole.java" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindow.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowPanel.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt" />
-        <option value="$PROJECT_DIR$/resources/META-INF/plugin.xml" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt" />
+        <option value="$PROJECT_DIR$/resources/META-INF/plugin.xml" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanAction.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanConfigurationAction.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/QuickStartAction.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/RebuildAction.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowOutputPanel.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt" />
       </list>
     </option>
   </component>
@@ -555,28 +545,6 @@
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/ui/StringsComboBox.kt" />
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/task/ProjectTask.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="90">
-          <caret line="9" column="23" lean-forward="false" selection-start-line="9" selection-start-column="23" selection-end-line="9" selection-end-column="23" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/idea.jar!/com/intellij/execution/process/KillableColoredProcessHandler.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="14" column="11" lean-forward="false" selection-start-line="14" selection-start-column="11" selection-end-line="14" selection-end-column="11" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/.gitignore">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/resources/META-INF/idea-only.xml">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="0">
@@ -614,16 +582,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunner.kt">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="165">
-          <caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
-          <folding>
-            <element signature="e#30#249#0" expanded="false" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/actionSystem/AnActionEvent.class">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="149">
@@ -693,26 +651,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/QuickStartAction.kt">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="5" column="48" lean-forward="false" selection-start-line="5" selection-start-column="48" selection-end-line="5" selection-end-column="48" />
-          <folding>
-            <element signature="e#33#227#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/RebuildAction.kt">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="5" column="48" lean-forward="false" selection-start-line="5" selection-start-column="48" selection-end-line="5" selection-end-column="48" />
-          <folding>
-            <element signature="e#33#227#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/idea.jar!/com/intellij/execution/configuration/EnvironmentVariablesData.class">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="90">
@@ -745,234 +683,288 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/idea.jar!/com/intellij/execution/ProgramRunnerUtil.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="308">
-          <caret line="40" column="25" lean-forward="true" selection-start-line="40" selection-start-column="25" selection-end-line="40" selection-end-column="25" />
-          <folding>
-            <element signature="e#29#456#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="1069">
+          <caret line="123" column="23" lean-forward="false" selection-start-line="123" selection-start-column="23" selection-end-line="123" selection-end-column="23" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfigurationEditor.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SimpleConsoleProcessHandler.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="198">
-          <caret line="26" column="6" lean-forward="false" selection-start-line="26" selection-start-column="6" selection-end-line="26" selection-end-column="6" />
-          <folding>
-            <element signature="e#29#990#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="495">
+          <caret line="58" column="5" lean-forward="true" selection-start-line="58" selection-start-column="5" selection-end-line="58" selection-end-column="5" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanConfigurationAction.kt">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/editor/markup/TextAttributes.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="7" column="6" lean-forward="false" selection-start-line="7" selection-start-column="6" selection-end-line="7" selection-end-column="6" />
-          <folding>
-            <element signature="e#33#227#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="-1375">
+          <caret line="15" column="13" lean-forward="false" selection-start-line="15" selection-start-column="13" selection-end-line="15" selection-end-column="13" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/idea.jar!/com/intellij/execution/ProgramRunnerUtil.class">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/ui/ConsoleViewContentType.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1069">
-          <caret line="123" column="23" lean-forward="false" selection-start-line="123" selection-start-column="23" selection-end-line="123" selection-end-column="23" />
+        <state relative-caret-position="210">
+          <caret line="27" column="24" lean-forward="true" selection-start-line="27" selection-start-column="24" selection-end-line="27" selection-end-column="38" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/ui/SimpleToolWindowPanel.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="435">
-          <caret line="35" column="5" lean-forward="false" selection-start-line="35" selection-start-column="5" selection-end-line="35" selection-end-column="5" />
+        <state relative-caret-position="174">
+          <caret line="39" column="11" lean-forward="false" selection-start-line="39" selection-start-column="11" selection-end-line="39" selection-end-column="11" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SimpleConsoleProcessHandler.java">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/ui/content/ContentFactory.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="495">
-          <caret line="58" column="5" lean-forward="true" selection-start-line="58" selection-start-column="5" selection-end-line="58" selection-end-column="5" />
+        <state relative-caret-position="120">
+          <caret line="14" column="12" lean-forward="false" selection-start-line="14" selection-start-column="12" selection-end-line="14" selection-end-column="12" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/shared/XMakeConfiguration.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowPanel.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="312">
+          <caret line="29" column="142" lean-forward="false" selection-start-line="29" selection-start-column="142" selection-end-line="29" selection-end-column="142" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindow.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="93">
-          <caret line="91" column="37" lean-forward="true" selection-start-line="91" selection-start-column="37" selection-end-line="91" selection-end-column="37" />
+        <state relative-caret-position="390">
+          <caret line="26" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="329">
+          <caret line="32" column="40" lean-forward="false" selection-start-line="32" selection-start-column="40" selection-end-line="32" selection-end-column="40" />
           <folding>
-            <element signature="e#32#460#0" expanded="true" />
+            <element signature="e#33#501#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/editor/markup/TextAttributes.class">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeProjectConfigurable.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-1375">
-          <caret line="15" column="13" lean-forward="false" selection-start-line="15" selection-start-column="13" selection-end-line="15" selection-end-column="13" />
+        <state relative-caret-position="-3564">
+          <caret line="43" column="30" lean-forward="true" selection-start-line="43" selection-start-column="30" selection-end-line="43" selection-end-column="30" />
+          <folding>
+            <element signature="e#33#1481#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/resources/META-INF/plugin.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="237">
+          <caret line="34" column="25" lean-forward="false" selection-start-line="34" selection-start-column="20" selection-end-line="34" selection-end-column="25" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/ui/ConsoleViewContentType.class">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/ui/content/ContentManager.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="210">
-          <caret line="27" column="24" lean-forward="true" selection-start-line="27" selection-start-column="24" selection-end-line="27" selection-end-column="38" />
+        <state relative-caret-position="150">
+          <caret line="35" column="9" lean-forward="false" selection-start-line="35" selection-start-column="9" selection-end-line="35" selection-end-column="9" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfigurationEditor.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-775">
-          <caret line="17" column="7" lean-forward="false" selection-start-line="17" selection-start-column="7" selection-end-line="17" selection-end-column="7" />
+        <state relative-caret-position="388">
+          <caret line="73" column="103" lean-forward="false" selection-start-line="73" selection-start-column="93" selection-end-line="73" selection-end-column="103" />
           <folding>
-            <element signature="e#31#635#0" expanded="true" />
+            <element signature="e#29#990#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/wm/ToolWindowManager.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="180">
-          <caret line="12" column="6" lean-forward="false" selection-start-line="12" selection-start-column="6" selection-end-line="12" selection-end-column="6" />
-          <folding>
-            <element signature="e#31#380#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="307">
+          <caret line="76" column="31" lean-forward="false" selection-start-line="76" selection-start-column="31" selection-end-line="76" selection-end-column="31" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeProjectConfigurable.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/shared/XMakeConfiguration.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="645">
-          <caret line="43" column="30" lean-forward="true" selection-start-line="43" selection-start-column="30" selection-end-line="43" selection-end-column="30" />
+        <state relative-caret-position="494">
+          <caret line="224" column="31" lean-forward="true" selection-start-line="224" selection-start-column="0" selection-end-line="225" selection-end-column="0" />
           <folding>
-            <element signature="e#33#1481#0" expanded="true" />
+            <element signature="e#32#460#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="545">
-          <caret line="47" column="5" lean-forward="true" selection-start-line="42" selection-start-column="0" selection-end-line="47" selection-end-column="5" />
+        <state relative-caret-position="137">
+          <caret line="28" column="31" lean-forward="false" selection-start-line="28" selection-start-column="31" selection-end-line="28" selection-end-column="31" />
           <folding>
-            <element signature="e#29#379#0" expanded="true" />
+            <element signature="e#33#307#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/ui/SimpleToolWindowPanel.class">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/wm/ToolWindow.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="174">
-          <caret line="39" column="11" lean-forward="false" selection-start-line="39" selection-start-column="11" selection-end-line="39" selection-end-column="11" />
+        <state relative-caret-position="150">
+          <caret line="13" column="24" lean-forward="true" selection-start-line="13" selection-start-column="24" selection-end-line="13" selection-end-column="24" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/ui/content/ContentFactory.class">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanAction.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="14" column="12" lean-forward="false" selection-start-line="14" selection-start-column="12" selection-end-line="14" selection-end-column="12" />
-          <folding />
+        <state relative-caret-position="165">
+          <caret line="11" column="43" lean-forward="true" selection-start-line="11" selection-start-column="43" selection-end-line="11" selection-end-column="43" />
+          <folding>
+            <element signature="e#33#227#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowPanel.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanConfigurationAction.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="312">
-          <caret line="29" column="142" lean-forward="false" selection-start-line="29" selection-start-column="142" selection-end-line="29" selection-end-column="142" />
-          <folding />
+        <state relative-caret-position="165">
+          <caret line="11" column="43" lean-forward="true" selection-start-line="11" selection-start-column="43" selection-end-line="11" selection-end-column="43" />
+          <folding>
+            <element signature="e#33#227#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindow.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/QuickStartAction.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="390">
-          <caret line="26" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
-          <folding />
+        <state relative-caret-position="165">
+          <caret line="11" column="43" lean-forward="true" selection-start-line="11" selection-start-column="43" selection-end-line="11" selection-end-column="43" />
+          <folding>
+            <element signature="e#33#227#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/resources/META-INF/plugin.xml">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/RebuildAction.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="342">
-          <caret line="41" column="0" lean-forward="true" selection-start-line="41" selection-start-column="0" selection-end-line="41" selection-end-column="0" />
-          <folding />
+        <state relative-caret-position="165">
+          <caret line="11" column="43" lean-forward="true" selection-start-line="11" selection-start-column="43" selection-end-line="11" selection-end-column="43" />
+          <folding>
+            <element signature="e#33#227#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowProblemPanel.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="329">
-          <caret line="32" column="40" lean-forward="false" selection-start-line="32" selection-start-column="40" selection-end-line="32" selection-end-column="40" />
+        <state relative-caret-position="336">
+          <caret line="29" column="0" lean-forward="true" selection-start-line="29" selection-start-column="0" selection-end-line="29" selection-end-column="0" />
           <folding>
-            <element signature="e#33#501#0" expanded="true" />
+            <element signature="e#29#379#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ExternalToolRunner.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-15">
+          <caret line="101" column="64" lean-forward="true" selection-start-line="101" selection-start-column="64" selection-end-line="101" selection-end-column="64" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/TerminalExecutionConsole.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="288">
+        <state relative-caret-position="1147">
           <caret line="124" column="9" lean-forward="false" selection-start-line="124" selection-start-column="9" selection-end-line="124" selection-end-column="9" />
-          <folding>
-            <element signature="imports" expanded="true" />
-            <marker date="1509617876000" expanded="false" signature="3753:3764" ph=" { " />
-            <marker date="1509617876000" expanded="false" signature="3780:3788" ph=" }" />
-          </folding>
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowFactory.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowOutputPanel.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="315">
-          <caret line="21" column="0" lean-forward="true" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
+        <state relative-caret-position="416">
+          <caret line="37" column="23" lean-forward="true" selection-start-line="37" selection-start-column="23" selection-end-line="37" selection-end-column="23" />
           <folding>
-            <element signature="e#33#213#0" expanded="true" />
+            <element signature="e#33#684#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ExternalToolRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunner.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="313">
-          <caret line="101" column="64" lean-forward="true" selection-start-line="101" selection-start-column="64" selection-end-line="101" selection-end-column="64" />
+        <state relative-caret-position="120">
+          <caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/configurations/RunProfileState.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="90">
+          <caret line="14" column="17" lean-forward="false" selection-start-line="14" selection-start-column="17" selection-end-line="14" selection-end-column="17" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="165">
+          <caret line="11" column="32" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
           <folding>
-            <element signature="imports" expanded="true" />
+            <element signature="e#33#227#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/CleanAction.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="7" column="6" lean-forward="false" selection-start-line="7" selection-start-column="6" selection-end-line="7" selection-end-column="6" />
+        <state relative-caret-position="464">
+          <caret line="124" column="8" lean-forward="true" selection-start-line="124" selection-start-column="8" selection-end-line="125" selection-end-column="48" />
           <folding>
-            <element signature="e#33#227#0" expanded="true" />
+            <element signature="e#31#530#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/actions/BuildAction.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/ConsoleProcessHandler.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
+        <state relative-caret-position="45">
+          <caret line="11" column="130" lean-forward="false" selection-start-line="11" selection-start-column="101" selection-end-line="11" selection-end-column="130" />
           <folding>
-            <element signature="e#33#227#0" expanded="true" />
+            <element signature="e#31#379#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/project/XMakeToolWindowOutputPanel.kt">
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="90">
+          <caret line="6" column="44" lean-forward="false" selection-start-line="6" selection-start-column="44" selection-end-line="6" selection-end-column="44" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="365">
-          <caret line="39" column="41" lean-forward="false" selection-start-line="39" selection-start-column="41" selection-end-line="39" selection-end-column="41" />
+        <state relative-caret-position="466">
+          <caret line="58" column="40" lean-forward="false" selection-start-line="58" selection-start-column="40" selection-end-line="58" selection-end-column="40" />
           <folding>
-            <element signature="e#33#666#0" expanded="true" />
+            <element signature="e#29#504#0" expanded="true" />
           </folding>
         </state>
       </provider>

+ 1 - 1
resources/META-INF/plugin.xml

@@ -32,7 +32,7 @@
 
     <!-- project configurations -->
     <projectConfigurable instance="org.tboox.xmake.project.XMakeProjectConfigurable" displayName="XMake" groupId="language"/>
-    <toolWindow id="XMake"  anchor="right" factoryClass="org.tboox.xmake.project.XMakeToolWindowFactory" icon="/icons/xmake.png"/>
+    <toolWindow id="XMake"  anchor="right" factoryClass="org.tboox.xmake.project.XMakeToolWindowFactory" icon="/icons/xmake_13x13.png"/>
 
     <!-- run configurations -->
     <programRunner implementation="org.tboox.xmake.run.XMakeRunner"/>

BIN
resources/icons/xmake_13x13.png


+ 1 - 1
src/org/tboox/xmake/actions/BuildAction.kt

@@ -9,6 +9,6 @@ class BuildAction : AnAction() {
 
     override fun actionPerformed(e: AnActionEvent) {
         val project = e.project ?: return
-        SystemUtils.runvInConsole(project, "Build Project", project.xmakeConfiguration.buildCommandLine)
+        SystemUtils.runvInConsole(project, project.xmakeConfiguration.buildCommandLine)
     }
 }

+ 1 - 1
src/org/tboox/xmake/actions/CleanAction.kt

@@ -9,6 +9,6 @@ class CleanAction : AnAction() {
 
     override fun actionPerformed(e: AnActionEvent) {
         val project = e.project ?: return
-        SystemUtils.runvInConsole(project, "Clean Targets", project.xmakeConfiguration.cleanCommandLine)
+        SystemUtils.runvInConsole(project, project.xmakeConfiguration.cleanCommandLine)
     }
 }

+ 1 - 1
src/org/tboox/xmake/actions/CleanConfigurationAction.kt

@@ -9,6 +9,6 @@ class CleanConfigurationAction : AnAction() {
 
     override fun actionPerformed(e: AnActionEvent) {
         val project = e.project ?: return
-        SystemUtils.runvInConsole(project, "Clean Configuration", project.xmakeConfiguration.cleanConfigurationCommandLine)
+        SystemUtils.runvInConsole(project, project.xmakeConfiguration.cleanConfigurationCommandLine)
     }
 }

+ 1 - 1
src/org/tboox/xmake/actions/QuickStartAction.kt

@@ -9,6 +9,6 @@ class QuickStartAction : AnAction() {
 
     override fun actionPerformed(e: AnActionEvent) {
         val project = e.project ?: return
-        SystemUtils.runvInConsole(project, "Quick Start", project.xmakeConfiguration.quickStartCommandLine)
+        SystemUtils.runvInConsole(project, project.xmakeConfiguration.quickStartCommandLine)
     }
 }

+ 1 - 1
src/org/tboox/xmake/actions/RebuildAction.kt

@@ -9,6 +9,6 @@ class RebuildAction : AnAction() {
 
     override fun actionPerformed(e: AnActionEvent) {
         val project = e.project ?: return
-        SystemUtils.runvInConsole(project, "Rebuild Project", project.xmakeConfiguration.rebuildCommandLine)
+        SystemUtils.runvInConsole(project, project.xmakeConfiguration.rebuildCommandLine)
     }
 }

+ 21 - 0
src/org/tboox/xmake/project/XMakeToolWindowFactory.kt

@@ -1,8 +1,10 @@
 package org.tboox.xmake.project
 
+import com.intellij.execution.ui.ConsoleView
 import com.intellij.openapi.project.Project
 import com.intellij.openapi.wm.ToolWindow
 import com.intellij.openapi.wm.ToolWindowFactory
+import com.intellij.openapi.wm.ToolWindowManager
 import com.intellij.ui.content.ContentFactory
 
 class XMakeToolWindowFactory : ToolWindowFactory {
@@ -17,5 +19,24 @@ class XMakeToolWindowFactory : ToolWindowFactory {
         val toolwindowProblemPanel = XMakeToolWindowProblemPanel(project)
         val problemTab = ContentFactory.SERVICE.getInstance().createContent(toolwindowProblemPanel, "Problem", false)
         toolWindow.contentManager.addContent(problemTab)
+
+        // show the output panel by default
+        toolWindow.contentManager.setSelectedContent(outputTab)
     }
 }
+
+// the xmake tool windows
+val Project.xmakeToolWindow: ToolWindow
+    get() = ToolWindowManager.getInstance(this).getToolWindow("XMake")
+
+// the xmake output panel
+val Project.xmakeOutputPanel: XMakeToolWindowOutputPanel
+    get() = this.xmakeToolWindow.contentManager.getContent(0)?.component as XMakeToolWindowOutputPanel
+
+// the xmake problem panel
+val Project.xmakeProblemPanel: XMakeToolWindowProblemPanel
+    get() = this.xmakeToolWindow.contentManager.getContent(1)?.component as XMakeToolWindowProblemPanel
+
+// the xmake console view
+val Project.xmakeConsoleView: ConsoleView
+    get() = this.xmakeOutputPanel.consoleView

+ 10 - 1
src/org/tboox/xmake/project/XMakeToolWindowOutputPanel.kt

@@ -7,9 +7,9 @@ import com.intellij.openapi.actionSystem.ActionManager
 import com.intellij.openapi.actionSystem.ActionToolbar
 import com.intellij.openapi.actionSystem.DefaultActionGroup
 import com.intellij.openapi.diagnostic.Logger
+import com.intellij.openapi.project.CacheUpdateRunner
 import com.intellij.openapi.project.Project
 import com.intellij.openapi.ui.SimpleToolWindowPanel
-import com.intellij.ui.layout.panel
 import javax.swing.JEditorPane
 import javax.swing.JList
 import javax.swing.JPanel
@@ -17,6 +17,9 @@ import javax.swing.ListSelectionModel
 
 class XMakeToolWindowOutputPanel(project: Project) : SimpleToolWindowPanel(false) {
 
+    // the project
+    val project = project
+
     // the toolbar
     val toolbar: ActionToolbar = run {
         val actionManager = ActionManager.getInstance()
@@ -40,6 +43,12 @@ class XMakeToolWindowOutputPanel(project: Project) : SimpleToolWindowPanel(false
         setContent(consoleView.component)
     }
 
+    // show panel
+    fun showPanel() {
+        val contentManager = project.xmakeToolWindow.contentManager
+        contentManager.setSelectedContent(contentManager.getContent(0)!!)
+    }
+
     override fun getData(dataId: String): Any? {
         return super.getData(dataId)
     }

+ 1 - 1
src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt

@@ -12,7 +12,7 @@ import org.tboox.xmake.shared.xmakeConfiguration
 class XMakeProjectTasksRunner : ProjectTaskRunner() {
 
     override fun run(project: Project, context: ProjectTaskContext, callback: ProjectTaskNotification?, tasks: MutableCollection<out ProjectTask>) {
-        SystemUtils.runvInConsole(project, "Build Project", project.xmakeConfiguration.buildCommandLine)
+        SystemUtils.runvInConsole(project, project.xmakeConfiguration.buildCommandLine)
     }
 
     override fun canRun(projectTask: ProjectTask): Boolean {

+ 2 - 6
src/org/tboox/xmake/run/XMakeRunConfiguration.kt

@@ -8,14 +8,12 @@ import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.options.SettingsEditor
 import com.intellij.openapi.project.Project
 import org.jdom.Element
+import org.tboox.xmake.project.xmakeConsoleView
 import org.tboox.xmake.shared.xmakeConfiguration
 
 class XMakeRunConfiguration(project: Project, name: String, factory: ConfigurationFactory
 ) : LocatableConfigurationBase(project, factory, name), RunConfigurationWithSuppressedDefaultDebugAction {
 
-    // the current command line
-    var currentCommandLine: GeneralCommandLine ?= null
-
     // the run target
     var runTarget: String = "default"
 
@@ -58,12 +56,10 @@ class XMakeRunConfiguration(project: Project, name: String, factory: Configurati
     override fun getConfigurationEditor(): SettingsEditor<out RunConfiguration> = XMakeRunConfigurationEditor(project)
 
     override fun getState(executor: Executor, environment: ExecutionEnvironment): RunProfileState? {
-        return XMakeRunState(environment, currentCommandLine ?: runCommandLine)
+        return XMakeRunState(environment, project.xmakeConsoleView, runCommandLine)
     }
 
     companion object {
-
-        // get log
         private val Log = Logger.getInstance(XMakeRunConfiguration::class.java.getName())
     }
 }

+ 7 - 18
src/org/tboox/xmake/run/XMakeRunState.kt

@@ -2,36 +2,25 @@ package org.tboox.xmake.run
 
 import com.intellij.execution.configurations.CommandLineState
 import com.intellij.execution.configurations.GeneralCommandLine
-import com.intellij.execution.process.KillableColoredProcessHandler
 import com.intellij.execution.process.ProcessHandler
-import com.intellij.execution.process.ProcessTerminatedListener
 import com.intellij.execution.runners.ExecutionEnvironment
-import com.intellij.openapi.diagnostic.Logger
+import com.intellij.execution.ui.ConsoleView
+import org.tboox.xmake.utils.ConsoleProcessHandler
 
 class XMakeRunState(
         environment: ExecutionEnvironment,
+        consoleView: ConsoleView,
         commandLine: GeneralCommandLine
 ) : CommandLineState(environment) {
 
+    // the console view
+    val consoleView = consoleView
+
     // the command line
     val commandLine = commandLine
 
     // start process
     override fun startProcess(): ProcessHandler {
-
-        // make handler
-        val handler = KillableColoredProcessHandler(commandLine)
-
-        // shows exit code upon termination
-        ProcessTerminatedListener.attach(handler)
-
-        // start this command
-        return handler
-    }
-
-    companion object {
-
-        // get log
-        private val Log = Logger.getInstance(XMakeRunState::class.java.getName())
+        return ConsoleProcessHandler(consoleView, commandLine)
     }
 }

+ 18 - 16
src/org/tboox/xmake/utils/ConsoleProcessHandler.kt

@@ -6,37 +6,37 @@ import com.intellij.execution.ui.ConsoleViewContentType
 import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.util.Key
 import com.intellij.execution.configurations.GeneralCommandLine
-
 import java.io.IOException
 import java.io.OutputStreamWriter
 
-class ConsoleProcessHandler(private val myConsoleView: ConsoleView, commandLine: GeneralCommandLine) : OSProcessHandler(commandLine) {
-
-
+class ConsoleProcessHandler(private val consoleView: ConsoleView, commandLine: GeneralCommandLine) : KillableColoredProcessHandler(commandLine) {
+    
     init {
 
+        // add process listener
         this.addProcessListener(object : ProcessAdapter() {
             override fun onTextAvailable(event: ProcessEvent?, k: Key<*>?) {
                 append(event!!.text, k)
             }
         })
+        
+        // shows exit code upon termination
         ProcessTerminatedListener.attach(this)
     }
 
+    // append info to the console view
     private fun append(s: String, k: Key<*>?) {
-        /*
+
         if (ProcessOutputTypes.STDERR == k) {
-            this.myConsoleView.print(s, ConsoleViewContentType.ERROR_OUTPUT)
+            this.consoleView.print(s, ConsoleViewContentType.ERROR_OUTPUT)
         } else if (ProcessOutputTypes.SYSTEM == k) {
-            this.myConsoleView.print(s, ConsoleViewContentType.SYSTEM_OUTPUT)
+            this.consoleView.print(s, ConsoleViewContentType.SYSTEM_OUTPUT)
         } else if (ProcessOutputTypes.STDOUT == k) {
-            this.myConsoleView.print(s, ConsoleViewContentType.NORMAL_OUTPUT)
-        }*/
-
-        this.myConsoleView.print(s, ConsoleViewContentType.NORMAL_OUTPUT)
-
+            this.consoleView.print(s, ConsoleViewContentType.NORMAL_OUTPUT)
+        }
     }
 
+    // append input info to the console view
     fun input(s: String) {
         try {
             processInputWriter.append(s)
@@ -45,6 +45,7 @@ class ConsoleProcessHandler(private val myConsoleView: ConsoleView, commandLine:
         }
     }
 
+    // append input info and flush it
     fun inputWithFlush(s: String) {
         try {
             processInputWriter.append(s)
@@ -54,15 +55,16 @@ class ConsoleProcessHandler(private val myConsoleView: ConsoleView, commandLine:
         }
     }
 
-    var _myOutputStreamWriter: OutputStreamWriter? = null
+    var _outputStreamWriter: OutputStreamWriter? = null
     private val processInputWriter: OutputStreamWriter
         get() {
-            if (_myOutputStreamWriter == null) {
-                _myOutputStreamWriter = OutputStreamWriter(processInput)
+            if (_outputStreamWriter == null) {
+                _outputStreamWriter = OutputStreamWriter(processInput)
             }
-            return _myOutputStreamWriter ?: OutputStreamWriter(processInput)
+            return _outputStreamWriter ?: OutputStreamWriter(processInput)
         }
 
+    // flush io
     fun flush() {
         try {
             processInputWriter.flush()

+ 0 - 166
src/org/tboox/xmake/utils/ExternalToolRunner.java

@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.tboox.xmake.utils;
-
-import com.intellij.execution.ExecutionException;
-import com.intellij.execution.ExecutionManager;
-import com.intellij.execution.Executor;
-import com.intellij.execution.configurations.GeneralCommandLine;
-import com.intellij.execution.executors.DefaultRunExecutor;
-import com.intellij.execution.filters.TextConsoleBuilder;
-import com.intellij.execution.filters.TextConsoleBuilderFactory;
-import com.intellij.execution.process.*;
-import com.intellij.execution.ui.ConsoleView;
-import com.intellij.execution.ui.ConsoleViewContentType;
-import com.intellij.execution.ui.RunContentDescriptor;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Key;
-import com.intellij.util.ui.UIUtil;
-import org.jetbrains.annotations.NotNull;
-
-import javax.swing.*;
-import java.awt.*;
-import java.util.Locale;
-
-/**
- * {@link com.android.tools.idea.run.ExternalToolRunner} allows running the given
- * {@link com.intellij.execution.configurations.GeneralCommandLine} in an external process while attaching a console to it. The console
- * shows up inside the Run tool window with the given title. By default, a single stop action is provided in the toolbar attached to
- * the console that allows for killing the running command.
- *
- * This class is patterned after {@link com.intellij.execution.runners.AbstractConsoleRunnerWithHistory}.
- */
-public class ExternalToolRunner {
-  private final Project myProject;
-  private final String myTitle;
-  private final GeneralCommandLine myCommandLine;
-
-  private ProcessHandler myProcessHandler;
-
-  public ExternalToolRunner(@NotNull Project project, @NotNull String consoleTitle, @NotNull GeneralCommandLine commandLine) {
-    myProject = project;
-    myTitle = consoleTitle;
-    myCommandLine = commandLine;
-  }
-
-  public ProcessHandler start() throws ExecutionException {
-    final Process process = createProcess();
-    myProcessHandler = createProcessHandler(process);
-
-    UIUtil.invokeLaterIfNeeded(new Runnable() {
-      @Override
-      public void run() {
-        initConsoleUi();
-      }
-    });
-
-    return myProcessHandler;
-  }
-
-  @NotNull
-  protected Process createProcess() throws ExecutionException {
-    return myCommandLine.createProcess();
-  }
-
-  @NotNull
-  protected ProcessHandler createProcessHandler(Process process) {
-    return new OSProcessHandler(process);
-  }
-
-  public ConsoleView initConsoleUi() {
-    ConsoleView consoleView = createConsoleView();
-    consoleView.print(myCommandLine.getCommandLineString() + '\n', ConsoleViewContentType.USER_INPUT);
-   // consoleView.attachToProcess(myProcessHandler);
-
-    JPanel panel = new JPanel(new BorderLayout());
-
-    DefaultActionGroup toolbarActions = new DefaultActionGroup();
-    ActionToolbar actionToolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, toolbarActions, false);
-    panel.add(actionToolbar.getComponent(), BorderLayout.WEST);
-    panel.add(consoleView.getComponent(), BorderLayout.CENTER);
-    actionToolbar.setTargetComponent(panel);
-
-    toolbarActions.addAll(consoleView.createConsoleActions());
-    fillToolBarActions(toolbarActions);
-    panel.updateUI();
-
-    Executor defaultExecutor = DefaultRunExecutor.getRunExecutorInstance();
-    final RunContentDescriptor contentDescriptor = new RunContentDescriptor(consoleView, myProcessHandler, panel, myTitle);
-    showConsole(defaultExecutor, contentDescriptor);
-
-  //  myProcessHandler.addProcessListener(new ConsoleListener(myProject, defaultExecutor, myProcessHandler));
-  //  myProcessHandler.startNotify();
-    return consoleView;
-  }
-
-  protected ConsoleView createConsoleView() {
-    TextConsoleBuilder builder = TextConsoleBuilderFactory.getInstance().createBuilder(myProject);
-    builder.setViewer(true);
-    return builder.getConsole();
-  }
-
-  protected void fillToolBarActions(DefaultActionGroup toolbarActions) {
-    toolbarActions.addAction(ActionManager.getInstance().getAction(IdeActions.ACTION_STOP_PROGRAM));
-  }
-
-  protected void showConsole(Executor defaultExecutor, RunContentDescriptor myDescriptor) {
-    // Show in run tool window
-    ExecutionManager.getInstance(myProject).getContentManager().showRunContent(defaultExecutor, myDescriptor);
-  }
-
-  // Listens to console output and fronts the console in case of errors
-  private static class ConsoleListener extends ProcessAdapter {
-    private final Project myProject;
-    private final Executor myExecutor;
-    private final ProcessHandler myProcessHandler;
-
-    public ConsoleListener(@NotNull Project project,
-                           @NotNull Executor executor,
-                           @NotNull ProcessHandler processHandler) {
-      myProject = project;
-      myExecutor = executor;
-      myProcessHandler = processHandler;
-    }
-
-    @Override
-    public void processWillTerminate(ProcessEvent event, boolean willBeDestroyed) {
-      myProcessHandler.removeProcessListener(this);
-    }
-
-    @Override
-    public void onTextAvailable(ProcessEvent event, Key outputType) {
-      String text = event.getText();
-      boolean hasError = text != null && text.toLowerCase(Locale.US).contains("error");
-      if (hasError || ProcessOutputTypes.STDERR.equals(outputType)) {
-        ExecutionManager.getInstance(myProject).getContentManager().toFrontRunContent(myExecutor, myProcessHandler);
-      }
-    }
-  }
-
-  public static class ProcessOutputCollector extends ProcessAdapter {
-    private final StringBuilder sb = new StringBuilder();
-
-    @Override
-    public void onTextAvailable(ProcessEvent event, Key outputType) {
-      sb.append(event.getText());
-    }
-
-    public String getText() {
-      return sb.toString();
-    }
-  }
-}

+ 9 - 22
src/org/tboox/xmake/utils/SystemUtils.kt

@@ -1,15 +1,13 @@
 package org.tboox.xmake.utils
 
-import com.intellij.execution.ExecutorRegistry
-import com.intellij.execution.ProgramRunnerUtil
-import com.intellij.execution.RunManager
 import com.intellij.execution.configurations.GeneralCommandLine
-import com.intellij.execution.executors.DefaultRunExecutor
 import com.intellij.openapi.util.SystemInfo
 import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.project.Project
-import org.tboox.xmake.run.XMakeRunConfiguration
-import org.tboox.xmake.run.XMakeRunConfigurationType
+import org.tboox.xmake.project.xmakeConsoleView
+import org.tboox.xmake.project.xmakeOutputPanel
+import org.tboox.xmake.project.xmakeToolWindow
+import org.tboox.xmake.shared.xmakeConfiguration
 import java.io.BufferedReader
 import java.io.IOException
 import java.io.InputStreamReader
@@ -122,22 +120,11 @@ object SystemUtils {
     }
 
     // run process in console
-    fun runvInConsole(project: Project, name: String, commandLine: GeneralCommandLine) {
+    fun runvInConsole(project: Project, commandLine: GeneralCommandLine) {
 
-        // get runner
-        val runner = RunManager.getInstance(project)
-
-        // create run configuration settings
-        val runnerAndConfigurationSettings = runner.createRunConfiguration(name, XMakeRunConfigurationType().factory)
-
-        // set build command
-        val configuration = runnerAndConfigurationSettings.configuration as XMakeRunConfiguration
-        configuration.currentCommandLine = commandLine
-
-        // get executor
-        val executor = ExecutorRegistry.getInstance().getExecutorById(DefaultRunExecutor.EXECUTOR_ID)
-
-        // run build task
-        ProgramRunnerUtil.executeConfiguration(project, runnerAndConfigurationSettings, executor)
+        project.xmakeToolWindow.show {
+            project.xmakeOutputPanel.showPanel()
+            ConsoleProcessHandler(project.xmakeConsoleView, commandLine).startNotify()
+        }
     }
 }

+ 0 - 234
src/org/tboox/xmake/utils/TerminalExecutionConsole.java

@@ -1,234 +0,0 @@
-/*
- * Copyright 2000-2016 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.tboox.xmake.utils;
-
-import com.intellij.execution.filters.Filter;
-import com.intellij.execution.filters.HyperlinkInfo;
-import com.intellij.execution.process.ProcessAdapter;
-import com.intellij.execution.process.ProcessEvent;
-import com.intellij.execution.process.ProcessHandler;
-import com.intellij.execution.process.ProcessOutputTypes;
-import com.intellij.execution.ui.ConsoleView;
-import com.intellij.execution.ui.ConsoleViewContentType;
-import com.intellij.openapi.actionSystem.AnAction;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Disposer;
-import com.intellij.openapi.util.Key;
-import com.intellij.openapi.vfs.encoding.EncodingProjectManager;
-import com.intellij.terminal.AppendableTerminalDataStream;
-import com.intellij.terminal.JBTerminalSystemSettingsProviderBase;
-import com.intellij.terminal.JBTerminalWidget;
-import com.intellij.terminal.ProcessHandlerTtyConnector;
-import com.jediterm.terminal.HyperlinkStyle;
-import com.jediterm.terminal.TerminalKeyEncoder;
-import com.jediterm.terminal.TerminalStarter;
-import com.jediterm.terminal.TtyConnector;
-import com.jediterm.terminal.model.JediTerminal;
-import com.jediterm.terminal.ui.TerminalSession;
-import com.jediterm.terminal.util.CharUtils;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import java.awt.*;
-import java.io.IOException;
-
-/**
- * @author traff
- */
-public class TerminalExecutionConsole implements ConsoleView {
-  private JBTerminalWidget myTerminalWidget;
-  private Project myProject;
-  private final AppendableTerminalDataStream myDataStream;
-
-  private final TerminalKeyEncoder myKeyEncoder = new TerminalKeyEncoder();
-
-  {
-    myKeyEncoder.setAutoNewLine(true);
-  }
-
-  public TerminalExecutionConsole(@NotNull Project project, @NotNull ProcessHandler processHandler) {
-    myProject = project;
-    final JBTerminalSystemSettingsProviderBase provider = new JBTerminalSystemSettingsProviderBase() {
-      @Override
-      public HyperlinkStyle.HighlightMode getHyperlinkHighlightingMode() {
-        return HyperlinkStyle.HighlightMode.ALWAYS;
-      }
-    };
-
-    myDataStream = new AppendableTerminalDataStream();
-
-
-    myTerminalWidget = new JBTerminalWidget(project, 200, 24, provider, this) {
-      @Override
-      protected TerminalStarter createTerminalStarter(JediTerminal terminal, TtyConnector connector) {
-        return new TerminalStarter(terminal, connector, myDataStream) {
-          @Override
-          public byte[] getCode(int key, int modifiers) {
-            if (key == 10) {
-              return myKeyEncoder.getCode(key, modifiers);
-            } else {
-              return super.getCode(key, modifiers);
-            }
-          }
-        };
-      }
-    };
-    Disposer.register(myTerminalWidget, provider);
-/*
-    TerminalSession session = myTerminalWidget
-      .createTerminalSession(
-        new ProcessHandlerTtyConnector(processHandler, EncodingProjectManager.getInstance(project).getDefaultCharset()));
-
-    processHandler.addProcessListener(new ProcessAdapter() {
-      @Override
-      public void startNotified(@NotNull ProcessEvent event) {
-        session.start();
-      }
-
-      @Override
-      public void onTextAvailable(@NotNull ProcessEvent event, @NotNull Key outputType) {
-        try {
-          ConsoleViewContentType contentType = null;
-          if (outputType != ProcessOutputTypes.STDOUT) {
-            contentType = ConsoleViewContentType.getConsoleViewType(outputType);
-          }
-
-          printText(event.getText(), contentType);
-
-          if (outputType == ProcessOutputTypes.SYSTEM) {
-            myDataStream.append('\r');
-          }
-        }
-        catch (IOException e) {
-          // pass
-        }
-      }
-
-      @Override
-      public void processTerminated(@NotNull ProcessEvent event) {
-        myTerminalWidget.getTerminalPanel().setCursorVisible(false);
-      }
-    });*/
-  }
-
-  private void printText(@NotNull String text, @Nullable ConsoleViewContentType contentType) throws IOException {
-    if (contentType != null) {
-      myDataStream.append(encodeColor(contentType.getAttributes().getForegroundColor()));
-    }
-
-    myDataStream.append(text);
-
-    if (contentType != null) {
-      myDataStream.append((char)CharUtils.ESC + "[39m"); //restore color
-    }
-  }
-
-  private static String encodeColor(Color color) {
-    return String.valueOf((char)CharUtils.ESC) + "[" + "38;2;" + color.getRed() + ";" + color.getGreen() + ";" +
-           color.getBlue() + "m";
-  }
-
-  public void addMessageFilter(Project project, Filter filter) {
-    myTerminalWidget.addMessageFilter(project, filter);
-  }
-
-  @Override
-  public void print(@NotNull String text, @NotNull ConsoleViewContentType contentType) {
-    myTerminalWidget.getTerminal().writeCharacters(text);
-  }
-
-  @Override
-  public void clear() {
-    myTerminalWidget.getTerminal().clearScreen();
-  }
-
-  @Override
-  public void scrollTo(int offset) {
-  }
-
-  @Override
-  public void attachToProcess(ProcessHandler processHandler) {
-  }
-
-  @Override
-  public void setOutputPaused(boolean value) {
-
-  }
-
-  @Override
-  public boolean isOutputPaused() {
-    return false;
-  }
-
-  @Override
-  public boolean hasDeferredOutput() {
-    return false;
-  }
-
-  @Override
-  public void performWhenNoDeferredOutput(@NotNull Runnable runnable) {
-  }
-
-  @Override
-  public void setHelpId(@NotNull String helpId) {
-  }
-
-  @Override
-  public void addMessageFilter(@NotNull Filter filter) {
-    addMessageFilter(myProject, filter);
-  }
-
-  @Override
-  public void printHyperlink(@NotNull String hyperlinkText, @Nullable HyperlinkInfo info) {
-
-  }
-
-  @Override
-  public int getContentSize() {
-    return 0;
-  }
-
-  @Override
-  public boolean canPause() {
-    return false;
-  }
-
-  @NotNull
-  @Override
-  public AnAction[] createConsoleActions() {
-    return AnAction.EMPTY_ARRAY;
-  }
-
-  @Override
-  public void allowHeavyFilters() {
-  }
-
-  @Override
-  public JComponent getComponent() {
-    return myTerminalWidget.getComponent();
-  }
-
-  @Override
-  public JComponent getPreferredFocusableComponent() {
-    return myTerminalWidget.getComponent();
-  }
-
-  @Override
-  public void dispose() {
-    myTerminalWidget = null;
-  }
-}