mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-01 06:05:24 +02:00
Merge branch 'terminal_split' of ../../../tcf/sources/org.eclipse.tcf
This commit is contained in:
commit
cb34c361b0
260 changed files with 27017 additions and 0 deletions
28
features/org.eclipse.tcf.te.terminals.feature/.project
Normal file
28
features/org.eclipse.tcf.te.terminals.feature/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.tcf.te.terminals.feature</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1311579318584</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-target</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
|
@ -0,0 +1,13 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
bin.includes = feature.xml,\
|
||||
feature.properties,\
|
||||
p2.inf
|
||||
src.includes = feature.properties
|
|
@ -0,0 +1,38 @@
|
|||
##################################################################################
|
||||
# Copyright (c) 2011, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
##################################################################################
|
||||
# feature.properties
|
||||
# contains externalized strings for feature.xml
|
||||
# "%foo" in feature.xml corresponds to the key "foo" in this file
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# This file should be translated.
|
||||
|
||||
# "featureName" property - name of the feature
|
||||
featureName=Terminals View
|
||||
|
||||
# "providerName" property - name of the company that provides the feature
|
||||
providerName=Eclipse.org - Target Explorer
|
||||
|
||||
# "updateSiteName" property - label for the update site
|
||||
updateSiteName=Eclipse Update Site
|
||||
|
||||
# "description" property - description of the feature
|
||||
description=An integrated Eclipse View for the local command prompt (console) or \
|
||||
remote hosts (SSH, Telnet, Serial, TCF). Works on Windows, Linux, Mac and Solaris. \
|
||||
Requires Eclipse 3.8.2 or newer and a Java 7 or newer JRE.
|
||||
|
||||
# "copyright" property - text of the "Feature Update Copyright"
|
||||
copyright=\
|
||||
Copyright (c) 2011, 2015 Wind River Systems, Inc. and others.\n\
|
||||
All rights reserved. This program and the accompanying materials\n\
|
||||
are made available under the terms of the Eclipse Public License v1.0\n\
|
||||
which accompanies this distribution, and is available at\n\
|
||||
http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
################ end of copyright property ####################################
|
91
features/org.eclipse.tcf.te.terminals.feature/feature.xml
Normal file
91
features/org.eclipse.tcf.te.terminals.feature/feature.xml
Normal file
|
@ -0,0 +1,91 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feature
|
||||
id="org.eclipse.tcf.te.terminals.feature"
|
||||
label="%featureName"
|
||||
version="1.3.0.qualifier"
|
||||
provider-name="%providerName"
|
||||
plugin="org.eclipse.tcf.te.core.terminals"
|
||||
license-feature="org.eclipse.license"
|
||||
license-feature-version="1.0.1.qualifier">
|
||||
|
||||
<description>
|
||||
%description
|
||||
</description>
|
||||
|
||||
<copyright>
|
||||
%copyright
|
||||
</copyright>
|
||||
|
||||
<license url="%licenseURL">
|
||||
%license
|
||||
</license>
|
||||
|
||||
<url>
|
||||
<update label="%updateSiteName" url="http://download.eclipse.org/releases/luna"/>
|
||||
</url>
|
||||
|
||||
<requires>
|
||||
<import plugin="org.eclipse.core.expressions" version="3.4.400" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.core.runtime" version="3.8.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tcf.te.core.terminals" version="1.3.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tm.terminal" version="3.3.1" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.ui" version="3.8.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.core.variables" version="3.2.600" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tcf.te.ui.terminals" version="1.3.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tcf.te.ui.terminals.process" version="1.3.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.equinox.security" version="1.1.100" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tm.terminal.serial" version="2.1.400" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tm.terminal.ssh" version="2.1.400" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tm.terminal.telnet" version="2.1.400" match="greaterOrEqual"/>
|
||||
</requires>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.core.terminals"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.local"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.process"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.serial"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.ssh"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.telnet"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
</feature>
|
22
features/org.eclipse.tcf.te.terminals.feature/p2.inf
Normal file
22
features/org.eclipse.tcf.te.terminals.feature/p2.inf
Normal file
|
@ -0,0 +1,22 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
|
||||
# Make the org.eclipse.cdt.native feature dependency "optional" since it didn't
|
||||
# exist in CDT 8.3 and we can also work on top of CDT 8.3.
|
||||
|
||||
# The real dependencies are all properly managed via p2.inf in the
|
||||
# org.eclipse.tcf.te.ui.terminals.process/META-INF/p2.inf file.
|
||||
# The only benefit of requesting the feature here is that it allow pulling in
|
||||
# additional fragments that we are not aware of in the bundle's p2.inf.
|
||||
|
||||
requires.0.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.0.name = org.eclipse.cdt.native.feature.group
|
||||
requires.0.greedy = true
|
||||
requires.0.optional = true
|
21
features/org.eclipse.tcf.te.terminals.feature/pom.xml
Normal file
21
features/org.eclipse.tcf.te.terminals.feature/pom.xml
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.tcf</groupId>
|
||||
<artifactId>org.eclipse.tcf.maven-build</artifactId>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<relativePath>../../../admin/pom-build.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<version>1.3.0.qualifier</version>
|
||||
<artifactId>org.eclipse.tcf.te.terminals.feature</artifactId>
|
||||
<packaging>eclipse-feature</packaging>
|
||||
|
||||
<properties>
|
||||
<jacoco.skip>true</jacoco.skip>
|
||||
</properties>
|
||||
</project>
|
28
features/org.eclipse.tcf.te.terminals.rse.feature/.project
Normal file
28
features/org.eclipse.tcf.te.terminals.rse.feature/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.tcf.te.terminals.rse.feature</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1311579318584</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-target</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
|
@ -0,0 +1,12 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
bin.includes = feature.xml,\
|
||||
feature.properties
|
||||
src.includes = feature.properties
|
|
@ -0,0 +1,37 @@
|
|||
##################################################################################
|
||||
# Copyright (c) 2014, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
##################################################################################
|
||||
# feature.properties
|
||||
# contains externalized strings for feature.xml
|
||||
# "%foo" in feature.xml corresponds to the key "foo" in this file
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# This file should be translated.
|
||||
|
||||
# "featureName" property - name of the feature
|
||||
featureName=Remote System Explorer Terminals View add-in
|
||||
|
||||
# "providerName" property - name of the company that provides the feature
|
||||
providerName=Eclipse.org - Target Explorer
|
||||
|
||||
# "updateSiteName" property - label for the update site
|
||||
updateSiteName=Eclipse Update Site
|
||||
|
||||
# "description" property - description of the feature
|
||||
description=Integrates the Terminals view into the Remote System Explorer. \
|
||||
Works on Windows, Linux, Mac and Solaris. Requires Eclipse 3.8.2 or newer and a Java 7 or newer JRE.
|
||||
|
||||
# "copyright" property - text of the "Feature Update Copyright"
|
||||
copyright=\
|
||||
Copyright (c) 2014, 2015 Wind River Systems, Inc. and others.\n\
|
||||
All rights reserved. This program and the accompanying materials\n\
|
||||
are made available under the terms of the Eclipse Public License v1.0\n\
|
||||
which accompanies this distribution, and is available at\n\
|
||||
http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
################ end of copyright property ####################################
|
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feature
|
||||
id="org.eclipse.tcf.te.terminals.rse.feature"
|
||||
label="%featureName"
|
||||
version="1.3.0.qualifier"
|
||||
provider-name="%providerName"
|
||||
plugin="org.eclipse.tcf.te.core.terminals"
|
||||
license-feature="org.eclipse.license"
|
||||
license-feature-version="1.0.1.qualifier">
|
||||
|
||||
<description>
|
||||
%description
|
||||
</description>
|
||||
|
||||
<copyright>
|
||||
%copyright
|
||||
</copyright>
|
||||
|
||||
<license url="%licenseURL">
|
||||
%license
|
||||
</license>
|
||||
|
||||
<url>
|
||||
<update label="%updateSiteName" url="http://download.eclipse.org/releases/luna"/>
|
||||
</url>
|
||||
|
||||
<requires>
|
||||
<import plugin="org.eclipse.core.expressions" version="3.4.400" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.core.runtime" version="3.8.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.rse.core" version="3.3.100" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.rse.subsystems.files.core" version="3.3.1" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.rse.ui" version="3.3.100" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tcf.te.core.terminals" version="1.3.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tcf.te.ui.terminals" version="1.3.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.tm.terminal" version="3.3.1" match="greaterOrEqual"/>
|
||||
<import plugin="org.eclipse.ui" version="3.8.0" match="greaterOrEqual"/>
|
||||
<import feature="org.eclipse.tcf.te.terminals.feature" version="1.3.0" match="greaterOrEqual"/>
|
||||
</requires>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.rse"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
</feature>
|
21
features/org.eclipse.tcf.te.terminals.rse.feature/pom.xml
Normal file
21
features/org.eclipse.tcf.te.terminals.rse.feature/pom.xml
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.tcf</groupId>
|
||||
<artifactId>org.eclipse.tcf.maven-build</artifactId>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<relativePath>../../../admin/pom-build.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<version>1.3.0.qualifier</version>
|
||||
<artifactId>org.eclipse.tcf.te.terminals.rse.feature</artifactId>
|
||||
<packaging>eclipse-feature</packaging>
|
||||
|
||||
<properties>
|
||||
<jacoco.skip>true</jacoco.skip>
|
||||
</properties>
|
||||
</project>
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.tcf.te.terminals.rse.sdk.feature</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ds.core.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1311579318584</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-target</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
|
@ -0,0 +1,12 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
bin.includes = feature.xml,\
|
||||
feature.properties
|
||||
src.includes = feature.properties
|
|
@ -0,0 +1,37 @@
|
|||
##################################################################################
|
||||
# Copyright (c) 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
##################################################################################
|
||||
# feature.properties
|
||||
# contains externalized strings for feature.xml
|
||||
# "%foo" in feature.xml corresponds to the key "foo" in this file
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# This file should be translated.
|
||||
|
||||
# "featureName" property - name of the feature
|
||||
featureName=Remote System Explorer Terminals View add-in, SDK
|
||||
|
||||
# "providerName" property - name of the company that provides the feature
|
||||
providerName=Eclipse.org - Target Explorer
|
||||
|
||||
# "updateSiteName" property - label for the update site
|
||||
updateSiteName=Eclipse Update Site
|
||||
|
||||
# "description" property - description of the feature
|
||||
description=Integrates the Terminals view into the Remote System Explorer. \
|
||||
Works on Windows, Linux, Mac and Solaris. Requires Eclipse 3.8.2 or newer and a Java 7 or newer JRE.
|
||||
|
||||
# "copyright" property - text of the "Feature Update Copyright"
|
||||
copyright=\
|
||||
Copyright (c) 2014 Wind River Systems, Inc. and others.\n\
|
||||
All rights reserved. This program and the accompanying materials\n\
|
||||
are made available under the terms of the Eclipse Public License v1.0\n\
|
||||
which accompanies this distribution, and is available at\n\
|
||||
http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
################ end of copyright property ####################################
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feature
|
||||
id="org.eclipse.tcf.te.terminals.rse.sdk.feature"
|
||||
label="%featureName"
|
||||
version="1.3.0.qualifier"
|
||||
provider-name="%providerName"
|
||||
license-feature="org.eclipse.license"
|
||||
license-feature-version="1.0.1.qualifier">
|
||||
|
||||
<description>
|
||||
%description
|
||||
</description>
|
||||
|
||||
<copyright>
|
||||
%copyright
|
||||
</copyright>
|
||||
|
||||
<license url="%licenseURL">
|
||||
%license
|
||||
</license>
|
||||
|
||||
<url>
|
||||
<update label="%updateSiteName" url="http://download.eclipse.org/releases/luna"/>
|
||||
</url>
|
||||
|
||||
<requires>
|
||||
<import feature="org.eclipse.tcf.te.terminals.sdk.feature" version="1.3.0" match="greaterOrEqual"/>
|
||||
<import feature="org.eclipse.tcf.te.terminals.rse.feature" version="1.3.0" match="greaterOrEqual"/>
|
||||
</requires>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.rse.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
</feature>
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.tcf</groupId>
|
||||
<artifactId>org.eclipse.tcf.maven-build</artifactId>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<relativePath>../../../admin/pom-build.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<version>1.3.0.qualifier</version>
|
||||
<artifactId>org.eclipse.tcf.te.terminals.rse.sdk.feature</artifactId>
|
||||
<packaging>eclipse-feature</packaging>
|
||||
|
||||
<properties>
|
||||
<jacoco.skip>true</jacoco.skip>
|
||||
</properties>
|
||||
</project>
|
33
features/org.eclipse.tcf.te.terminals.sdk.feature/.project
Normal file
33
features/org.eclipse.tcf.te.terminals.sdk.feature/.project
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.tcf.te.terminals.sdk.feature</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ds.core.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1311579318584</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-target</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
|
@ -0,0 +1,12 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
bin.includes = feature.xml,\
|
||||
feature.properties
|
||||
src.includes = feature.properties
|
|
@ -0,0 +1,38 @@
|
|||
##################################################################################
|
||||
# Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
##################################################################################
|
||||
# feature.properties
|
||||
# contains externalized strings for feature.xml
|
||||
# "%foo" in feature.xml corresponds to the key "foo" in this file
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# This file should be translated.
|
||||
|
||||
# "featureName" property - name of the feature
|
||||
featureName=Terminals View, SDK
|
||||
|
||||
# "providerName" property - name of the company that provides the feature
|
||||
providerName=Eclipse.org - Target Explorer
|
||||
|
||||
# "updateSiteName" property - label for the update site
|
||||
updateSiteName=Eclipse Update Site
|
||||
|
||||
# "description" property - description of the feature
|
||||
description=An integrated Eclipse View for the local command prompt (console) or \
|
||||
remote hosts via (SSH, Telnet, Serial, TCF). Works on Windows, Linux, Mac and Solaris. \
|
||||
Requires Eclipse 3.8.2 or newer and a Java 7 or newer JRE.
|
||||
|
||||
# "copyright" property - text of the "Feature Update Copyright"
|
||||
copyright=\
|
||||
Copyright (c) 2011, 2014 Wind River Systems, Inc. and others.\n\
|
||||
All rights reserved. This program and the accompanying materials\n\
|
||||
are made available under the terms of the Eclipse Public License v1.0\n\
|
||||
which accompanies this distribution, and is available at\n\
|
||||
http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
################ end of copyright property ####################################
|
|
@ -0,0 +1,79 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feature
|
||||
id="org.eclipse.tcf.te.terminals.sdk.feature"
|
||||
label="%featureName"
|
||||
version="1.3.0.qualifier"
|
||||
provider-name="%providerName"
|
||||
license-feature="org.eclipse.license"
|
||||
license-feature-version="1.0.1.qualifier">
|
||||
|
||||
<description>
|
||||
%description
|
||||
</description>
|
||||
|
||||
<copyright>
|
||||
%copyright
|
||||
</copyright>
|
||||
|
||||
<license url="%licenseURL">
|
||||
%license
|
||||
</license>
|
||||
|
||||
<url>
|
||||
<update label="%updateSiteName" url="http://download.eclipse.org/releases/luna"/>
|
||||
</url>
|
||||
|
||||
<requires>
|
||||
<import feature="org.eclipse.tcf.te.terminals.feature" version="1.3.0" match="greaterOrEqual"/>
|
||||
</requires>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.core.terminals.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.local.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.process.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.serial.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.ssh.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="org.eclipse.tcf.te.ui.terminals.telnet.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
</feature>
|
21
features/org.eclipse.tcf.te.terminals.sdk.feature/pom.xml
Normal file
21
features/org.eclipse.tcf.te.terminals.sdk.feature/pom.xml
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.tcf</groupId>
|
||||
<artifactId>org.eclipse.tcf.maven-build</artifactId>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<relativePath>../../../admin/pom-build.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<version>1.3.0.qualifier</version>
|
||||
<artifactId>org.eclipse.tcf.te.terminals.sdk.feature</artifactId>
|
||||
<packaging>eclipse-feature</packaging>
|
||||
|
||||
<properties>
|
||||
<jacoco.skip>true</jacoco.skip>
|
||||
</properties>
|
||||
</project>
|
7
plugins/org.eclipse.tcf.te.core.terminals/.classpath
Normal file
7
plugins/org.eclipse.tcf.te.core.terminals/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
1
plugins/org.eclipse.tcf.te.core.terminals/.options
Normal file
1
plugins/org.eclipse.tcf.te.core.terminals/.options
Normal file
|
@ -0,0 +1 @@
|
|||
org.eclipse.tcf.te.core.terminals/debugmode = 0
|
39
plugins/org.eclipse.tcf.te.core.terminals/.project
Normal file
39
plugins/org.eclipse.tcf.te.core.terminals/.project
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.tcf.te.core.terminals</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1329501981620</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-target</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
|
@ -0,0 +1,362 @@
|
|||
#Sat Oct 15 08:44:04 CEST 2011
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.autoboxing=warning
|
||||
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deadCode=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
|
||||
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
|
||||
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
|
||||
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
|
||||
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
|
||||
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
|
||||
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nullReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
|
||||
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
|
||||
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
|
||||
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
|
||||
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
|
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_header=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_html=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_source_code=true
|
||||
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
|
||||
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
|
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
|
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
|
||||
org.eclipse.jdt.core.formatter.comment.line_length=100
|
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
|
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
|
||||
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
|
||||
org.eclipse.jdt.core.formatter.compact_else_if=true
|
||||
org.eclipse.jdt.core.formatter.continuation_indentation=4
|
||||
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=4
|
||||
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
|
||||
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
|
||||
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||
org.eclipse.jdt.core.formatter.indent_empty_lines=false
|
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
|
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
|
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||
org.eclipse.jdt.core.formatter.indentation.size=4
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
|
||||
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
|
||||
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=true
|
||||
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true
|
||||
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=true
|
||||
org.eclipse.jdt.core.formatter.lineSplit=100
|
||||
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
|
||||
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
|
||||
org.eclipse.jdt.core.formatter.tabulation.char=tab
|
||||
org.eclipse.jdt.core.formatter.tabulation.size=4
|
||||
org.eclipse.jdt.core.formatter.use_on_off_tags=false
|
||||
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
|
||||
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
|
|
@ -0,0 +1,56 @@
|
|||
eclipse.preferences.version=1
|
||||
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
|
||||
formatter_profile=_Target Explorer Java STD
|
||||
formatter_settings_version=12
|
||||
sp_cleanup.add_default_serial_version_id=true
|
||||
sp_cleanup.add_generated_serial_version_id=false
|
||||
sp_cleanup.add_missing_annotations=true
|
||||
sp_cleanup.add_missing_deprecated_annotations=true
|
||||
sp_cleanup.add_missing_methods=false
|
||||
sp_cleanup.add_missing_nls_tags=false
|
||||
sp_cleanup.add_missing_override_annotations=true
|
||||
sp_cleanup.add_missing_override_annotations_interface_methods=true
|
||||
sp_cleanup.add_serial_version_id=false
|
||||
sp_cleanup.always_use_blocks=true
|
||||
sp_cleanup.always_use_parentheses_in_expressions=false
|
||||
sp_cleanup.always_use_this_for_non_static_field_access=false
|
||||
sp_cleanup.always_use_this_for_non_static_method_access=false
|
||||
sp_cleanup.convert_to_enhanced_for_loop=false
|
||||
sp_cleanup.correct_indentation=false
|
||||
sp_cleanup.format_source_code=false
|
||||
sp_cleanup.format_source_code_changes_only=false
|
||||
sp_cleanup.make_local_variable_final=false
|
||||
sp_cleanup.make_parameters_final=false
|
||||
sp_cleanup.make_private_fields_final=true
|
||||
sp_cleanup.make_type_abstract_if_missing_method=false
|
||||
sp_cleanup.make_variable_declarations_final=false
|
||||
sp_cleanup.never_use_blocks=false
|
||||
sp_cleanup.never_use_parentheses_in_expressions=true
|
||||
sp_cleanup.on_save_use_additional_actions=true
|
||||
sp_cleanup.organize_imports=true
|
||||
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
|
||||
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
|
||||
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
|
||||
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
|
||||
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
|
||||
sp_cleanup.remove_private_constructors=true
|
||||
sp_cleanup.remove_trailing_whitespaces=true
|
||||
sp_cleanup.remove_trailing_whitespaces_all=true
|
||||
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
|
||||
sp_cleanup.remove_unnecessary_casts=true
|
||||
sp_cleanup.remove_unnecessary_nls_tags=true
|
||||
sp_cleanup.remove_unused_imports=true
|
||||
sp_cleanup.remove_unused_local_variables=false
|
||||
sp_cleanup.remove_unused_private_fields=true
|
||||
sp_cleanup.remove_unused_private_members=false
|
||||
sp_cleanup.remove_unused_private_methods=true
|
||||
sp_cleanup.remove_unused_private_types=true
|
||||
sp_cleanup.sort_members=false
|
||||
sp_cleanup.sort_members_all=false
|
||||
sp_cleanup.use_blocks=false
|
||||
sp_cleanup.use_blocks_only_for_return_and_throw=false
|
||||
sp_cleanup.use_parentheses_in_expressions=false
|
||||
sp_cleanup.use_this_for_non_static_field_access=false
|
||||
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
|
||||
sp_cleanup.use_this_for_non_static_method_access=false
|
||||
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
|
|
@ -0,0 +1,32 @@
|
|||
compilers.f.unresolved-features=1
|
||||
compilers.f.unresolved-plugins=1
|
||||
compilers.incompatible-environment=1
|
||||
compilers.p.build=1
|
||||
compilers.p.build.bin.includes=1
|
||||
compilers.p.build.encodings=2
|
||||
compilers.p.build.java.compiler=2
|
||||
compilers.p.build.java.compliance=1
|
||||
compilers.p.build.missing.output=2
|
||||
compilers.p.build.output.library=1
|
||||
compilers.p.build.source.library=1
|
||||
compilers.p.build.src.includes=1
|
||||
compilers.p.deprecated=1
|
||||
compilers.p.discouraged-class=1
|
||||
compilers.p.internal=1
|
||||
compilers.p.missing-packages=1
|
||||
compilers.p.missing-version-export-package=2
|
||||
compilers.p.missing-version-import-package=1
|
||||
compilers.p.missing-version-require-bundle=1
|
||||
compilers.p.no-required-att=0
|
||||
compilers.p.not-externalized-att=2
|
||||
compilers.p.unknown-attribute=1
|
||||
compilers.p.unknown-class=1
|
||||
compilers.p.unknown-element=1
|
||||
compilers.p.unknown-identifier=1
|
||||
compilers.p.unknown-resource=1
|
||||
compilers.p.unresolved-ex-points=0
|
||||
compilers.p.unresolved-import=0
|
||||
compilers.s.create-docs=false
|
||||
compilers.s.doc-folder=doc
|
||||
compilers.s.open-tags=1
|
||||
eclipse.preferences.version=1
|
|
@ -0,0 +1,21 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.tcf.te.core.terminals;singleton:=true
|
||||
Bundle-Version: 1.3.0.qualifier
|
||||
Bundle-Activator: org.eclipse.tcf.te.core.terminals.activator.CoreBundleActivator
|
||||
Bundle-Vendor: %providerName
|
||||
Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400",
|
||||
org.eclipse.core.runtime;bundle-version="3.8.0"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-Localization: plugin
|
||||
Export-Package: org.eclipse.tcf.te.core.terminals,
|
||||
org.eclipse.tcf.te.core.terminals.activator;x-internal:=true,
|
||||
org.eclipse.tcf.te.core.terminals.interfaces,
|
||||
org.eclipse.tcf.te.core.terminals.interfaces.constants,
|
||||
org.eclipse.tcf.te.core.terminals.internal;x-internal:=true,
|
||||
org.eclipse.tcf.te.core.terminals.nls;x-internal:=true,
|
||||
org.eclipse.tcf.te.core.terminals.preferences,
|
||||
org.eclipse.tcf.te.core.terminals.tracing,
|
||||
org.eclipse.tcf.te.core.terminals.utils
|
28
plugins/org.eclipse.tcf.te.core.terminals/about.html
Normal file
28
plugins/org.eclipse.tcf.te.core.terminals/about.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||
<title>About</title>
|
||||
</head>
|
||||
<body lang="EN-US">
|
||||
<h2>About This Content</h2>
|
||||
|
||||
<p>May 24, 2012</p>
|
||||
<h3>License</h3>
|
||||
|
||||
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
|
||||
indicated below, the Content is provided to you under the terms and conditions of the
|
||||
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
|
||||
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
|
||||
For purposes of the EPL, "Program" will mean the Content.</p>
|
||||
|
||||
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
|
||||
being redistributed by another party ("Redistributor") and different terms and conditions may
|
||||
apply to your use of any object code in the Content. Check the Redistributor's license that was
|
||||
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
|
||||
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
|
||||
and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
27
plugins/org.eclipse.tcf.te.core.terminals/about.ini
Normal file
27
plugins/org.eclipse.tcf.te.core.terminals/about.ini
Normal file
|
@ -0,0 +1,27 @@
|
|||
# about.ini
|
||||
# contains information about a feature
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# "%key" are externalized strings defined in about.properties
|
||||
# This file does not need to be translated.
|
||||
|
||||
# Property "aboutText" contains blurb for "About" dialog (translated)
|
||||
aboutText=%blurb
|
||||
|
||||
# Property "windowImage" contains path to window icon (16x16)
|
||||
# needed for primary features only
|
||||
|
||||
# Property "featureImage" contains path to feature image (32x32)
|
||||
featureImage=te-feature.png
|
||||
|
||||
# Property "aboutImage" contains path to product image (500x330 or 115x164)
|
||||
# needed for primary features only
|
||||
|
||||
# Property "appName" contains name of the application (not translated)
|
||||
# needed for primary features only
|
||||
|
||||
# Property "welcomePage" contains path to welcome page (special XML-based format)
|
||||
# optional
|
||||
|
||||
# Property "welcomePerspective" contains the id of the perspective in which the
|
||||
# welcome page is to be opened.
|
||||
# optional
|
6
plugins/org.eclipse.tcf.te.core.terminals/about.mappings
Normal file
6
plugins/org.eclipse.tcf.te.core.terminals/about.mappings
Normal file
|
@ -0,0 +1,6 @@
|
|||
# about.mappings
|
||||
# contains fill-ins for about.properties
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# This file does not need to be translated.
|
||||
|
||||
0=@build@
|
24
plugins/org.eclipse.tcf.te.core.terminals/about.properties
Normal file
24
plugins/org.eclipse.tcf.te.core.terminals/about.properties
Normal file
|
@ -0,0 +1,24 @@
|
|||
################################################################################
|
||||
# Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License v1.0
|
||||
# which accompanies this distribution, and is available at
|
||||
# http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Martin Oberhuber - initial API and implementation
|
||||
################################################################################
|
||||
# about.properties
|
||||
# contains externalized strings for about.ini
|
||||
# java.io.Properties file (ISO 8859-1 with "\" escapes)
|
||||
# fill-ins are supplied by about.mappings
|
||||
# This file should be translated.
|
||||
#
|
||||
# Do not translate any values surrounded by {}
|
||||
|
||||
blurb=TCF Terminals\n\
|
||||
\n\
|
||||
Version: {featureVersion}\n\
|
||||
\n\
|
||||
(c) Copyright Wind River Systems, Inc. and others 2011, 2015. All rights reserved.\n\
|
||||
Visit http://marketplace.eclipse.org/content/tcf-terminals
|
20
plugins/org.eclipse.tcf.te.core.terminals/build.properties
Normal file
20
plugins/org.eclipse.tcf.te.core.terminals/build.properties
Normal file
|
@ -0,0 +1,20 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
plugin.properties,\
|
||||
about.html,\
|
||||
plugin.xml,\
|
||||
about.ini,\
|
||||
about.mappings,\
|
||||
about.properties,\
|
||||
te-feature.png
|
14
plugins/org.eclipse.tcf.te.core.terminals/plugin.properties
Normal file
14
plugins/org.eclipse.tcf.te.core.terminals/plugin.properties
Normal file
|
@ -0,0 +1,14 @@
|
|||
##################################################################################
|
||||
# Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
##################################################################################
|
||||
|
||||
pluginName = Terminals Core
|
||||
providerName = Eclipse.org - Target Explorer
|
||||
|
||||
ExtensionPoint.contextPropertiesProviders = Terminal Context Properties Providers
|
17
plugins/org.eclipse.tcf.te.core.terminals/plugin.xml
Normal file
17
plugins/org.eclipse.tcf.te.core.terminals/plugin.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?eclipse version="3.4"?>
|
||||
<plugin>
|
||||
<extension-point id="contextPropertiesProviders" name="%contextPropertiesProviders" schema="schema/contextPropertiesProviders.exsd"/>
|
||||
|
||||
<!-- Property tester contributions -->
|
||||
<extension point="org.eclipse.core.expressions.propertyTesters">
|
||||
<propertyTester
|
||||
class="org.eclipse.tcf.te.core.terminals.internal.PropertyTester"
|
||||
id="org.eclipse.tcf.te.core.terminals.PropertyTester"
|
||||
namespace="org.eclipse.tcf.te.core.terminals"
|
||||
properties="hasContextPropertiesProvider"
|
||||
type="java.lang.Object">
|
||||
</propertyTester>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
17
plugins/org.eclipse.tcf.te.core.terminals/pom.xml
Normal file
17
plugins/org.eclipse.tcf.te.core.terminals/pom.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.tcf</groupId>
|
||||
<artifactId>org.eclipse.tcf.maven-build</artifactId>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<relativePath>../../../admin/pom-build.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<version>1.3.0.qualifier</version>
|
||||
<artifactId>org.eclipse.tcf.te.core.terminals</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
</project>
|
|
@ -0,0 +1,129 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- Schema file written by PDE -->
|
||||
<schema targetNamespace="org.eclipse.tcf.te.core.terminals" xmlns="http://www.w3.org/2001/XMLSchema">
|
||||
<annotation>
|
||||
<appinfo>
|
||||
<meta.schema plugin="org.eclipse.tcf.te.core.terminals" id="contextPropertiesProviders" name="Terminal Context Properties Providers"/>
|
||||
</appinfo>
|
||||
<documentation>
|
||||
This extension point is used to contribute terminal context properties providers. The context properties provider allows querying desired properties for a given context.
|
||||
<p>
|
||||
The terminal context is passed in as default variable to the enablement expression evaluation. The terminal context is not expected to be iteratable or countable.
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
|
||||
|
||||
<element name="extension">
|
||||
<annotation>
|
||||
<appinfo>
|
||||
<meta.element />
|
||||
</appinfo>
|
||||
</annotation>
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element ref="contextPropertiesProvider" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="point" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="id" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="name" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
<appinfo>
|
||||
<meta.attribute translatable="true"/>
|
||||
</appinfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<element name="contextPropertiesProvider">
|
||||
<annotation>
|
||||
<documentation>
|
||||
Declares a terminal context properties provider contribution.
|
||||
</documentation>
|
||||
</annotation>
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element ref="enablement"/>
|
||||
</sequence>
|
||||
<attribute name="class" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
The class that implements <code>org.eclipse.tcf.te.core.terminals.interfaces.ITerminalContextPropertiesProvider</code>.
|
||||
</documentation>
|
||||
<appinfo>
|
||||
<meta.attribute kind="java" basedOn=":org.eclipse.tcf.te.core.terminals.interfaces.ITerminalContextPropertiesProvider"/>
|
||||
</appinfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<annotation>
|
||||
<appinfo>
|
||||
<meta.section type="since"/>
|
||||
</appinfo>
|
||||
<documentation>
|
||||
Target Explorer 1.3.0
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appinfo>
|
||||
<meta.section type="examples"/>
|
||||
</appinfo>
|
||||
<documentation>
|
||||
This is an example of the extension point usage:
|
||||
<p>
|
||||
<pre><code>
|
||||
<extension point="org.eclipse.tcf.te.core.terminals.contextPropertiesProviders">
|
||||
<contextPropertiesProvider
|
||||
class="com.my.contribution.MyContextPropertiesProviderImpl">
|
||||
</contextPropertiesProvider>
|
||||
</extension>
|
||||
</code></pre>
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appinfo>
|
||||
<meta.section type="apiinfo"/>
|
||||
</appinfo>
|
||||
<documentation>
|
||||
The provider of a terminal context properties provider must implement <samp>org.eclipse.tcf.te.core.terminals.interfaces.ITerminalContextPropertiesProvider</samp>.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
|
||||
<annotation>
|
||||
<appinfo>
|
||||
<meta.section type="copyright"/>
|
||||
</appinfo>
|
||||
<documentation>
|
||||
Copyright (c) 2015 Wind River Systems, Inc. and others.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
This program and the accompanying materials are made available under the terms
|
||||
of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
available at http://www.eclipse.org/legal/epl-v10.html.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
</schema>
|
|
@ -0,0 +1,228 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.core.expressions.EvaluationContext;
|
||||
import org.eclipse.core.expressions.EvaluationResult;
|
||||
import org.eclipse.core.expressions.Expression;
|
||||
import org.eclipse.core.expressions.ExpressionConverter;
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IExecutableExtension;
|
||||
import org.eclipse.core.runtime.IExtension;
|
||||
import org.eclipse.core.runtime.IExtensionPoint;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.osgi.util.NLS;
|
||||
import org.eclipse.tcf.te.core.terminals.activator.CoreBundleActivator;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalContextPropertiesProvider;
|
||||
import org.eclipse.tcf.te.core.terminals.nls.Messages;
|
||||
|
||||
/**
|
||||
* Terminal context properties provider factory.
|
||||
*/
|
||||
public final class TerminalContextPropertiesProviderFactory {
|
||||
// Flag to remember if the contributions got loaded
|
||||
private static boolean contributionsLoaded = false;
|
||||
|
||||
// The list of all loaded contributions
|
||||
private static final List<Proxy> contributions = new ArrayList<Proxy>();
|
||||
|
||||
// The proxy used to achieve lazy class loading and plug-in activation
|
||||
private static class Proxy implements IExecutableExtension {
|
||||
// Reference to the configuration element
|
||||
private IConfigurationElement configElement = null;
|
||||
// The class implementing the provider
|
||||
public String clazz;
|
||||
// The context properties provider instance
|
||||
private ITerminalContextPropertiesProvider provider = null;
|
||||
// The converted expression
|
||||
private Expression expression;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
protected Proxy() {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
|
||||
Assert.isNotNull(config);
|
||||
this.configElement = config;
|
||||
|
||||
// Read the class attribute.
|
||||
// Throws an exception if the attribute value is empty or null.
|
||||
clazz = config.getAttribute("class"); //$NON-NLS-1$
|
||||
if (clazz == null || "".equals(clazz.trim())) { //$NON-NLS-1$
|
||||
throw new CoreException(new Status(IStatus.ERROR,
|
||||
CoreBundleActivator.getUniqueIdentifier(),
|
||||
NLS.bind(Messages.Extension_error_missingRequiredAttribute, "class", config.getContributor().getName()))); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
// Read the "enablement" sub element of the extension
|
||||
IConfigurationElement[] children = configElement.getChildren("enablement"); //$NON-NLS-1$
|
||||
if (children == null || children.length == 0) {
|
||||
throw new CoreException(new Status(IStatus.ERROR,
|
||||
CoreBundleActivator.getUniqueIdentifier(),
|
||||
NLS.bind(Messages.Extension_error_missingRequiredAttribute, "enablement", config.getContributor().getName()))); //$NON-NLS-1$
|
||||
}
|
||||
// Only one "enablement" element is expected
|
||||
expression = ExpressionConverter.getDefault().perform(children[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the real terminal context properties provider instance for this proxy.
|
||||
*/
|
||||
protected ITerminalContextPropertiesProvider getProvider() {
|
||||
if (provider == null && configElement != null) {
|
||||
try {
|
||||
// Create the service class instance via the configuration element
|
||||
Object provider = configElement.createExecutableExtension("class"); //$NON-NLS-1$
|
||||
if (provider instanceof ITerminalContextPropertiesProvider) {
|
||||
this.provider = (ITerminalContextPropertiesProvider)provider;
|
||||
}
|
||||
else {
|
||||
IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), "Terminal context properties provider '" + provider.getClass().getName() + "' not of type ITerminalContextPropertiesProvider."); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status);
|
||||
}
|
||||
}
|
||||
catch (CoreException e) {
|
||||
IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), "Cannot create terminal context properties provider '" + clazz + "'.", e); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status);
|
||||
}
|
||||
}
|
||||
return provider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns if or if not the context properties provider contribution is enabled for
|
||||
* the given terminal context.
|
||||
*
|
||||
* @param context The terminal context or <code>null</code>.
|
||||
* @return <code>True</code> if the context properties provider contribution is enabled
|
||||
* for the given terminal context, <code>false</code> otherwise.
|
||||
*/
|
||||
protected boolean isEnabled(Object context) {
|
||||
if (context == null) {
|
||||
return getEnablement() == null;
|
||||
}
|
||||
|
||||
Expression enablement = getEnablement();
|
||||
|
||||
// The service contribution is enabled by default if no expression is specified.
|
||||
boolean enabled = enablement == null;
|
||||
|
||||
if (enablement != null) {
|
||||
// Set the default variable to the service context.
|
||||
EvaluationContext evalContext = new EvaluationContext(null, context);
|
||||
// Allow plug-in activation
|
||||
evalContext.setAllowPluginActivation(true);
|
||||
// Evaluate the expression
|
||||
try {
|
||||
enabled = enablement.evaluate(evalContext).equals(EvaluationResult.TRUE);
|
||||
} catch (CoreException e) {
|
||||
IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), e.getLocalizedMessage(), e);
|
||||
Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status);
|
||||
}
|
||||
}
|
||||
|
||||
return enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the enablement expression.
|
||||
*
|
||||
* @return The enablement expression or <code>null</code>.
|
||||
*/
|
||||
protected Expression getEnablement() {
|
||||
return expression;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new terminal context properties provider proxy instance and initialize it.
|
||||
*
|
||||
* @param config The configuration element. Must not be <code>null</code>.
|
||||
* @return The new terminal context properties provider proxy instance.
|
||||
*/
|
||||
private static Proxy getProxy(IConfigurationElement config) {
|
||||
Assert.isNotNull(config);
|
||||
Proxy proxy = new Proxy();
|
||||
try {
|
||||
proxy.setInitializationData(config, null, null);
|
||||
} catch (CoreException e) {
|
||||
if (Platform.inDebugMode()) {
|
||||
Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(e.getStatus());
|
||||
}
|
||||
}
|
||||
return proxy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the terminal context properties provider contributions.
|
||||
*/
|
||||
private static void loadContributions() {
|
||||
IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.tcf.te.core.terminals.contextPropertiesProviders"); //$NON-NLS-1$
|
||||
if (ep != null) {
|
||||
IExtension[] extensions = ep.getExtensions();
|
||||
if (extensions != null) {
|
||||
for (IExtension extension : extensions) {
|
||||
IConfigurationElement[] configElements = extension.getConfigurationElements();
|
||||
if (configElements != null) {
|
||||
for (IConfigurationElement configElement : configElements) {
|
||||
if ("contextPropertiesProvider".equals(configElement.getName())) { //$NON-NLS-1$
|
||||
Proxy proxy = getProxy(configElement);
|
||||
contributions.add(proxy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the terminal context properties provider for the given context. The first terminal
|
||||
* context properties provider which is enabled is returned.
|
||||
*
|
||||
* @param context The terminal context. Must not be <code>null</code>.
|
||||
*
|
||||
* @return The service or <code>null</code>.
|
||||
*/
|
||||
public static ITerminalContextPropertiesProvider getProvider(Object context) {
|
||||
Assert.isNotNull(context);
|
||||
|
||||
// Load the contributions if not yet loaded
|
||||
synchronized (contributions) {
|
||||
if (!contributionsLoaded) {
|
||||
loadContributions();
|
||||
contributionsLoaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (Proxy proxy : contributions) {
|
||||
if (proxy.isEnabled(context)) {
|
||||
return proxy.getProvider();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals;
|
||||
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.tcf.te.core.terminals.activator.CoreBundleActivator;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService;
|
||||
import org.eclipse.tcf.te.core.terminals.nls.Messages;
|
||||
import org.osgi.framework.Bundle;
|
||||
|
||||
/**
|
||||
* Terminal service factory implementation.
|
||||
* <p>
|
||||
* Provides access to the terminal service instance.
|
||||
*/
|
||||
public final class TerminalServiceFactory {
|
||||
private static ITerminalService instance = null;
|
||||
|
||||
static {
|
||||
// Tries to instantiate the terminal service implementation
|
||||
// from the o.e.tcf.te.ui.terminals bundle
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.tcf.te.ui.terminals"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
try {
|
||||
Class<?> clazz = bundle.loadClass("org.eclipse.tcf.te.ui.terminals.services.TerminalService"); //$NON-NLS-1$
|
||||
instance = (ITerminalService) clazz.newInstance();
|
||||
}
|
||||
catch (Exception e) {
|
||||
if (Platform.inDebugMode()) {
|
||||
Platform.getLog(bundle).log(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), Messages.TerminalServiceFactory_error_serviceImplLoadFailed, e));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the terminal service instance.
|
||||
*/
|
||||
public static ITerminalService getService() {
|
||||
return instance;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.activator;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class CoreBundleActivator implements BundleActivator {
|
||||
// The bundle context
|
||||
private static BundleContext context;
|
||||
|
||||
/**
|
||||
* Returns the bundle context
|
||||
*
|
||||
* @return the bundle context
|
||||
*/
|
||||
public static BundleContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method which returns the unique identifier of this plugin.
|
||||
*/
|
||||
public static String getUniqueIdentifier() {
|
||||
if (getContext() != null && getContext().getBundle() != null) {
|
||||
return getContext().getBundle().getSymbolicName();
|
||||
}
|
||||
return "org.eclipse.tcf.te.core.terminals"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
@Override
|
||||
public void start(BundleContext bundleContext) throws Exception {
|
||||
CoreBundleActivator.context = bundleContext;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
@Override
|
||||
public void stop(BundleContext bundleContext) throws Exception {
|
||||
CoreBundleActivator.context = null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.interfaces;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Terminal context properties provider.
|
||||
* <p>
|
||||
* The context properties provider allows querying desired properties
|
||||
* for a given context. The context is typically an element from a selection
|
||||
* and the inner structure of the element is unknown to the terminal.
|
||||
*/
|
||||
public interface ITerminalContextPropertiesProvider {
|
||||
|
||||
/**
|
||||
* Returns a unmodifiable map containing the target address and port for the given context,
|
||||
* if it can be determined.
|
||||
* <p>
|
||||
* A context may return multiple target addresses and ports if the context can be reached using
|
||||
* different connection methods.
|
||||
* <p>
|
||||
* <b>Note:</b>
|
||||
* <ul>
|
||||
* <li>See the constants defined in the context provider constants interface for default
|
||||
* address and port types.</li>
|
||||
* <li>The target address returned must <b>not</b> necessarily be an IP address.</li>
|
||||
* <li>The values of the address or port properties might be <code>null</code>.</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param context The context to get the target addresses and ports from. Must not be <code>null</code>.
|
||||
* @return The unmodifiable map containing the target addresses and ports, or <code>null</code>.
|
||||
*/
|
||||
public Map<String, String> getTargetAddress(Object context);
|
||||
|
||||
/**
|
||||
* Returns the property value stored under the given property key. If the property does not
|
||||
* exist, <code>null</code> is returned.
|
||||
*
|
||||
* @param context The context to get the property from. Must not be <code>null</code>.
|
||||
* @param key The property key. Must not be <code>null</code>.
|
||||
*
|
||||
* @return The stored property value or <code>null</code>.
|
||||
*/
|
||||
public Object getProperty(Object context, String key);
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011 - 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.interfaces;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
|
||||
/**
|
||||
* Terminals service.
|
||||
*/
|
||||
public interface ITerminalService {
|
||||
|
||||
/**
|
||||
* Client call back interface.
|
||||
*/
|
||||
public interface Done {
|
||||
/**
|
||||
* Called when the terminal service operation is done.
|
||||
*
|
||||
* @param status The status of the terminal service operation.
|
||||
*/
|
||||
public void done(IStatus status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a terminal asynchronously and invokes the given callback if done.
|
||||
*
|
||||
* @param properties The terminal properties. Must not be <code>null</code>.
|
||||
* @param done The callback to invoke if finished or <code>null</code>.
|
||||
*/
|
||||
public void openConsole(Map<String, Object> properties, Done done);
|
||||
|
||||
/**
|
||||
* Close the terminal asynchronously and invokes the given callback if done.
|
||||
*
|
||||
* @param properties The terminal properties. Must not be <code>null</code>.
|
||||
* @param done The callback to invoke if finished or <code>null</code>.
|
||||
*/
|
||||
public void closeConsole(Map<String, Object> properties, Done done);
|
||||
|
||||
/**
|
||||
* Terminate (disconnect) the terminal asynchronously and invokes the given callback if done.
|
||||
*
|
||||
* @param properties The terminal properties. Must not be <code>null</code>.
|
||||
* @param done The callback to invoke if finished or <code>null</code>.
|
||||
*/
|
||||
public void terminateConsole(Map<String, Object> properties, Done done);
|
||||
|
||||
/**
|
||||
* Register the given listener to receive notifications about terminal events.
|
||||
* Calling this method multiple times with the same listener has no effect.
|
||||
|
||||
* @param listener The terminal tab listener. Must not be <code>null</code>.
|
||||
*/
|
||||
public void addTerminalTabListener(ITerminalTabListener listener);
|
||||
|
||||
/**
|
||||
* Unregister the given listener from receiving notifications about terminal
|
||||
* events. Calling this method multiple times with the same listener
|
||||
* has no effect.
|
||||
*
|
||||
* @param listener The terminal tab listener. Must not be <code>null</code>.
|
||||
*/
|
||||
public void removeTerminalTabListener(ITerminalTabListener listener);
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014 - 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.interfaces;
|
||||
|
||||
/**
|
||||
* An interface to be implemented by listeners who want to listen
|
||||
* to the streams data without interfering with the original data receiver.
|
||||
* <p>
|
||||
* Listeners are invoked within the monitor processing thread.
|
||||
*/
|
||||
public interface ITerminalServiceOutputStreamMonitorListener {
|
||||
|
||||
/**
|
||||
* Signals that some content has been read from the monitored stream.
|
||||
*
|
||||
* @param byteBuffer The byte stream. Must not be <code>null</code>.
|
||||
* @param bytesRead The number of bytes that were read into the read buffer.
|
||||
*/
|
||||
public void onContentReadFromStream(byte[] byteBuffer, int bytesRead);
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.interfaces;
|
||||
|
||||
/**
|
||||
* Listener to implement and to register to get notified about
|
||||
* terminal tabs events, like the disposal of a terminal tab.
|
||||
*/
|
||||
public interface ITerminalTabListener {
|
||||
|
||||
/**
|
||||
* Invoked once a terminal tab got disposed. The source object is
|
||||
* the disposed tab item and data is the custom data object associated
|
||||
* with the disposed tab item.
|
||||
*
|
||||
* @param source The disposed tab item. Must not be <code>null</code>.
|
||||
* @param data The custom data object associated with the disposed tab item or <code>null</code>.
|
||||
*/
|
||||
public void terminalTabDisposed(Object source, Object data);
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.interfaces.constants;
|
||||
|
||||
/**
|
||||
* Defines the terminal context properties constants.
|
||||
*/
|
||||
public interface IContextPropertiesConstants {
|
||||
|
||||
/**
|
||||
* Target name.
|
||||
* <p>
|
||||
* The target name is not meant to be identical with the targets network name. It can
|
||||
* be the targets network name, but it can be any other string identifying the target
|
||||
* to the user as well. The name is for display only, it is not meant to be used for
|
||||
* communicating with the target.
|
||||
*/
|
||||
public static String PROP_NAME = "name"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Target agent address.
|
||||
* <p>
|
||||
* <i>The value is typically the address an agent running at the target.</i>
|
||||
*/
|
||||
public static String PROP_ADDRESS = "address"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Target agent port.
|
||||
* <p>
|
||||
* <i>The value is typically the port an agent running at the target.</i>
|
||||
*/
|
||||
public static String PROP_PORT = "port"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The default user name to use to log into the target.
|
||||
*/
|
||||
public static String PROP_DEFAULT_USER = "defaultUser"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The default encoding to use.
|
||||
*/
|
||||
public static String PROP_DEFAULT_ENCODING = "defaultEncoding"; //$NON-NLS-1$
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011 - 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.interfaces.constants;
|
||||
|
||||
/**
|
||||
* Line separator constants.
|
||||
* <p>
|
||||
* Copied from <code>org.eclipse.tcf.internal.terminal.local.ILocalTerminalSettings</code>.
|
||||
*/
|
||||
public interface ILineSeparatorConstants {
|
||||
|
||||
/**
|
||||
* The line separator setting CR (carriage return only; for example, used by Mac OS 9).
|
||||
*/
|
||||
public final static String LINE_SEPARATOR_CR = "\\r"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The line separator setting CRLF (carriage return and line feed; for example, used by
|
||||
* Windows).
|
||||
*/
|
||||
public final static String LINE_SEPARATOR_CRLF = "\\r\\n"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The line separator setting LF (line feed only; used by all UNIX-based systems).
|
||||
*/
|
||||
public final static String LINE_SEPARATOR_LF = "\\n"; //$NON-NLS-1$
|
||||
}
|
|
@ -0,0 +1,322 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011 - 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
* Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.interfaces.constants;
|
||||
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalServiceOutputStreamMonitorListener;
|
||||
|
||||
|
||||
/**
|
||||
* Defines the terminals connector constants.
|
||||
*/
|
||||
public interface ITerminalsConnectorConstants {
|
||||
|
||||
/**
|
||||
* Property: The unique id of the terminals view to open.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_ID = "id"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: The unique secondary id of the terminals view to open.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SECONDARY_ID = "secondaryId"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: The title of the terminal tab to open.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_TITLE = "title"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: The encoding of the terminal tab to open.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_ENCODING = "encoding"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Custom data object to associate with the terminal tab.
|
||||
* <p>
|
||||
* Property Type: {@link Object}
|
||||
*/
|
||||
public static final String PROP_DATA = "data"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: External selection to associate with the terminal tab.
|
||||
* <p>
|
||||
* Property Type: {@link org.eclipse.jface.viewers.ISelection}
|
||||
*/
|
||||
public static final String PROP_SELECTION = "selection"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Flag to force a new terminal tab.
|
||||
* <p>
|
||||
* Property Type: {@link Boolean}
|
||||
*/
|
||||
public static final String PROP_FORCE_NEW = "terminal.forceNew"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Terminals launcher delegate id.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_DELEGATE_ID = "delegateId"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Specific terminal connector type id. Allows clients to
|
||||
* override the specifically used terminal connector
|
||||
* implementation for a given type.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_TERMINAL_CONNECTOR_ID = "tm.terminal.connector.id"; //$NON-NLS-1$
|
||||
|
||||
// ***** Generic terminals connector properties *****
|
||||
|
||||
/**
|
||||
* Property: Timeout to be passed to the terminal connector. The specific terminal
|
||||
* connector implementation may interpret this value differently. If not
|
||||
* set, the terminal connector may use a default value.
|
||||
* <p>
|
||||
* Property Type: {@link Integer}
|
||||
*/
|
||||
public static final String PROP_TIMEOUT = "timeout"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Flag to control if a local echo is needed from the terminal widget.
|
||||
* <p>Typical for process and streams terminals.
|
||||
* <p>
|
||||
* Property Type: {@link Boolean}
|
||||
*/
|
||||
public static final String PROP_LOCAL_ECHO = "localEcho"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Data flag to tell the terminal to not reconnect when hitting enter
|
||||
* in a disconnected terminal.
|
||||
* <p>
|
||||
* Property Type: {@link Boolean}
|
||||
*/
|
||||
public static final String PROP_DATA_NO_RECONNECT = "data.noReconnect"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: The line separator expected by the remote terminal on input streams and
|
||||
* send by the remote terminal on output streams.
|
||||
* <p>Typical for process and streams terminals.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_LINE_SEPARATOR = "lineSeparator"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: The list of stdout listeners to attach to the corresponding stream monitor.
|
||||
* <p>Typical for process and streams terminals.
|
||||
* <p>
|
||||
* Property Type: {@link ITerminalServiceOutputStreamMonitorListener} array
|
||||
*/
|
||||
public static final String PROP_STDOUT_LISTENERS = "stdoutListeners"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: The list of stderr listeners to attach to the corresponding stream monitor.
|
||||
* <p>Typical for process and streams terminals.
|
||||
* <p>
|
||||
* Property Type: {@link ITerminalServiceOutputStreamMonitorListener} array
|
||||
*/
|
||||
public static final String PROP_STDERR_LISTENERS = "stderrListeners"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: If set to <code>true</code>, backslashes are translated to
|
||||
* slashes before pasting the text to the terminal widget.
|
||||
* <p>
|
||||
* Property Type: {@link Boolean}
|
||||
*/
|
||||
public static final String PROP_TRANSLATE_BACKSLASHES_ON_PASTE = "translateBackslashesOnPaste"; //$NON-NLS-1$
|
||||
|
||||
// ***** IP based terminals connector properties *****
|
||||
|
||||
/**
|
||||
* Property: Host name or IP address the terminal server is running.
|
||||
* <p>Typical for telnet or ssh terminals.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_IP_HOST = "ip.host"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Port at which the terminal server is providing the console input and output.
|
||||
* <p>Typical for telnet or ssh terminals.
|
||||
* <p>
|
||||
* Property Type: {@link Integer}
|
||||
*/
|
||||
public static final String PROP_IP_PORT = "ip.port"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: An offset to add to the specified port number.
|
||||
* <p>Typical for telnet or ssh terminals.
|
||||
* <p>
|
||||
* Property Type: {@link Integer}
|
||||
*/
|
||||
public static final String PROP_IP_PORT_OFFSET = "ip.port.offset"; //$NON-NLS-1$
|
||||
|
||||
// ***** Process based terminals connector properties *****
|
||||
|
||||
/**
|
||||
* Property: Process image path.
|
||||
* <p>Typical for process terminals.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_PROCESS_PATH = "process.path"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Process arguments.
|
||||
* <p>Typical for process terminals.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_PROCESS_ARGS = "process.args"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Process arguments.
|
||||
* <p>Typical for process terminals.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_PROCESS_WORKING_DIR = "process.working_dir"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Process environment.
|
||||
* <p>Typical for process terminals.
|
||||
* <p>
|
||||
* Property Type: {@link String} array
|
||||
*/
|
||||
public static final String PROP_PROCESS_ENVIRONMENT = "process.environment"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Flag to merge process environment with native environment.
|
||||
* <p>Typical for process terminals.
|
||||
* <p>
|
||||
* Property Type: {@link Boolean}
|
||||
*/
|
||||
public static final String PROP_PROCESS_MERGE_ENVIRONMENT = "process.environment.merge"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Runtime process instance.
|
||||
* <p>Typical for process terminals.
|
||||
* <p>
|
||||
* Property Type: {@link Process}
|
||||
*/
|
||||
public static final String PROP_PROCESS_OBJ = "process"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Runtime process PTY instance.
|
||||
* <p>Typical for process terminals.
|
||||
* <p>
|
||||
* Property Type: {@link org.eclipse.cdt.utils.pty.PTY}
|
||||
*/
|
||||
public static final String PROP_PTY_OBJ = "pty"; //$NON-NLS-1$
|
||||
|
||||
// ***** Streams based terminals connector properties *****
|
||||
|
||||
/**
|
||||
* Property: Stdin streams instance.
|
||||
* <p>Typical for streams terminals.
|
||||
* <p>
|
||||
* Property Type: {@link OutputStream}
|
||||
*/
|
||||
public static final String PROP_STREAMS_STDIN = "streams.stdin"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Stdout streams instance.
|
||||
* <p>Typical for streams terminals.
|
||||
* <p>
|
||||
* Property Type: {@link InputStream}
|
||||
*/
|
||||
public static final String PROP_STREAMS_STDOUT = "streams.stdout"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Stderr streams instance.
|
||||
* <p>Typical for streams terminals.
|
||||
* <p>
|
||||
* Property Type: {@link InputStream}
|
||||
*/
|
||||
public static final String PROP_STREAMS_STDERR = "streams.stderr"; //$NON-NLS-1$
|
||||
|
||||
// ***** Ssh specific properties *****
|
||||
|
||||
/**
|
||||
* Property: ssh keep alive value.
|
||||
* <p>
|
||||
* Property Type: {@link Integer}
|
||||
*/
|
||||
public static final String PROP_SSH_KEEP_ALIVE = "ssh.keep_alive"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Ssh password.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SSH_PASSWORD = "ssh.password"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Property: Ssh user.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SSH_USER = "ssh.user"; //$NON-NLS-1$
|
||||
|
||||
// ***** Serial specific properties *****
|
||||
|
||||
/**
|
||||
* The serial device name.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SERIAL_DEVICE = "serial.device"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The baud rate.
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SERIAL_BAUD_RATE = "serial.baudrate"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The data bits
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SERIAL_DATA_BITS = "serial.databits"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The parity
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SERIAL_PARITY = "serial.parity"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The stop bits
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SERIAL_STOP_BITS = "serial.stopbits"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The flow control
|
||||
* <p>
|
||||
* Property Type: {@link String}
|
||||
*/
|
||||
public static final String PROP_SERIAL_FLOW_CONTROL = "serial.flowcontrol"; //$NON-NLS-1$
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011, 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.internal;
|
||||
|
||||
import org.eclipse.tcf.te.core.terminals.TerminalContextPropertiesProviderFactory;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Property tester implementation.
|
||||
*/
|
||||
public class PropertyTester extends org.eclipse.core.expressions.PropertyTester {
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
|
||||
|
||||
// "hasContextPropertiesProvider": Checks if a context properties provider is available for the given receiver.
|
||||
if ("hasContextPropertiesProvider".equals(property)) { //$NON-NLS-1$
|
||||
boolean hasProvider = TerminalContextPropertiesProviderFactory.getProvider(receiver) != null;
|
||||
return expectedValue instanceof Boolean ? ((Boolean)expectedValue).equals(Boolean.valueOf(hasProvider)) : hasProvider;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.nls;
|
||||
|
||||
import org.eclipse.osgi.util.NLS;
|
||||
|
||||
/**
|
||||
* Externalized strings management.
|
||||
*/
|
||||
public class Messages extends NLS {
|
||||
|
||||
// The plug-in resource bundle name
|
||||
private static final String BUNDLE_NAME = "org.eclipse.tcf.te.core.terminals.nls.Messages"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Static constructor.
|
||||
*/
|
||||
static {
|
||||
// Load message values from bundle file
|
||||
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
|
||||
}
|
||||
|
||||
// **** Declare externalized string id's down here *****
|
||||
|
||||
public static String TerminalServiceFactory_error_serviceImplLoadFailed;
|
||||
|
||||
public static String Extension_error_missingRequiredAttribute;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
|
||||
TerminalServiceFactory_error_serviceImplLoadFailed=Failed to load terminal service implementation.
|
||||
|
||||
Extension_error_missingRequiredAttribute=Required attribute "{0}" missing for extension "{1}"!
|
||||
|
|
@ -0,0 +1,459 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.preferences;
|
||||
|
||||
import java.io.OutputStream;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.core.runtime.ISafeRunnable;
|
||||
import org.eclipse.core.runtime.ListenerList;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.SafeRunner;
|
||||
import org.eclipse.core.runtime.preferences.DefaultScope;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
|
||||
import org.eclipse.core.runtime.preferences.IPreferenceFilter;
|
||||
import org.eclipse.core.runtime.preferences.IScopeContext;
|
||||
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||
import org.osgi.service.prefs.BackingStoreException;
|
||||
|
||||
/**
|
||||
* Helper class to handle scoped Eclipse preferences for plug-in's. Scoped
|
||||
* preferences means a given preference context plus the default preferences
|
||||
* scope.
|
||||
* <p>
|
||||
* On changes a {@link PreferenceChangeEvent} is sent to inform all listeners of the change.
|
||||
*
|
||||
* @see IEclipsePreferences
|
||||
* @see IEclipsePreferences.PreferenceChangeEvent
|
||||
* @see IEclipsePreferences.IPreferenceChangeListener
|
||||
*/
|
||||
public class ScopedEclipsePreferences {
|
||||
/**
|
||||
* The preferences scope qualifier.
|
||||
*/
|
||||
private final String qualifier;
|
||||
|
||||
/**
|
||||
* The default scope preference node.
|
||||
*/
|
||||
protected final IEclipsePreferences defaultPrefs;
|
||||
|
||||
/**
|
||||
* The context scope preference node.
|
||||
*/
|
||||
protected final IEclipsePreferences contextScopePrefs;
|
||||
|
||||
/**
|
||||
* The registered preference change listeners.
|
||||
*/
|
||||
private final ListenerList listeners = new ListenerList();
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* <p>
|
||||
* Initialize the scoped preferences with a new instance scope for the given qualifier. The default
|
||||
* scope is determined by calling <code>DefaultScope().getNode(qualifier)</code>.
|
||||
*
|
||||
* @param qualifier The qualifier for the preferences (in example the unique identifier of a plugin). Must not be <code>null</code>.
|
||||
*/
|
||||
public ScopedEclipsePreferences(String qualifier) {
|
||||
this(InstanceScope.INSTANCE, qualifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* <p>
|
||||
* Initialize the scoped preferences with the given scope. The default scope
|
||||
* is determined by calling <code>DefaultScope().getNode(qualifier)</code>.
|
||||
*
|
||||
* @param context The preference scope context. Must not be <code>null</code>.
|
||||
* @param qualifier The qualifier for the preferences (in example the unique identifier of a plugin). Must not be <code>null</code>.
|
||||
*/
|
||||
public ScopedEclipsePreferences(IScopeContext context, String qualifier) {
|
||||
Assert.isNotNull(context);
|
||||
Assert.isNotNull(qualifier);
|
||||
this.qualifier = qualifier;
|
||||
defaultPrefs = DefaultScope.INSTANCE.getNode(getQualifier());
|
||||
contextScopePrefs = context.getNode(getQualifier());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the qualifier that is used to get the preferences.
|
||||
* For plugin preferences, this is the unique identifier of the plugin.
|
||||
*/
|
||||
protected final String getQualifier() {
|
||||
return qualifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* Exports the preferences to the stream.
|
||||
* <p>
|
||||
* <b>Note:</b> The stream will be closed after the export.
|
||||
*
|
||||
* @param stream The stream to where preferences and defaults should be exported.
|
||||
*/
|
||||
public void exportPreferences(OutputStream stream) {
|
||||
Assert.isNotNull(stream);
|
||||
try {
|
||||
IPreferenceFilter filter = new IPreferenceFilter() {
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.core.runtime.preferences.IPreferenceFilter#getScopes()
|
||||
*/
|
||||
@Override
|
||||
public String[] getScopes() {
|
||||
return new String[] { InstanceScope.SCOPE };
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.core.runtime.preferences.IPreferenceFilter#getMapping(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public Map getMapping(String scope) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
Platform.getPreferencesService().exportPreferences(contextScopePrefs, new IPreferenceFilter[] { filter }, stream);
|
||||
stream.close();
|
||||
}
|
||||
catch (Exception e) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a key is set or not.
|
||||
*
|
||||
* @param key The key to check.
|
||||
* @return <code>null</code> if the key does not exist.
|
||||
*/
|
||||
public boolean containsKey(String key) {
|
||||
return Platform.getPreferencesService().getString(getQualifier(), key, null, null) != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a String preference value.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The value of the preference key or the default value if not set.
|
||||
*/
|
||||
public final String getString(String key) {
|
||||
return Platform.getPreferencesService().getString(getQualifier(), key, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a boolean preference value.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The value of the preference key or the default value if not set.
|
||||
*/
|
||||
public final boolean getBoolean(String key) {
|
||||
return Platform.getPreferencesService().getBoolean(getQualifier(), key, false, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an int preference value.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The value of the preference key or the default value if not set.
|
||||
*/
|
||||
public final int getInt(String key) {
|
||||
return Platform.getPreferencesService().getInt(getQualifier(), key, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a long preference value.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The value of the preference key or the default value if not set.
|
||||
*/
|
||||
public final long getLong(String key) {
|
||||
return Platform.getPreferencesService().getLong(getQualifier(), key, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a default String preference value.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The default value of the preference key or <code>null</code>.
|
||||
*/
|
||||
public final String getDefaultString(String key) {
|
||||
return defaultPrefs.get(key, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a default boolean preference value.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The default value of the preference key or <code>null</code>.
|
||||
*/
|
||||
public final boolean getDefaultBoolean(String key) {
|
||||
return defaultPrefs.getBoolean(key, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a default int preference value.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The default value of the preference key or <code>null</code>.
|
||||
*/
|
||||
public final int getDefaultInt(String key) {
|
||||
return defaultPrefs.getInt(key, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a default long preference value.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The default value of the preference key or <code>null</code>.
|
||||
*/
|
||||
public final long getDefaultLong(String key) {
|
||||
return defaultPrefs.getLong(key, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a String preference value. If the value is <code>null</code> or is equal to
|
||||
* the default value, the entry will be removed.
|
||||
* <p>
|
||||
* A {@link PreferenceChangeEvent} is fired, if the value has changed.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The value of the preference key.
|
||||
*/
|
||||
public void putString(String key, String value) {
|
||||
String defValue = defaultPrefs.get(key, null);
|
||||
String instValue = getString(key);
|
||||
if (value == null || value.equals(defValue)) {
|
||||
contextScopePrefs.remove(key);
|
||||
flushAndNotify(contextScopePrefs, key, instValue, defValue);
|
||||
}
|
||||
else if (!value.equals(instValue)) {
|
||||
contextScopePrefs.put(key, value);
|
||||
flushAndNotify(contextScopePrefs, key, instValue, value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a boolean preference value. If the value is equal the default value,
|
||||
* the entry will be removed.
|
||||
* <p>
|
||||
* A {@link PreferenceChangeEvent} is fired, if the value has changed.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The value of the preference key.
|
||||
*/
|
||||
public void putBoolean(String key, boolean value) {
|
||||
boolean defValue = defaultPrefs.getBoolean(key, false);
|
||||
boolean instValue = getBoolean(key);
|
||||
if (value == defValue) {
|
||||
contextScopePrefs.remove(key);
|
||||
flushAndNotify(contextScopePrefs, key, Boolean.toString(instValue), Boolean.toString(defValue));
|
||||
}
|
||||
else if (value != instValue) {
|
||||
contextScopePrefs.putBoolean(key, value);
|
||||
flushAndNotify(contextScopePrefs, key, Boolean.toString(instValue), Boolean.toString(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set an int preference value. If the value is equal to the default value,
|
||||
* the entry will be removed.
|
||||
* <p>
|
||||
* A {@link PreferenceChangeEvent} is fired, if the value has changed. The old
|
||||
* and new values are string representation in base 10.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The value of the preference key.
|
||||
*/
|
||||
public void putInt(String key, int value) {
|
||||
int defValue = defaultPrefs.getInt(key, 0);
|
||||
int instValue = getInt(key);
|
||||
if (value == defValue) {
|
||||
contextScopePrefs.remove(key);
|
||||
flushAndNotify(contextScopePrefs, key, Integer.toString(instValue), Integer.toString(defValue));
|
||||
}
|
||||
else if (value != instValue) {
|
||||
contextScopePrefs.putInt(key, value);
|
||||
flushAndNotify(contextScopePrefs, key, Integer.toString(instValue), Integer.toString(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a long preference value. If the given value is equal to the default
|
||||
* value, the entry will be removed.
|
||||
* <p>
|
||||
* A {@link PreferenceChangeEvent} is fired, if the value has changed. The old
|
||||
* and new values are string representation in base 10.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The value of the preference key.
|
||||
*/
|
||||
public void putLong(String key, long value) {
|
||||
long defValue = defaultPrefs.getLong(key, 0);
|
||||
long instValue = getLong(key);
|
||||
if (value == defValue) {
|
||||
contextScopePrefs.remove(key);
|
||||
flushAndNotify(contextScopePrefs, key, Long.toString(instValue), Long.toString(defValue));
|
||||
}
|
||||
else if (value != instValue) {
|
||||
contextScopePrefs.putLong(key, value);
|
||||
flushAndNotify(contextScopePrefs, key, Long.toString(instValue), Long.toString(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a default String preference value. If the given value is <code>null</code>,
|
||||
* the entry will be removed.
|
||||
* <p>
|
||||
* A {@link PreferenceChangeEvent} is fired, if the value has changed.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The default value of the preference key.
|
||||
*/
|
||||
public void putDefaultString(String key, String value) {
|
||||
String defValue = defaultPrefs.get(key, null);
|
||||
if (value == null) {
|
||||
defaultPrefs.remove(key);
|
||||
flushAndNotify(defaultPrefs, key, defValue, null);
|
||||
}
|
||||
else if (!value.equals(defValue)) {
|
||||
defaultPrefs.put(key, value);
|
||||
flushAndNotify(defaultPrefs, key, defValue, value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a default boolean preference value.
|
||||
* <p>
|
||||
* A {@link PreferenceChangeEvent} is fired, if the value has changed.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The default value of the preference key.
|
||||
*/
|
||||
public void putDefaultBoolean(String key, boolean value) {
|
||||
boolean defValue = defaultPrefs.getBoolean(key, false);
|
||||
if (value != defValue) {
|
||||
defaultPrefs.putBoolean(key, value);
|
||||
flushAndNotify(defaultPrefs, key, Boolean.toString(defValue), Boolean.toString(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a default int preference value.
|
||||
* <p>
|
||||
* A {@link PreferenceChangeEvent} is fired, if the value has changed. The old
|
||||
* and new values are string representation in base 10.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The default value of the preference key.
|
||||
*/
|
||||
public void putDefaultInt(String key, int value) {
|
||||
int defValue = defaultPrefs.getInt(key, 0);
|
||||
if (value != defValue) {
|
||||
defaultPrefs.putInt(key, value);
|
||||
flushAndNotify(defaultPrefs, key, Integer.toString(defValue), Integer.toString(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a default long preference value.
|
||||
* <p>
|
||||
* A {@link PreferenceChangeEvent} is fired, if the value has changed. The old
|
||||
* and new values are string representation in base 10.
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @return The default value of the preference key.
|
||||
*/
|
||||
public void putDefaultLong(String key, long value) {
|
||||
long defValue = defaultPrefs.getLong(key, 0);
|
||||
if (value != defValue) {
|
||||
defaultPrefs.putLong(key, value);
|
||||
flushAndNotify(defaultPrefs, key, Long.toString(defValue), Long.toString(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write back the changes to the store and notify all listeners about the changed key.
|
||||
*
|
||||
* @param node The preference node which has changed. Must not be <code>null</code>.
|
||||
* @param key The key of the changed preference. Must not be <code>null</code>.
|
||||
* @param oldValue The old value as a {@link String}, or <code>null</code>.
|
||||
* @param newValue The new value as a {@link String}, or <code>null</code>.
|
||||
*/
|
||||
protected final void flushAndNotify(IEclipsePreferences node, String key, String oldValue, String newValue) {
|
||||
// Flush the preferences to the persistence store
|
||||
try { node.flush(); } catch (BackingStoreException e) { /* Ignored on purpose */ }
|
||||
|
||||
// Notify the listeners
|
||||
firePreferenceEvent(node, key, oldValue, newValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the given listener to receive notifications of preference changes to this node.
|
||||
* Calling this method multiple times with the same listener has no effect. The given listener
|
||||
* argument must not be <code>null</code>.
|
||||
*
|
||||
* @param listener The preference change listener. Must not be <code>null</code>.
|
||||
*/
|
||||
public void addPreferenceChangeListener(IPreferenceChangeListener listener) {
|
||||
Assert.isNotNull(listener);
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* De-register the given listener from receiving notifications of preference changes
|
||||
* to this node. Calling this method multiple times with the same listener has no
|
||||
* effect. The given listener argument must not be <code>null</code>.
|
||||
*
|
||||
* @param listener The preference change listener. Must not be <code>null</code>.
|
||||
*/
|
||||
public void removePreferenceChangeListener(IPreferenceChangeListener listener) {
|
||||
Assert.isNotNull(listener);
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method for notifying the registered preference change listeners.
|
||||
*
|
||||
* @param node The preference node which has changed. Must not be <code>null</code>.
|
||||
* @param key The key of the changed preference. Must not be <code>null</code>.
|
||||
* @param oldValue The old value as a {@link String}, or <code>null</code>.
|
||||
* @param newValue The new value as a {@link String}, or <code>null</code>.
|
||||
*/
|
||||
protected void firePreferenceEvent(IEclipsePreferences node, String key, String oldValue, String newValue) {
|
||||
Assert.isNotNull(node);
|
||||
Assert.isNotNull(key);
|
||||
|
||||
// If no listener is registered, we are done here
|
||||
if (listeners.isEmpty()) return;
|
||||
|
||||
// Get the list or currently registered listeners
|
||||
Object[] l = listeners.getListeners();
|
||||
// Create the preference change event
|
||||
final PreferenceChangeEvent event = new PreferenceChangeEvent(node, key, oldValue, newValue);
|
||||
for (int i = 0; i < l.length; i++) {
|
||||
final IPreferenceChangeListener listener = (IPreferenceChangeListener) l[i];
|
||||
ISafeRunnable job = new ISafeRunnable() {
|
||||
@Override
|
||||
public void handleException(Throwable exception) {
|
||||
// already logged in Platform#run()
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() throws Exception {
|
||||
listener.preferenceChange(event);
|
||||
}
|
||||
};
|
||||
SafeRunner.run(job);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,295 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.tracing;
|
||||
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.tcf.te.core.terminals.activator.CoreBundleActivator;
|
||||
|
||||
/**
|
||||
* Helper class to handle tracing using the platforms debug capabilities.
|
||||
*/
|
||||
public class TraceHandler {
|
||||
/**
|
||||
* The bundle identifier.
|
||||
*/
|
||||
private final String identifier;
|
||||
|
||||
/**
|
||||
* The tracer instance.
|
||||
*/
|
||||
private Tracer tracer = null;
|
||||
|
||||
/**
|
||||
* The tracer is responsible for writing the trace message to the desired
|
||||
* output media.
|
||||
*/
|
||||
protected static class Tracer {
|
||||
|
||||
/**
|
||||
* The bundle identifier.
|
||||
*/
|
||||
private final String fIdentifier;
|
||||
|
||||
/**
|
||||
* The qualifier for the default "<bundle identifier>/debugmode"
|
||||
* tracing slot.
|
||||
*/
|
||||
private final String fDebugModeQualifier;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param identifier The bundle identifier. Must not be <code>null</code>.
|
||||
*/
|
||||
public Tracer(String identifier) {
|
||||
Assert.isNotNull(identifier);
|
||||
fIdentifier = identifier;
|
||||
|
||||
// Initialize the debug mode qualifier
|
||||
fDebugModeQualifier = fIdentifier + "/debugmode"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the debug mode tracing slot.
|
||||
* <p>
|
||||
* If not set, or the value is not an {@link Integer}, the method returns <code>0</code>.
|
||||
*
|
||||
* @return The debug mode value.
|
||||
*/
|
||||
protected int getDebugMode() {
|
||||
try {
|
||||
String mode = Platform.getDebugOption(fDebugModeQualifier);
|
||||
if (mode != null && Integer.decode(mode).intValue() > 0) {
|
||||
return Integer.decode(mode).intValue();
|
||||
}
|
||||
} catch (NumberFormatException e) { /* ignored on purpose */ }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the specified trace slot is enabled.
|
||||
*
|
||||
* @param slotId The name of the slot.
|
||||
* @return <code>true</code> if the slot is defined and enabled, <code>false</code> otherwise.
|
||||
*/
|
||||
protected boolean isSlotEnabled(String slotId) {
|
||||
return fIdentifier != null ? Boolean.parseBoolean(Platform.getDebugOption(fIdentifier + "/" + slotId)) : false; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if tracing is enabled for given mode and slot.
|
||||
*
|
||||
* @param debugMode The debug mode for the current debug.
|
||||
* @param slotId The name of the slot.
|
||||
*
|
||||
* @return <code>true</code> if the debug should be written, <code>false</code> otherwise.
|
||||
*/
|
||||
protected final boolean isEnabled(int debugMode, String slotId) {
|
||||
return getDebugMode() < 0 ||
|
||||
(debugMode <= getDebugMode() &&
|
||||
(slotId == null || slotId.trim().length() == 0 || isSlotEnabled(slotId)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Format the trace message.
|
||||
*
|
||||
* @param message The trace message.
|
||||
* @param debugMode The debug mode.
|
||||
* @param slotId The name of the slot.
|
||||
* @param severity The severity. See {@link IStatus} for valid severity values.
|
||||
* @param clazz The class that calls this tracer.
|
||||
*
|
||||
* @see IStatus
|
||||
*/
|
||||
protected String getFormattedDebugMessage(String message, int debugMode, String slotId, int severity, Object clazz) {
|
||||
StringBuffer debug = new StringBuffer();
|
||||
if (slotId != null || clazz != null) {
|
||||
if (clazz != null) {
|
||||
String name = clazz instanceof Class<?> ? ((Class<?>)clazz).getSimpleName() : clazz.getClass().getSimpleName();
|
||||
debug.append(name.trim().length() > 0 ? name.trim() : clazz instanceof Class<?> ? ((Class<?>)clazz).getName() : clazz.getClass().getName());
|
||||
}
|
||||
if (slotId != null) {
|
||||
debug.append(" at "); //$NON-NLS-1$
|
||||
debug.append(slotId);
|
||||
}
|
||||
if (debugMode >= 0) {
|
||||
debug.append(" (Mode "); //$NON-NLS-1$
|
||||
debug.append(debugMode);
|
||||
debug.append(')');
|
||||
}
|
||||
debug.append('\n');
|
||||
debug.append('\t');
|
||||
}
|
||||
debug.append(message);
|
||||
|
||||
return debug.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the trace message.
|
||||
*
|
||||
* @param message The trace message.
|
||||
* @param debugMode The debug mode.
|
||||
* @param slotId The name of the slot.
|
||||
* @param severity The severity. See {@link IStatus} for valid severity values.
|
||||
* @param clazz The class that calls this tracer.
|
||||
*
|
||||
* @see IStatus
|
||||
*/
|
||||
protected void write(String message, int debugMode, String slotId, int severity, Object clazz) {
|
||||
String formattedMessage = getFormattedDebugMessage(message, debugMode, slotId, severity, clazz);
|
||||
if (severity == IStatus.ERROR || severity == IStatus.WARNING) {
|
||||
System.err.println(formattedMessage);
|
||||
}
|
||||
else {
|
||||
System.out.println(formattedMessage);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace the given message with the given debug mode and slot.
|
||||
*
|
||||
* @param message The trace message.
|
||||
* @param debugMode The debug mode.
|
||||
* @param slotId The name of the slot.
|
||||
* @param severity The severity. See {@link IStatus} for valid severity values.
|
||||
* @param clazz The class that calls this tracer.
|
||||
*
|
||||
* @see IStatus
|
||||
*/
|
||||
public final void trace(String message, int debugMode, String slotId, int severity, Object clazz) {
|
||||
if (isEnabled(debugMode, slotId)) {
|
||||
write(message, debugMode, slotId, severity, clazz);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* <p>
|
||||
* Initializes the tracing handler with the given bundle identifier.
|
||||
*
|
||||
* @param identifier The bundle identifier or <code>null</code>.
|
||||
*/
|
||||
public TraceHandler(String identifier) {
|
||||
this.identifier = identifier != null ? identifier : CoreBundleActivator.getUniqueIdentifier();
|
||||
Assert.isNotNull(this.identifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the identifier.
|
||||
*/
|
||||
protected final String getIdentifier() {
|
||||
return identifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the tracer instance. Create a new tracer instance
|
||||
* on first invocation.
|
||||
*
|
||||
* @return The tracer instance.
|
||||
*/
|
||||
protected Tracer getTracer() {
|
||||
if (tracer == null) {
|
||||
tracer = new Tracer(identifier);
|
||||
}
|
||||
return tracer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current debug mode.
|
||||
*/
|
||||
public final int getDebugMode() {
|
||||
return getTracer().getDebugMode();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a trace slot is enabled. The debug mode defaults
|
||||
* to 0.
|
||||
*
|
||||
* @param slotId The name of the slot.
|
||||
*
|
||||
* @return <code>true</code> if the slot is enabled, <code>false</code> otherwise.
|
||||
*/
|
||||
public final boolean isSlotEnabled(String slotId) {
|
||||
return isSlotEnabled(0, slotId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a trace slot is enabled with the given debug mode.
|
||||
*
|
||||
* @param debugMode The debug mode
|
||||
* @param slotId The name of the slot.
|
||||
*
|
||||
* @return <code>true</code> if the slot is enabled, <code>false</code> otherwise.
|
||||
*/
|
||||
public final boolean isSlotEnabled(int debugMode, String slotId) {
|
||||
return getTracer().isEnabled(debugMode, slotId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace the given message.
|
||||
* <p>
|
||||
* The message severity will be {@link IStatus#INFO} and the message will be
|
||||
* traced unconditionally.
|
||||
*
|
||||
* @param message The message.
|
||||
* @param clazz The class that calls this tracer or <code>null</code>.
|
||||
*/
|
||||
public final void trace(String message, Object clazz) {
|
||||
getTracer().trace(message, 0, null, IStatus.INFO, clazz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace the given message.
|
||||
* <p>
|
||||
* The message severity will be {@link IStatus#INFO}.
|
||||
*
|
||||
* @param message The message.
|
||||
* @param debugMode The minimum debug mode that has to be set to write out the message.
|
||||
* @param clazz The class that calls this tracer or <code>null</code>.
|
||||
*/
|
||||
public final void trace(String message, int debugMode, Object clazz) {
|
||||
getTracer().trace(message, debugMode, null, IStatus.INFO, clazz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace the given message.
|
||||
* <p>
|
||||
* The message severity will be {@link IStatus#INFO} and the debug mode
|
||||
* will default to <code>0</code>.
|
||||
*
|
||||
* @param message The message.
|
||||
* @param slotId The slot that has to be enabled to write out the message.
|
||||
* @param clazz The class that calls this tracer or <code>null</code>.
|
||||
*/
|
||||
public final void trace(String message, String slotId, Object clazz) {
|
||||
getTracer().trace(message, 0, slotId, IStatus.INFO, clazz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace the given message.
|
||||
*
|
||||
* @param message The message.
|
||||
* @param debugMode The minimum debug mode that has to be set to write out the message.
|
||||
* @param slotId The slot that has to be enabled to write out the message.
|
||||
* @param severity The severity. See {@link IStatus} for valid severity values.
|
||||
* @param clazz The class that calls this tracer or <code>null</code>.
|
||||
*
|
||||
* @see IStatus
|
||||
*/
|
||||
public final void trace(String message, int debugMode, String slotId, int severity, Object clazz) {
|
||||
getTracer().trace(message, debugMode, slotId, severity, clazz);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,231 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2013, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.core.terminals.utils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.osgi.service.environment.Constants;
|
||||
|
||||
/**
|
||||
* Environment handling utility methods.
|
||||
*/
|
||||
public class Env {
|
||||
|
||||
// Reference to the monitor to lock if determining the native environment
|
||||
private final static Object ENV_GET_MONITOR = new Object();
|
||||
|
||||
// Reference to the native environment with the case of the variable names preserved
|
||||
private static Map<String, String> nativeEnvironmentCasePreserved = null;
|
||||
|
||||
/**
|
||||
* Returns the merged environment of the native environment and the passed
|
||||
* in environment. Passed in variables will overwrite the native environment
|
||||
* if the same variables are set there.
|
||||
* <p>
|
||||
* For use with terminals, the parameter <code>terminal</code> should be set to
|
||||
* <code>true</code>. In this case, the method will assure that the <code>TERM</code>
|
||||
* environment variable is always set to <code>ANSI</code> and is not overwritten
|
||||
* by the passed in environment.
|
||||
*
|
||||
* @param envp The environment to set on top of the native environment or <code>null</code>.
|
||||
* @param terminal <code>True</code> if used with an terminal, <code>false</code> otherwise.
|
||||
*
|
||||
* @return The merged environment.
|
||||
*/
|
||||
public static String[] getEnvironment(String[] envp, boolean terminal) {
|
||||
// Get the cached native environment
|
||||
Map<String, String> nativeEnv = getNativeEnvironmentCasePreserved();
|
||||
// Make a copy of the native environment so it can be manipulated without changing
|
||||
// the cached environment
|
||||
Map<String, String> env = new LinkedHashMap<String, String>(nativeEnv);
|
||||
// Set the TERM environment variable if in terminal mode
|
||||
if (terminal) env.put("TERM", "xterm"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
||||
// On Windows, the environment variable names are not case-sensitive. However,
|
||||
// we desire to preserve the original case. Build up a translation map between
|
||||
// an all lowercase name and the original environment name
|
||||
Map<String, String> k2n = null;
|
||||
if (Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
k2n = new HashMap<String, String>();
|
||||
for (String name : env.keySet()) {
|
||||
k2n.put(name.toLowerCase(), name);
|
||||
}
|
||||
}
|
||||
|
||||
// If a "local" environment is provided, merge it with the native
|
||||
// environment.
|
||||
if (envp != null) {
|
||||
for (int i = 0; i < envp.length; i++) {
|
||||
// The full provided variable in form "name=value"
|
||||
String envpPart = envp[i];
|
||||
// Split the variable
|
||||
String[] parts = envpPart.split("=");//$NON-NLS-1$
|
||||
String name = parts[0].trim();
|
||||
// Map the variable name to the real environment name (Windows only)
|
||||
if (Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
if (k2n.containsKey(name.toLowerCase())) {
|
||||
String candidate = k2n.get(name.toLowerCase());
|
||||
Assert.isNotNull(candidate);
|
||||
name = candidate;
|
||||
}
|
||||
// Filter out environment variables with bad names
|
||||
if ("".equals(name.trim()) || name.contains("=") || name.contains(":")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// Get the variable value
|
||||
String value = parts.length > 1 ? parts[1].trim() : ""; //$NON-NLS-1$
|
||||
// Don't overwrite the TERM variable if in terminal mode
|
||||
if (terminal && "TERM".equals(name)) continue; //$NON-NLS-1$
|
||||
// If a variable with the name does not exist, just append it
|
||||
if (!env.containsKey(name) && !"<unset>".equals(value)) { //$NON-NLS-1$
|
||||
env.put(name, value);
|
||||
} else if (env.containsKey(name)) {
|
||||
// If the value contains the special placeholder "<unset>", remove the variable from the environment
|
||||
if ("<unset>".equals(value)) {//$NON-NLS-1$
|
||||
env.remove(name);
|
||||
} else {
|
||||
// A variable with the name already exist, check if the value is different
|
||||
String oldValue = env.get(name);
|
||||
if (oldValue != null && !oldValue.equals(value) || oldValue == null && value != null) {
|
||||
env.put(name, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Convert into an array of strings
|
||||
List<String> keys = new ArrayList<String>(env.keySet());
|
||||
// On Windows hosts, sort the environment keys
|
||||
if (Platform.OS_WIN32.equals(Platform.getOS())) Collections.sort(keys);
|
||||
Iterator<String> iter = keys.iterator();
|
||||
List<String> strings = new ArrayList<String>(env.size());
|
||||
StringBuilder buffer = null;
|
||||
while (iter.hasNext()) {
|
||||
String key = iter.next();
|
||||
buffer = new StringBuilder(key);
|
||||
buffer.append('=').append(env.get(key));
|
||||
strings.add(buffer.toString());
|
||||
}
|
||||
|
||||
return strings.toArray(new String[strings.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the native environment.
|
||||
*
|
||||
* @return The native environment, or an empty map.
|
||||
*/
|
||||
private static Map<String, String> getNativeEnvironmentCasePreserved() {
|
||||
synchronized (ENV_GET_MONITOR) {
|
||||
if (nativeEnvironmentCasePreserved == null) {
|
||||
nativeEnvironmentCasePreserved = new LinkedHashMap<String, String>();
|
||||
cacheNativeEnvironment(nativeEnvironmentCasePreserved);
|
||||
}
|
||||
return new LinkedHashMap<String, String>(nativeEnvironmentCasePreserved);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the native environment and store it to the specified cache.
|
||||
*
|
||||
* @param cache The environment cache. Must not be <code>null</code>.
|
||||
*/
|
||||
private static void cacheNativeEnvironment(Map<String, String> cache) {
|
||||
Assert.isNotNull(cache);
|
||||
|
||||
try {
|
||||
String nativeCommand = null;
|
||||
if (Platform.getOS().equals(Constants.OS_WIN32)) {
|
||||
nativeCommand = "cmd.exe /C set"; //$NON-NLS-1$
|
||||
} else if (!Platform.getOS().equals(Constants.OS_UNKNOWN)) {
|
||||
nativeCommand = "env"; //$NON-NLS-1$
|
||||
}
|
||||
if (nativeCommand == null) { return; }
|
||||
Process process = Runtime.getRuntime().exec(nativeCommand);
|
||||
|
||||
// read process directly on other platforms
|
||||
// we need to parse out matching '{' and '}' for function declarations in .bash environments
|
||||
// pattern is [function name]=() { and we must find the '}' on its own line with no trailing ';'
|
||||
InputStream stream = process.getInputStream();
|
||||
InputStreamReader isreader = new InputStreamReader(stream);
|
||||
BufferedReader reader = new BufferedReader(isreader);
|
||||
try {
|
||||
String line = reader.readLine();
|
||||
String key = null;
|
||||
String value = null;
|
||||
while (line != null) {
|
||||
int func = line.indexOf("=()"); //$NON-NLS-1$
|
||||
if (func > 0) {
|
||||
key = line.substring(0, func);
|
||||
// scan until we find the closing '}' with no following chars
|
||||
value = line.substring(func + 1);
|
||||
while (line != null && !line.equals("}")) { //$NON-NLS-1$
|
||||
line = reader.readLine();
|
||||
if (line != null) {
|
||||
value += line;
|
||||
}
|
||||
}
|
||||
line = reader.readLine();
|
||||
} else {
|
||||
int separator = line.indexOf('=');
|
||||
if (separator > 0) {
|
||||
key = line.substring(0, separator);
|
||||
value = line.substring(separator + 1);
|
||||
StringBuilder bufValue = new StringBuilder(value);
|
||||
line = reader.readLine();
|
||||
if (line != null) {
|
||||
// this line has a '=' read ahead to check next line for '=', might be broken on more
|
||||
// than one line
|
||||
separator = line.indexOf('=');
|
||||
while (separator < 0) {
|
||||
bufValue.append(line.trim());
|
||||
line = reader.readLine();
|
||||
if (line == null) {
|
||||
// if next line read is the end of the file quit the loop
|
||||
break;
|
||||
}
|
||||
separator = line.indexOf('=');
|
||||
}
|
||||
}
|
||||
value = bufValue.toString();
|
||||
}
|
||||
}
|
||||
if (key != null) {
|
||||
cache.put(key, value);
|
||||
key = null;
|
||||
value = null;
|
||||
} else {
|
||||
line = reader.readLine();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
reader.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// Native environment-fetching code failed.
|
||||
// This can easily happen and is not useful to log.
|
||||
}
|
||||
}
|
||||
|
||||
}
|
BIN
plugins/org.eclipse.tcf.te.core.terminals/te-feature.png
Normal file
BIN
plugins/org.eclipse.tcf.te.core.terminals/te-feature.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
7
plugins/org.eclipse.tcf.te.ui.terminals.local/.classpath
Normal file
7
plugins/org.eclipse.tcf.te.ui.terminals.local/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
1
plugins/org.eclipse.tcf.te.ui.terminals.local/.options
Normal file
1
plugins/org.eclipse.tcf.te.ui.terminals.local/.options
Normal file
|
@ -0,0 +1 @@
|
|||
org.eclipse.tcf.te.ui.terminals.local/debugmode = 0
|
39
plugins/org.eclipse.tcf.te.ui.terminals.local/.project
Normal file
39
plugins/org.eclipse.tcf.te.ui.terminals.local/.project
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.tcf.te.ui.terminals.local</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>0</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-target</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
|
@ -0,0 +1,362 @@
|
|||
#Tue Oct 11 11:53:38 CEST 2011
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.autoboxing=warning
|
||||
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deadCode=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
|
||||
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
|
||||
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
|
||||
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
|
||||
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
|
||||
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
|
||||
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nullReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
|
||||
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
|
||||
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
|
||||
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
|
||||
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
|
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_header=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_html=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_source_code=true
|
||||
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
|
||||
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
|
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
|
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
|
||||
org.eclipse.jdt.core.formatter.comment.line_length=100
|
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
|
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
|
||||
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
|
||||
org.eclipse.jdt.core.formatter.compact_else_if=true
|
||||
org.eclipse.jdt.core.formatter.continuation_indentation=4
|
||||
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=4
|
||||
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
|
||||
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
|
||||
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||
org.eclipse.jdt.core.formatter.indent_empty_lines=false
|
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
|
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
|
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||
org.eclipse.jdt.core.formatter.indentation.size=4
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
|
||||
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
|
||||
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=true
|
||||
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true
|
||||
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=true
|
||||
org.eclipse.jdt.core.formatter.lineSplit=100
|
||||
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
|
||||
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
|
||||
org.eclipse.jdt.core.formatter.tabulation.char=tab
|
||||
org.eclipse.jdt.core.formatter.tabulation.size=4
|
||||
org.eclipse.jdt.core.formatter.use_on_off_tags=false
|
||||
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
|
||||
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
|
|
@ -0,0 +1,56 @@
|
|||
eclipse.preferences.version=1
|
||||
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
|
||||
formatter_profile=_Target Explorer Java STD
|
||||
formatter_settings_version=12
|
||||
sp_cleanup.add_default_serial_version_id=true
|
||||
sp_cleanup.add_generated_serial_version_id=false
|
||||
sp_cleanup.add_missing_annotations=true
|
||||
sp_cleanup.add_missing_deprecated_annotations=true
|
||||
sp_cleanup.add_missing_methods=false
|
||||
sp_cleanup.add_missing_nls_tags=false
|
||||
sp_cleanup.add_missing_override_annotations=true
|
||||
sp_cleanup.add_missing_override_annotations_interface_methods=true
|
||||
sp_cleanup.add_serial_version_id=false
|
||||
sp_cleanup.always_use_blocks=true
|
||||
sp_cleanup.always_use_parentheses_in_expressions=false
|
||||
sp_cleanup.always_use_this_for_non_static_field_access=false
|
||||
sp_cleanup.always_use_this_for_non_static_method_access=false
|
||||
sp_cleanup.convert_to_enhanced_for_loop=false
|
||||
sp_cleanup.correct_indentation=false
|
||||
sp_cleanup.format_source_code=false
|
||||
sp_cleanup.format_source_code_changes_only=false
|
||||
sp_cleanup.make_local_variable_final=false
|
||||
sp_cleanup.make_parameters_final=false
|
||||
sp_cleanup.make_private_fields_final=true
|
||||
sp_cleanup.make_type_abstract_if_missing_method=false
|
||||
sp_cleanup.make_variable_declarations_final=false
|
||||
sp_cleanup.never_use_blocks=false
|
||||
sp_cleanup.never_use_parentheses_in_expressions=true
|
||||
sp_cleanup.on_save_use_additional_actions=true
|
||||
sp_cleanup.organize_imports=true
|
||||
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
|
||||
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
|
||||
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
|
||||
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
|
||||
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
|
||||
sp_cleanup.remove_private_constructors=true
|
||||
sp_cleanup.remove_trailing_whitespaces=true
|
||||
sp_cleanup.remove_trailing_whitespaces_all=true
|
||||
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
|
||||
sp_cleanup.remove_unnecessary_casts=true
|
||||
sp_cleanup.remove_unnecessary_nls_tags=true
|
||||
sp_cleanup.remove_unused_imports=true
|
||||
sp_cleanup.remove_unused_local_variables=false
|
||||
sp_cleanup.remove_unused_private_fields=true
|
||||
sp_cleanup.remove_unused_private_members=false
|
||||
sp_cleanup.remove_unused_private_methods=true
|
||||
sp_cleanup.remove_unused_private_types=true
|
||||
sp_cleanup.sort_members=false
|
||||
sp_cleanup.sort_members_all=false
|
||||
sp_cleanup.use_blocks=false
|
||||
sp_cleanup.use_blocks_only_for_return_and_throw=false
|
||||
sp_cleanup.use_parentheses_in_expressions=false
|
||||
sp_cleanup.use_this_for_non_static_field_access=false
|
||||
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
|
||||
sp_cleanup.use_this_for_non_static_method_access=false
|
||||
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
|
|
@ -0,0 +1,32 @@
|
|||
compilers.f.unresolved-features=1
|
||||
compilers.f.unresolved-plugins=1
|
||||
compilers.incompatible-environment=1
|
||||
compilers.p.build=1
|
||||
compilers.p.build.bin.includes=1
|
||||
compilers.p.build.encodings=2
|
||||
compilers.p.build.java.compiler=2
|
||||
compilers.p.build.java.compliance=1
|
||||
compilers.p.build.missing.output=2
|
||||
compilers.p.build.output.library=1
|
||||
compilers.p.build.source.library=1
|
||||
compilers.p.build.src.includes=1
|
||||
compilers.p.deprecated=1
|
||||
compilers.p.discouraged-class=1
|
||||
compilers.p.internal=1
|
||||
compilers.p.missing-packages=1
|
||||
compilers.p.missing-version-export-package=2
|
||||
compilers.p.missing-version-import-package=1
|
||||
compilers.p.missing-version-require-bundle=1
|
||||
compilers.p.no-required-att=0
|
||||
compilers.p.not-externalized-att=2
|
||||
compilers.p.unknown-attribute=1
|
||||
compilers.p.unknown-class=1
|
||||
compilers.p.unknown-element=1
|
||||
compilers.p.unknown-identifier=1
|
||||
compilers.p.unknown-resource=1
|
||||
compilers.p.unresolved-ex-points=0
|
||||
compilers.p.unresolved-import=0
|
||||
compilers.s.create-docs=false
|
||||
compilers.s.doc-folder=doc
|
||||
compilers.s.open-tags=1
|
||||
eclipse.preferences.version=1
|
|
@ -0,0 +1,30 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.tcf.te.ui.terminals.local;singleton:=true
|
||||
Bundle-Version: 1.3.0.qualifier
|
||||
Bundle-Activator: org.eclipse.tcf.te.ui.terminals.local.activator.UIPlugin
|
||||
Bundle-Vendor: %providerName
|
||||
Import-Package: org.eclipse.cdt.utils.pty;mandatory:=native
|
||||
Require-Bundle: org.eclipse.cdt.core;bundle-version="5.6";resolution:=optional,
|
||||
org.eclipse.core.expressions;bundle-version="3.4.400",
|
||||
org.eclipse.core.resources;bundle-version="3.8.1";resolution:=optional,
|
||||
org.eclipse.core.runtime;bundle-version="3.8.0",
|
||||
org.eclipse.core.variables;bundle-version="3.2.600",
|
||||
org.eclipse.debug.ui;bundle-version="3.8.1";resolution:=optional,
|
||||
org.eclipse.tcf.te.core.terminals;bundle-version="1.3.0",
|
||||
org.eclipse.tcf.te.ui.terminals;bundle-version="1.3.0",
|
||||
org.eclipse.tcf.te.ui.terminals.process;bundle-version="1.3.0",
|
||||
org.eclipse.tm.terminal;bundle-version="3.3.1",
|
||||
org.eclipse.ui;bundle-version="3.8.0"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-Localization: plugin
|
||||
Export-Package: org.eclipse.tcf.te.ui.terminals.local.activator;x-internal:=true,
|
||||
org.eclipse.tcf.te.ui.terminals.local.controls,
|
||||
org.eclipse.tcf.te.ui.terminals.local.help,
|
||||
org.eclipse.tcf.te.ui.terminals.local.launcher,
|
||||
org.eclipse.tcf.te.ui.terminals.local.nls;x-internal:=true,
|
||||
org.eclipse.tcf.te.ui.terminals.local.showin,
|
||||
org.eclipse.tcf.te.ui.terminals.local.showin.interfaces,
|
||||
org.eclipse.tcf.te.ui.terminals.local.showin.preferences
|
|
@ -0,0 +1,82 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
|
||||
# Most of the dependencies exposed here are actually covered in the feature.xml
|
||||
# This file ensures that the current bundle has all it needs, even if installed
|
||||
# without the enclosing org.eclipse.tcf.te.terminals.feature .
|
||||
# See also https://bugs.eclipse.org/bugs/show_bug.cgi?id=435150 .
|
||||
|
||||
# 1. Make the optional cdt.core dependency non-greedy: Use (or update to proper
|
||||
# version!) when installed, but do not install automatically since the newer
|
||||
# org.eclipse.cdt.core.native can satisfy the dependency better. We use this
|
||||
# trick since CDT 8.3 had no version on export-package yet but we do want
|
||||
# a version constraint.
|
||||
requires.0.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.0.name = org.eclipse.cdt.core
|
||||
#requires.0.range = [5.6, 6.0)
|
||||
requires.0.greedy = false
|
||||
requires.0.optional = true
|
||||
|
||||
#requires.1.namespace = org.eclipse.equinox.p2.iu
|
||||
#requires.1.name = org.eclipse.cdt.core.native
|
||||
#requires.1.range = [5.6, 6.0)
|
||||
#requires.1.greedy = true
|
||||
#requires.1.optional = true
|
||||
|
||||
# 2. Add the required fragments for local terminal support with proper version.
|
||||
requires.2.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.2.name = org.eclipse.cdt.core.aix
|
||||
#requires.2.range = [5.3, 6.0)
|
||||
requires.2.filter = (osgi.os=aix)
|
||||
|
||||
requires.3.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.3.name = org.eclipse.cdt.core.linux
|
||||
#requires.3.range = [5.2, 6.0)
|
||||
requires.3.filter = (osgi.os=linux)
|
||||
|
||||
requires.4.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.4.name = org.eclipse.cdt.core.linux.ppc64
|
||||
#requires.4.range = [5.1, 6.0)
|
||||
requires.4.filter = (&(osgi.os=linux)(osgi.arch=ppc64))
|
||||
|
||||
requires.5.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.5.name = org.eclipse.cdt.core.linux.x86
|
||||
#requires.5.range = [5.2, 6.0)
|
||||
requires.5.filter = (&(osgi.os=linux)(osgi.arch=x86))
|
||||
|
||||
requires.6.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.6.name = org.eclipse.cdt.core.linux.x86_64
|
||||
#requires.6.range = [5.2, 6.0)
|
||||
requires.6.filter = (&(osgi.os=linux)(osgi.arch=x86_64))
|
||||
|
||||
requires.7.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.7.name = org.eclipse.cdt.core.macosx
|
||||
#requires.7.range = [5.2, 6.0)
|
||||
requires.7.filter = (osgi.os=macosx)
|
||||
|
||||
requires.8.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.8.name = org.eclipse.cdt.core.solaris
|
||||
#requires.8.range = [5.2, 6.0)
|
||||
requires.8.filter = (&(osgi.os=solaris)(osgi.arch=sparc))
|
||||
|
||||
requires.9.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.9.name = org.eclipse.cdt.core.win32
|
||||
#requires.9.range = [5.3, 6.0)
|
||||
requires.9.filter = (osgi.os=win32)
|
||||
|
||||
requires.10.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.10.name = org.eclipse.cdt.core.win32.x86
|
||||
#requires.10.range = [5.2, 6.0)
|
||||
requires.10.filter = (&(osgi.os=win32)(osgi.arch=x86))
|
||||
|
||||
requires.11.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.11.name = org.eclipse.cdt.core.win32.x86_64
|
||||
#requires.11.range = [5.2, 6.0)
|
||||
requires.11.filter = (&(osgi.os=win32)(osgi.arch=x86_64))
|
28
plugins/org.eclipse.tcf.te.ui.terminals.local/about.html
Normal file
28
plugins/org.eclipse.tcf.te.ui.terminals.local/about.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||
<title>About</title>
|
||||
</head>
|
||||
<body lang="EN-US">
|
||||
<h2>About This Content</h2>
|
||||
|
||||
<p>May 24, 2012</p>
|
||||
<h3>License</h3>
|
||||
|
||||
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
|
||||
indicated below, the Content is provided to you under the terms and conditions of the
|
||||
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
|
||||
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
|
||||
For purposes of the EPL, "Program" will mean the Content.</p>
|
||||
|
||||
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
|
||||
being redistributed by another party ("Redistributor") and different terms and conditions may
|
||||
apply to your use of any object code in the Content. Check the Redistributor's license that was
|
||||
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
|
||||
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
|
||||
and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,17 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012, 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
plugin.xml,\
|
||||
plugin.properties,\
|
||||
about.html,\
|
||||
icons/
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<contexts>
|
||||
<context id="ExternalExecutablesDialog">
|
||||
<description>Add or modify an external executable added to the 'Show In' context menu.</description>
|
||||
</context>
|
||||
</contexts>
|
Binary file not shown.
After Width: | Height: | Size: 938 B |
|
@ -0,0 +1,23 @@
|
|||
##################################################################################
|
||||
# Copyright (c) 2011, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
##################################################################################
|
||||
|
||||
pluginName = Terminals Local Connector
|
||||
providerName = Eclipse.org - Target Explorer
|
||||
|
||||
# ----- Commands and Menu contributions -----
|
||||
LocalLauncherDelegate.label=Local Terminal
|
||||
|
||||
command.launch.name=Open Local Terminal on Selection
|
||||
|
||||
menu.showIn.localterminal.label = Terminals
|
||||
|
||||
# ----- Preference Pages -----
|
||||
|
||||
preference.page.name=Local Terminal
|
130
plugins/org.eclipse.tcf.te.ui.terminals.local/plugin.xml
Normal file
130
plugins/org.eclipse.tcf.te.ui.terminals.local/plugin.xml
Normal file
|
@ -0,0 +1,130 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?eclipse version="3.4"?>
|
||||
<plugin>
|
||||
|
||||
<!-- Terminal connector contributions -->
|
||||
<!-- uses process connector -->
|
||||
<extension point="org.eclipse.tm.terminal.terminalConnectors">
|
||||
<connector
|
||||
class="org.eclipse.tcf.te.ui.terminals.process.ProcessConnector"
|
||||
hidden="true"
|
||||
id="org.eclipse.tcf.te.ui.terminals.local.LocalConnector"
|
||||
name="%TerminalConnector.local"/>
|
||||
</extension>
|
||||
|
||||
<!-- Terminals launcher delegate contributions -->
|
||||
<extension point="org.eclipse.tcf.te.ui.terminals.launcherDelegates">
|
||||
<delegate
|
||||
class="org.eclipse.tcf.te.ui.terminals.local.launcher.LocalLauncherDelegate"
|
||||
id="org.eclipse.tcf.te.ui.terminals.local.launcher.local"
|
||||
label="%LocalLauncherDelegate.label">
|
||||
</delegate>
|
||||
</extension>
|
||||
|
||||
<!-- Menu contributions -->
|
||||
<extension point="org.eclipse.ui.menus">
|
||||
<!-- Project Explorer "Show In" contribution -->
|
||||
<menuContribution locationURI="popup:org.eclipse.tcf.te.ui.terminals.ProjectExplorer.menu.showIn?after=additions">
|
||||
<command
|
||||
commandId="org.eclipse.tcf.te.ui.terminals.local.command.launch"
|
||||
id="org.eclipse.tcf.te.ui.terminals.local.commands.showin.launch"
|
||||
label="%menu.showIn.localterminal.label"
|
||||
style="push">
|
||||
<visibleWhen checkEnabled="false">
|
||||
<with variable="selection">
|
||||
<iterate operator="and" ifEmpty="false">
|
||||
<adapt type="org.eclipse.core.resources.IResource">
|
||||
<not>
|
||||
<!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
|
||||
See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
|
||||
<test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
|
||||
</not>
|
||||
</adapt>
|
||||
</iterate>
|
||||
</with>
|
||||
</visibleWhen>
|
||||
</command>
|
||||
<dynamic
|
||||
class="org.eclipse.tcf.te.ui.terminals.local.showin.DynamicContributionItems"
|
||||
id="org.eclipse.tcf.te.ui.terminals.local.LocalLauncherDynamicContributionItems">
|
||||
<visibleWhen checkEnabled="false">
|
||||
<with variable="selection">
|
||||
<iterate operator="and" ifEmpty="false">
|
||||
<adapt type="org.eclipse.core.resources.IResource">
|
||||
<not>
|
||||
<!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
|
||||
See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
|
||||
<test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
|
||||
</not>
|
||||
</adapt>
|
||||
</iterate>
|
||||
</with>
|
||||
</visibleWhen>
|
||||
</dynamic>
|
||||
</menuContribution>
|
||||
</extension>
|
||||
|
||||
<!-- Command contributions -->
|
||||
<extension point="org.eclipse.ui.commands">
|
||||
<command
|
||||
categoryId="org.eclipse.tcf.te.ui.terminals.commands.category"
|
||||
helpContextId="org.eclipse.tcf.te.ui.terminals.local.command_Launch"
|
||||
id="org.eclipse.tcf.te.ui.terminals.local.command.launch"
|
||||
name="%command.launch.name">
|
||||
</command>
|
||||
</extension>
|
||||
|
||||
<extension point="org.eclipse.ui.commandImages">
|
||||
<image
|
||||
commandId="org.eclipse.tcf.te.ui.terminals.local.command.launch"
|
||||
icon="icons/eview16/terminal_view.gif">
|
||||
</image>
|
||||
</extension>
|
||||
|
||||
<!-- Key bindings -->
|
||||
<extension point="org.eclipse.ui.bindings">
|
||||
<key
|
||||
commandId="org.eclipse.tcf.te.ui.terminals.local.command.launch"
|
||||
contextId="org.eclipse.ui.contexts.window"
|
||||
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
|
||||
sequence="CTRL+M3+T"/> <!-- Bug 435111: Don't use M1 since COMMAND+Option T already taken on Mac -->
|
||||
</extension>
|
||||
|
||||
<!-- Handler contributions -->
|
||||
<extension point="org.eclipse.ui.handlers">
|
||||
<handler
|
||||
class="org.eclipse.tcf.te.ui.terminals.local.launcher.LocalLauncherHandler"
|
||||
commandId="org.eclipse.tcf.te.ui.terminals.local.command.launch">
|
||||
</handler>
|
||||
</extension>
|
||||
|
||||
<!-- Preference page contributions -->
|
||||
<extension point="org.eclipse.ui.preferencePages">
|
||||
<page
|
||||
category="org.eclipse.tm.terminal.TerminalPreferencePage"
|
||||
class="org.eclipse.tcf.te.ui.terminals.local.showin.preferences.PreferencePage"
|
||||
id="org.eclipse.tcf.te.ui.terminals.local.showin.preferences"
|
||||
name="%preference.page.name">
|
||||
</page>
|
||||
</extension>
|
||||
|
||||
<!-- Preferences contributions -->
|
||||
<extension point="org.eclipse.core.runtime.preferences">
|
||||
<initializer
|
||||
class="org.eclipse.tcf.te.ui.terminals.local.showin.preferences.PreferencesInitializer">
|
||||
</initializer>
|
||||
</extension>
|
||||
|
||||
<!-- Startup contributions -->
|
||||
<extension point="org.eclipse.ui.startup">
|
||||
<startup class="org.eclipse.tcf.te.ui.terminals.local.showin.ExternalExecutablesInitializer"/>
|
||||
</extension>
|
||||
|
||||
<!-- Help Context contributions -->
|
||||
<extension point="org.eclipse.help.contexts">
|
||||
<contexts
|
||||
file="contexts.xml">
|
||||
</contexts>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
17
plugins/org.eclipse.tcf.te.ui.terminals.local/pom.xml
Normal file
17
plugins/org.eclipse.tcf.te.ui.terminals.local/pom.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.tcf</groupId>
|
||||
<artifactId>org.eclipse.tcf.maven-build</artifactId>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<relativePath>../../../admin/pom-build.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<version>1.3.0.qualifier</version>
|
||||
<artifactId>org.eclipse.tcf.te.ui.terminals.local</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
</project>
|
|
@ -0,0 +1,127 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2012 - 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.activator;
|
||||
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.resource.ImageRegistry;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.tcf.te.core.terminals.preferences.ScopedEclipsePreferences;
|
||||
import org.eclipse.tcf.te.core.terminals.tracing.TraceHandler;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class UIPlugin extends AbstractUIPlugin {
|
||||
// The shared instance
|
||||
private static UIPlugin plugin;
|
||||
// The scoped preferences instance
|
||||
private static volatile ScopedEclipsePreferences scopedPreferences;
|
||||
// The trace handler instance
|
||||
private static volatile TraceHandler traceHandler;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public UIPlugin() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shared instance
|
||||
*
|
||||
* @return the shared instance
|
||||
*/
|
||||
public static UIPlugin getDefault() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method which returns the unique identifier of this plug-in.
|
||||
*/
|
||||
public static String getUniqueIdentifier() {
|
||||
if (getDefault() != null && getDefault().getBundle() != null) {
|
||||
return getDefault().getBundle().getSymbolicName();
|
||||
}
|
||||
return "org.eclipse.tcf.te.ui.terminals.local"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the scoped preferences for this plug-in.
|
||||
*/
|
||||
public static ScopedEclipsePreferences getScopedPreferences() {
|
||||
if (scopedPreferences == null) {
|
||||
scopedPreferences = new ScopedEclipsePreferences(getUniqueIdentifier());
|
||||
}
|
||||
return scopedPreferences;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the bundles trace handler.
|
||||
*
|
||||
* @return The bundles trace handler.
|
||||
*/
|
||||
public static TraceHandler getTraceHandler() {
|
||||
if (traceHandler == null) {
|
||||
traceHandler = new TraceHandler(getUniqueIdentifier());
|
||||
}
|
||||
return traceHandler;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
@Override
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
@Override
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
plugin = null;
|
||||
scopedPreferences = null;
|
||||
traceHandler = null;
|
||||
super.stop(context);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#initializeImageRegistry(org.eclipse.jface.resource.ImageRegistry)
|
||||
*/
|
||||
@Override
|
||||
protected void initializeImageRegistry(ImageRegistry registry) {
|
||||
super.initializeImageRegistry(registry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the image registered under the specified key from the image
|
||||
* registry and returns the <code>Image</code> object instance.
|
||||
*
|
||||
* @param key The key the image is registered with.
|
||||
* @return The <code>Image</code> object instance or <code>null</code>.
|
||||
*/
|
||||
public static Image getImage(String key) {
|
||||
return getDefault().getImageRegistry().get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the image registered under the specified key from the image
|
||||
* registry and returns the <code>ImageDescriptor</code> object instance.
|
||||
*
|
||||
* @param key The key the image is registered with.
|
||||
* @return The <code>ImageDescriptor</code> object instance or <code>null</code>.
|
||||
*/
|
||||
public static ImageDescriptor getImageDescriptor(String key) {
|
||||
return getDefault().getImageRegistry().getDescriptor(key);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,194 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2012, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.controls;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.jface.dialogs.IDialogSettings;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.viewers.StructuredSelection;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.constants.ITerminalsConnectorConstants;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanelContainer;
|
||||
import org.eclipse.tcf.te.ui.terminals.panels.AbstractExtendedConfigurationPanel;
|
||||
import org.eclipse.ui.ISelectionService;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.eclipse.ui.WorkbenchEncoding;
|
||||
import org.osgi.framework.Bundle;
|
||||
|
||||
/**
|
||||
* Serial wizard configuration panel implementation.
|
||||
*/
|
||||
public class LocalWizardConfigurationPanel extends AbstractExtendedConfigurationPanel {
|
||||
|
||||
private Object resource;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param container The configuration panel container or <code>null</code>.
|
||||
*/
|
||||
public LocalWizardConfigurationPanel(IConfigurationPanelContainer container) {
|
||||
super(container);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.controls.interfaces.IWizardConfigurationPanel#setupPanel(org.eclipse.swt.widgets.Composite)
|
||||
*/
|
||||
@Override
|
||||
public void setupPanel(Composite parent) {
|
||||
Composite panel = new Composite(parent, SWT.NONE);
|
||||
panel.setLayout(new GridLayout());
|
||||
panel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
|
||||
|
||||
// Create the encoding selection combo
|
||||
createEncodingUI(panel, false);
|
||||
|
||||
// Set the default encoding:
|
||||
// Default UTF-8 on Mac or Windows for Local, Preferences:Platform encoding otherwise
|
||||
if (Platform.OS_MACOSX.equals(Platform.getOS()) || Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
setEncoding("UTF-8"); //$NON-NLS-1$
|
||||
} else {
|
||||
String encoding = WorkbenchEncoding.getWorkbenchDefaultEncoding();
|
||||
if (encoding != null && !"".equals(encoding)) setEncoding(encoding); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
// Fill the rest of the panel with a label to be able to
|
||||
// set a height and width hint for the dialog
|
||||
Label label = new Label(panel, SWT.HORIZONTAL);
|
||||
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||
layoutData.widthHint = 300;
|
||||
layoutData.heightHint = 80;
|
||||
label.setLayoutData(layoutData);
|
||||
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
resource = getSelectionResource();
|
||||
}
|
||||
|
||||
setControl(panel);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#setupData(java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public void setupData(Map<String, Object> data) {
|
||||
if (data == null) return;
|
||||
|
||||
String value = (String)data.get(ITerminalsConnectorConstants.PROP_ENCODING);
|
||||
if (value != null) setEncoding(value);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#extractData(java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public void extractData(Map<String, Object> data) {
|
||||
// set the terminal connector id for local terminal
|
||||
data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, "org.eclipse.tcf.te.ui.terminals.local.LocalConnector"); //$NON-NLS-1$
|
||||
|
||||
// Store the encoding
|
||||
data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
|
||||
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
// if we have a IResource selection use the location for working directory
|
||||
if (resource instanceof org.eclipse.core.resources.IResource){
|
||||
String dir = ((org.eclipse.core.resources.IResource)resource).getProject().getLocation().toString();
|
||||
data.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, dir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#fillSettingsForHost(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
protected void fillSettingsForHost(String host){
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#saveSettingsForHost(boolean)
|
||||
*/
|
||||
@Override
|
||||
protected void saveSettingsForHost(boolean add){
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.controls.panels.AbstractWizardConfigurationPanel#isValid()
|
||||
*/
|
||||
@Override
|
||||
public boolean isValid(){
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#doSaveWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
|
||||
// Save the encodings widget values
|
||||
doSaveEncodingsWidgetValues(settings, idPrefix);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#doRestoreWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) {
|
||||
// Restore the encodings widget values
|
||||
doRestoreEncodingsWidgetValues(settings, idPrefix);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#getHostFromSettings()
|
||||
*/
|
||||
@Override
|
||||
protected String getHostFromSettings() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#isWithHostList()
|
||||
*/
|
||||
@Override
|
||||
public boolean isWithHostList() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the IResource from the current selection
|
||||
*
|
||||
* @return the IResource, or <code>null</code>.
|
||||
*/
|
||||
private org.eclipse.core.resources.IResource getSelectionResource() {
|
||||
ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
|
||||
ISelection selection = selectionService != null ? selectionService.getSelection() : StructuredSelection.EMPTY;
|
||||
|
||||
if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
|
||||
Object element = ((IStructuredSelection) selection).getFirstElement();
|
||||
if (element instanceof org.eclipse.core.resources.IResource){
|
||||
return ((org.eclipse.core.resources.IResource)element);
|
||||
}
|
||||
if (element instanceof IAdaptable) {
|
||||
return (org.eclipse.core.resources.IResource) ((IAdaptable) element).getAdapter(org.eclipse.core.resources.IResource.class);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.help;
|
||||
|
||||
import org.eclipse.tcf.te.ui.terminals.local.activator.UIPlugin;
|
||||
|
||||
|
||||
/**
|
||||
* UI Context help id definitions.
|
||||
*/
|
||||
public interface IContextHelpIds {
|
||||
|
||||
/**
|
||||
* UI plug-in common context help id prefix.
|
||||
*/
|
||||
public final static String PREFIX = UIPlugin.getUniqueIdentifier() + "."; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* External executables dialog.
|
||||
*/
|
||||
public final static String EXTERNAL_EXECUTABLES_DIALOG = PREFIX + "ExternalExecutablesDialog"; //$NON-NLS-1$
|
||||
}
|
|
@ -0,0 +1,402 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2012, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.launcher;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.InetAddress;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.cdt.utils.pty.PTY;
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.URIUtil;
|
||||
import org.eclipse.core.variables.IStringVariableManager;
|
||||
import org.eclipse.core.variables.VariablesPlugin;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.tcf.te.core.terminals.TerminalServiceFactory;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService.Done;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalServiceOutputStreamMonitorListener;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.constants.ILineSeparatorConstants;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.constants.ITerminalsConnectorConstants;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanel;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanelContainer;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.IMementoHandler;
|
||||
import org.eclipse.tcf.te.ui.terminals.internal.SettingsStore;
|
||||
import org.eclipse.tcf.te.ui.terminals.launcher.AbstractLauncherDelegate;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.activator.UIPlugin;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.controls.LocalWizardConfigurationPanel;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.interfaces.IPreferenceKeys;
|
||||
import org.eclipse.tcf.te.ui.terminals.process.ProcessSettings;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
|
||||
import org.eclipse.ui.ISelectionService;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.eclipse.ui.WorkbenchEncoding;
|
||||
import org.osgi.framework.Bundle;
|
||||
|
||||
/**
|
||||
* Serial launcher delegate implementation.
|
||||
*/
|
||||
@SuppressWarnings("restriction")
|
||||
public class LocalLauncherDelegate extends AbstractLauncherDelegate {
|
||||
|
||||
private final IMementoHandler mementoHandler = new LocalMementoHandler();
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#needsUserConfiguration()
|
||||
*/
|
||||
@Override
|
||||
public boolean needsUserConfiguration() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#getPanel(org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanelContainer)
|
||||
*/
|
||||
@Override
|
||||
public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
|
||||
return new LocalWizardConfigurationPanel(container);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#execute(java.util.Map, org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService.Done)
|
||||
*/
|
||||
@Override
|
||||
public void execute(Map<String, Object> properties, Done done) {
|
||||
Assert.isNotNull(properties);
|
||||
|
||||
// Set the terminal tab title
|
||||
String terminalTitle = getTerminalTitle(properties);
|
||||
if (terminalTitle != null) {
|
||||
properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle);
|
||||
}
|
||||
|
||||
// If not configured, set the default encodings for the local terminal
|
||||
if (!properties.containsKey(ITerminalsConnectorConstants.PROP_ENCODING)) {
|
||||
String encoding = null;
|
||||
// Set the default encoding:
|
||||
// Default UTF-8 on Mac or Windows for Local, Preferences:Platform encoding otherwise
|
||||
if (Platform.OS_MACOSX.equals(Platform.getOS()) || Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
encoding = "UTF-8"; //$NON-NLS-1$
|
||||
} else {
|
||||
encoding = WorkbenchEncoding.getWorkbenchDefaultEncoding();
|
||||
}
|
||||
if (encoding != null && !"".equals(encoding)) properties.put(ITerminalsConnectorConstants.PROP_ENCODING, encoding); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
// For local terminals, force a new terminal tab each time it is launched,
|
||||
// if not set otherwise from outside
|
||||
if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) {
|
||||
properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE);
|
||||
}
|
||||
|
||||
// Initialize the local terminal working directory.
|
||||
// By default, start the local terminal in the users home directory
|
||||
String initialCwd = UIPlugin.getScopedPreferences().getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD);
|
||||
String cwd = null;
|
||||
if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd) || "".equals(initialCwd.trim())) { //$NON-NLS-1$
|
||||
cwd = System.getProperty("user.home"); //$NON-NLS-1$
|
||||
} else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd)) {
|
||||
String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$
|
||||
if (eclipseHomeLocation != null) {
|
||||
try {
|
||||
URI uri = URIUtil.fromString(eclipseHomeLocation);
|
||||
File f = URIUtil.toFile(uri);
|
||||
cwd = f.getAbsolutePath();
|
||||
} catch (URISyntaxException ex) { /* ignored on purpose */ }
|
||||
}
|
||||
} else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd)) {
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null
|
||||
&& org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null
|
||||
&& org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation() != null) {
|
||||
cwd = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
// Resolve possible dynamic variables
|
||||
IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager();
|
||||
String resolved = vm.performStringSubstitution(initialCwd);
|
||||
|
||||
IPath p = new Path(resolved);
|
||||
if (p.toFile().canRead() && p.toFile().isDirectory()) {
|
||||
cwd = p.toOSString();
|
||||
}
|
||||
} catch (CoreException ex) {
|
||||
if (Platform.inDebugMode()) {
|
||||
UIPlugin.getDefault().getLog().log(ex.getStatus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cwd != null && !"".equals(cwd)) { //$NON-NLS-1$
|
||||
properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, cwd);
|
||||
}
|
||||
|
||||
// If the current selection resolved to an folder, default the working directory
|
||||
// to that folder and update the terminal title
|
||||
ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
|
||||
if ((service != null && service.getSelection() != null) || properties.containsKey(ITerminalsConnectorConstants.PROP_SELECTION)) {
|
||||
ISelection selection = (ISelection)properties.get(ITerminalsConnectorConstants.PROP_SELECTION);
|
||||
if (selection == null) selection = service.getSelection();
|
||||
if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
|
||||
String dir = null;
|
||||
Iterator<?> iter = ((IStructuredSelection)selection).iterator();
|
||||
while (iter.hasNext()) {
|
||||
Object element = iter.next();
|
||||
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
// If the element is not an IResource, try to adapt to IResource
|
||||
if (!(element instanceof org.eclipse.core.resources.IResource)) {
|
||||
Object adapted = element instanceof IAdaptable ? ((IAdaptable)element).getAdapter(org.eclipse.core.resources.IResource.class) : null;
|
||||
if (adapted == null) adapted = Platform.getAdapterManager().getAdapter(element, org.eclipse.core.resources.IResource.class);
|
||||
if (adapted != null) element = adapted;
|
||||
}
|
||||
|
||||
if (element instanceof org.eclipse.core.resources.IResource && ((org.eclipse.core.resources.IResource)element).exists()) {
|
||||
IPath location = ((org.eclipse.core.resources.IResource)element).getLocation();
|
||||
if (location == null) continue;
|
||||
if (location.toFile().isFile()) location = location.removeLastSegments(1);
|
||||
if (location.toFile().isDirectory() && location.toFile().canRead()) {
|
||||
dir = location.toFile().getAbsolutePath();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (element instanceof IPath || element instanceof File) {
|
||||
File f = element instanceof IPath ? ((IPath)element).toFile() : (File)element;
|
||||
if (f.isDirectory() && f.canRead()) {
|
||||
dir = f.getAbsolutePath();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (dir != null) {
|
||||
properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, dir);
|
||||
|
||||
String basename = new Path(dir).lastSegment();
|
||||
properties.put(ITerminalsConnectorConstants.PROP_TITLE, basename + " (" + terminalTitle + ")"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get the terminal service
|
||||
ITerminalService terminal = TerminalServiceFactory.getService();
|
||||
// If not available, we cannot fulfill this request
|
||||
if (terminal != null) {
|
||||
terminal.openConsole(properties, done);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the terminal title string.
|
||||
* <p>
|
||||
* The default implementation constructs a title like "Serial <port> (Start time) ".
|
||||
*
|
||||
* @return The terminal title string or <code>null</code>.
|
||||
*/
|
||||
private String getTerminalTitle(Map<String, Object> properties) {
|
||||
try {
|
||||
String hostname = InetAddress.getLocalHost().getHostName();
|
||||
if (hostname != null && !"".equals(hostname.trim())) { //$NON-NLS-1$
|
||||
return hostname;
|
||||
}
|
||||
} catch (UnknownHostException e) { /* ignored on purpose */ }
|
||||
return "Local"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
|
||||
*/
|
||||
@Override
|
||||
public Object getAdapter(Class adapter) {
|
||||
if (IMementoHandler.class.equals(adapter)) {
|
||||
return mementoHandler;
|
||||
}
|
||||
return super.getAdapter(adapter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default shell to launch. Looks at the environment
|
||||
* variable "SHELL" first before assuming some default default values.
|
||||
*
|
||||
* @return The default shell to launch.
|
||||
*/
|
||||
private final File defaultShell() {
|
||||
String shell = null;
|
||||
if (Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
if (System.getenv("ComSpec") != null && !"".equals(System.getenv("ComSpec").trim())) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
shell = System.getenv("ComSpec").trim(); //$NON-NLS-1$
|
||||
} else {
|
||||
shell = "cmd.exe"; //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
if (shell == null) {
|
||||
shell = UIPlugin.getScopedPreferences().getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX);
|
||||
if (shell == null || "".equals(shell)) { //$NON-NLS-1$
|
||||
if (System.getenv("SHELL") != null && !"".equals(System.getenv("SHELL").trim())) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
shell = System.getenv("SHELL").trim(); //$NON-NLS-1$
|
||||
} else {
|
||||
shell = "/bin/sh"; //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new File(shell);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#createTerminalConnector(java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
|
||||
Assert.isNotNull(properties);
|
||||
|
||||
// Check for the terminal connector id
|
||||
String connectorId = (String)properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
|
||||
if (connectorId == null) connectorId = "org.eclipse.tcf.te.ui.terminals.local.LocalConnector"; //$NON-NLS-1$
|
||||
|
||||
// Extract the process properties using defaults
|
||||
String image;
|
||||
if (!properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_PATH)
|
||||
|| properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH) == null) {
|
||||
File defaultShell = defaultShell();
|
||||
image = defaultShell.isAbsolute() ? defaultShell.getAbsolutePath() : defaultShell.getPath();
|
||||
} else {
|
||||
image = (String)properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH);
|
||||
}
|
||||
|
||||
String arguments = (String)properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS);
|
||||
if (arguments == null && !Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
arguments = UIPlugin.getScopedPreferences().getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS);
|
||||
}
|
||||
|
||||
// Determine if a PTY will be used
|
||||
boolean isUsingPTY = (properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ) == null && PTY.isSupported(PTY.Mode.TERMINAL))
|
||||
|| properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ) instanceof PTY;
|
||||
|
||||
boolean localEcho = false;
|
||||
if (!properties.containsKey(ITerminalsConnectorConstants.PROP_LOCAL_ECHO)
|
||||
|| !(properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO) instanceof Boolean)) {
|
||||
// On Windows, turn on local echo by default if no PTY is used (bug 433645)
|
||||
if (Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
localEcho = !isUsingPTY;
|
||||
}
|
||||
} else {
|
||||
localEcho = ((Boolean)properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO)).booleanValue();
|
||||
}
|
||||
|
||||
String lineSeparator = null;
|
||||
if (!properties.containsKey(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR)
|
||||
|| !(properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR) instanceof String)) {
|
||||
// No line separator will be set if a PTY is used
|
||||
if (!isUsingPTY) {
|
||||
lineSeparator = Platform.OS_WIN32.equals(Platform.getOS()) ? ILineSeparatorConstants.LINE_SEPARATOR_CRLF : ILineSeparatorConstants.LINE_SEPARATOR_LF;
|
||||
}
|
||||
} else {
|
||||
lineSeparator = (String)properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR);
|
||||
}
|
||||
|
||||
Process process = (Process)properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ);
|
||||
PTY pty = (PTY)properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ);
|
||||
ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[])properties.get(ITerminalsConnectorConstants.PROP_STDOUT_LISTENERS);
|
||||
ITerminalServiceOutputStreamMonitorListener[] stderrListeners = (ITerminalServiceOutputStreamMonitorListener[])properties.get(ITerminalsConnectorConstants.PROP_STDERR_LISTENERS);
|
||||
String workingDir = (String)properties.get(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR);
|
||||
|
||||
String[] envp = null;
|
||||
if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) &&
|
||||
properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) != null &&
|
||||
properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) instanceof String[]){
|
||||
envp = (String[])properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT);
|
||||
}
|
||||
|
||||
// Set the ECLIPSE_HOME and ECLIPSE_WORKSPACE environment variables
|
||||
List<String> envpList = new ArrayList<String>();
|
||||
if (envp != null) envpList.addAll(Arrays.asList(envp));
|
||||
|
||||
// ECLIPSE_HOME
|
||||
String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$
|
||||
if (eclipseHomeLocation != null) {
|
||||
try {
|
||||
URI uri = URIUtil.fromString(eclipseHomeLocation);
|
||||
File f = URIUtil.toFile(uri);
|
||||
envpList.add("ECLIPSE_HOME=" + f.getAbsolutePath()); //$NON-NLS-1$
|
||||
} catch (URISyntaxException e) { /* ignored on purpose */ }
|
||||
}
|
||||
|
||||
// ECLIPSE_WORKSPACE
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null
|
||||
&& org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null
|
||||
&& org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation() != null) {
|
||||
envpList.add("ECLIPSE_WORKSPACE=" + org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString()); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
// Convert back into a string array
|
||||
envp = envpList.toArray(new String[envpList.size()]);
|
||||
|
||||
Assert.isTrue(image != null || process != null);
|
||||
|
||||
// Construct the terminal settings store
|
||||
ISettingsStore store = new SettingsStore();
|
||||
|
||||
// Construct the process settings
|
||||
ProcessSettings processSettings = new ProcessSettings();
|
||||
processSettings.setImage(image);
|
||||
processSettings.setArguments(arguments);
|
||||
processSettings.setProcess(process);
|
||||
processSettings.setPTY(pty);
|
||||
processSettings.setLocalEcho(localEcho);
|
||||
processSettings.setLineSeparator(lineSeparator);
|
||||
processSettings.setStdOutListeners(stdoutListeners);
|
||||
processSettings.setStdErrListeners(stderrListeners);
|
||||
processSettings.setWorkingDir(workingDir);
|
||||
processSettings.setEnvironment(envp);
|
||||
|
||||
if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT)) {
|
||||
Object value = properties.get(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT);
|
||||
processSettings.setMergeWithNativeEnvironment(value instanceof Boolean ? ((Boolean)value).booleanValue() : false);
|
||||
}
|
||||
|
||||
// And save the settings to the store
|
||||
processSettings.save(store);
|
||||
|
||||
// Construct the terminal connector instance
|
||||
ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
|
||||
if (connector != null) {
|
||||
// Apply default settings
|
||||
connector.makeSettingsPage();
|
||||
// And load the real settings
|
||||
connector.load(store);
|
||||
}
|
||||
|
||||
return connector;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.launcher;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.commands.AbstractHandler;
|
||||
import org.eclipse.core.commands.ExecutionEvent;
|
||||
import org.eclipse.core.commands.ExecutionException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.viewers.StructuredSelection;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.constants.ITerminalsConnectorConstants;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate;
|
||||
import org.eclipse.tcf.te.ui.terminals.launcher.LauncherDelegateManager;
|
||||
import org.eclipse.ui.IEditorInput;
|
||||
import org.eclipse.ui.IPathEditorInput;
|
||||
import org.eclipse.ui.handlers.HandlerUtil;
|
||||
|
||||
/**
|
||||
* Local terminal launcher handler implementation.
|
||||
*/
|
||||
public class LocalLauncherHandler extends AbstractHandler {
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
|
||||
*/
|
||||
@Override
|
||||
public Object execute(ExecutionEvent event) throws ExecutionException {
|
||||
// Get the current selection
|
||||
ISelection selection = HandlerUtil.getCurrentSelection(event);
|
||||
|
||||
// If the selection is not a structured selection, check if there is an active
|
||||
// editor and get the path from the editor input
|
||||
if (!(selection instanceof IStructuredSelection)) {
|
||||
IEditorInput input = HandlerUtil.getActiveEditorInput(event);
|
||||
if (input instanceof IPathEditorInput) {
|
||||
IPath path = ((IPathEditorInput)input).getPath();
|
||||
if (path != null) {
|
||||
if (path.toFile().isFile()) path = path.removeLastSegments(1);
|
||||
if (path.toFile().isDirectory() && path.toFile().canRead()) selection = new StructuredSelection(path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get all applicable launcher delegates for the current selection
|
||||
ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance().getApplicableLauncherDelegates(selection);
|
||||
// Find the local terminal launcher delegate
|
||||
ILauncherDelegate delegate = null;
|
||||
for (ILauncherDelegate candidate : delegates) {
|
||||
if ("org.eclipse.tcf.te.ui.terminals.local.launcher.local".equals(candidate.getId())) { //$NON-NLS-1$
|
||||
delegate = candidate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Launch the local terminal
|
||||
if (delegate != null) {
|
||||
Map<String, Object> properties = new HashMap<String, Object>();
|
||||
properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegate.getId());
|
||||
properties.put(ITerminalsConnectorConstants.PROP_SELECTION, selection);
|
||||
|
||||
delegate.execute(properties, null);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2012, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.launcher;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.IMementoHandler;
|
||||
import org.eclipse.ui.IMemento;
|
||||
|
||||
/**
|
||||
* Local terminal connection memento handler implementation.
|
||||
*/
|
||||
public class LocalMementoHandler implements IMementoHandler {
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.IMementoHandler#saveState(org.eclipse.ui.IMemento, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public void saveState(IMemento memento, Map<String, Object> properties) {
|
||||
Assert.isNotNull(memento);
|
||||
Assert.isNotNull(properties);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.IMementoHandler#restoreState(org.eclipse.ui.IMemento, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public void restoreState(IMemento memento, Map<String, Object> properties) {
|
||||
Assert.isNotNull(memento);
|
||||
Assert.isNotNull(properties);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011 - 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.nls;
|
||||
|
||||
import org.eclipse.osgi.util.NLS;
|
||||
|
||||
/**
|
||||
* Process terminal connector plug-in externalized strings management.
|
||||
*/
|
||||
public class Messages extends NLS {
|
||||
|
||||
// The plug-in resource bundle name
|
||||
private static final String BUNDLE_NAME = "org.eclipse.tcf.te.ui.terminals.local.nls.Messages"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Static constructor.
|
||||
*/
|
||||
static {
|
||||
// Load message values from bundle file
|
||||
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
|
||||
}
|
||||
|
||||
// **** Declare externalized string id's down here *****
|
||||
|
||||
public static String ProcessConnector_error_creatingProcess;
|
||||
|
||||
public static String PreferencePage_label;
|
||||
public static String PreferencePage_executables_label;
|
||||
public static String PreferencePage_executables_column_name_label;
|
||||
public static String PreferencePage_executables_column_path_label;
|
||||
public static String PreferencePage_executables_button_add_label;
|
||||
public static String PreferencePage_executables_button_edit_label;
|
||||
public static String PreferencePage_executables_button_remove_label;
|
||||
public static String PreferencePage_workingDir_label;
|
||||
public static String PreferencePage_workingDir_userhome_label;
|
||||
public static String PreferencePage_workingDir_eclipsehome_label;
|
||||
public static String PreferencePage_workingDir_eclipsews_label;
|
||||
public static String PreferencePage_workingDir_button_browse;
|
||||
public static String PreferencePage_workingDir_note_label;
|
||||
public static String PreferencePage_workingDir_note_text;
|
||||
public static String PreferencePage_workingDir_button_variables;
|
||||
public static String PreferencePage_workingDir_invalid;
|
||||
public static String PreferencePage_command_label;
|
||||
public static String PreferencePage_command_button_browse;
|
||||
public static String PreferencePage_command_invalid;
|
||||
public static String PreferencePage_command_note_label;
|
||||
public static String PreferencePage_command_note_text;
|
||||
public static String PreferencePage_command_arguments_label;
|
||||
|
||||
public static String ExternalExecutablesDialog_title_add;
|
||||
public static String ExternalExecutablesDialog_title_edit;
|
||||
public static String ExternalExecutablesDialog_button_add;
|
||||
public static String ExternalExecutablesDialog_button_browse;
|
||||
public static String ExternalExecutablesDialog_field_path;
|
||||
public static String ExternalExecutablesDialog_field_name;
|
||||
public static String ExternalExecutablesDialog_field_args;
|
||||
public static String ExternalExecutablesDialog_field_icon;
|
||||
public static String ExternalExecutablesDialog_field_translate;
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012 - 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
|
||||
ProcessConnector_error_creatingProcess=Exception when creating process. Possibly caused by: {0}
|
||||
|
||||
ExternalExecutablesDialog_title_add=Add External Executable
|
||||
ExternalExecutablesDialog_title_edit=Edit External Executable
|
||||
ExternalExecutablesDialog_button_add=Add
|
||||
ExternalExecutablesDialog_button_browse=Browse...
|
||||
ExternalExecutablesDialog_field_path=Path:
|
||||
ExternalExecutablesDialog_field_name=Name:
|
||||
ExternalExecutablesDialog_field_args=Arguments:
|
||||
ExternalExecutablesDialog_field_icon=Icon:
|
||||
ExternalExecutablesDialog_field_translate=Translate Backslashes on Paste
|
||||
|
||||
# ----- Preference Pages -----
|
||||
|
||||
PreferencePage_label=Local Terminal Settings:
|
||||
PreferencePage_executables_label="Show In ..." Custom Entries
|
||||
PreferencePage_executables_column_name_label=Name
|
||||
PreferencePage_executables_column_path_label=Path
|
||||
PreferencePage_executables_button_add_label=Add...
|
||||
PreferencePage_executables_button_edit_label=Edit...
|
||||
PreferencePage_executables_button_remove_label=Remove
|
||||
PreferencePage_workingDir_label=Initial Working Directory
|
||||
PreferencePage_workingDir_userhome_label=User home
|
||||
PreferencePage_workingDir_eclipsehome_label=Eclipse home
|
||||
PreferencePage_workingDir_eclipsews_label=Eclipse workspace
|
||||
PreferencePage_workingDir_button_browse=&Browse...
|
||||
PreferencePage_workingDir_note_label=Note:
|
||||
PreferencePage_workingDir_note_text=The chosen initial working directory might be overwritten by the current selection of the active view.
|
||||
PreferencePage_workingDir_button_variables=&Variables...
|
||||
PreferencePage_workingDir_invalid=Selected initial working directory is not a directory or is not readable.
|
||||
PreferencePage_command_label=Shell Command
|
||||
PreferencePage_command_button_browse=&Browse...
|
||||
PreferencePage_command_invalid=Selected shell command is not a file or is not readable or executable.
|
||||
PreferencePage_command_note_label=Note:
|
||||
PreferencePage_command_note_text=Leave the shell command empty to fallback to the SHELL environment variable or if not set, to /bin/sh.
|
||||
PreferencePage_command_arguments_label=Arguments:
|
|
@ -0,0 +1,129 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.showin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.jface.action.ActionContributionItem;
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.action.IContributionItem;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.swt.graphics.ImageData;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.constants.ITerminalsConnectorConstants;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate;
|
||||
import org.eclipse.tcf.te.ui.terminals.launcher.LauncherDelegateManager;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.interfaces.IExternalExecutablesProperties;
|
||||
import org.eclipse.ui.ISelectionService;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.eclipse.ui.actions.CompoundContributionItem;
|
||||
import org.eclipse.ui.menus.IWorkbenchContribution;
|
||||
import org.eclipse.ui.services.IServiceLocator;
|
||||
|
||||
/**
|
||||
* Dynamic "Show In" contribution items implementation.
|
||||
*/
|
||||
public class DynamicContributionItems extends CompoundContributionItem implements IWorkbenchContribution {
|
||||
// Service locator to located the handler service.
|
||||
protected IServiceLocator serviceLocator;
|
||||
// Reference to the local terminal launcher delegate
|
||||
/* default */ ILauncherDelegate delegate;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.ui.menus.IWorkbenchContribution#initialize(org.eclipse.ui.services.IServiceLocator)
|
||||
*/
|
||||
@Override
|
||||
public void initialize(IServiceLocator serviceLocator) {
|
||||
this.serviceLocator = serviceLocator;
|
||||
|
||||
// Get the local terminal launcher delegate
|
||||
delegate = LauncherDelegateManager.getInstance().getLauncherDelegate("org.eclipse.tcf.te.ui.terminals.local.launcher.local", false); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
|
||||
*/
|
||||
@Override
|
||||
protected IContributionItem[] getContributionItems() {
|
||||
List<IContributionItem> items = new ArrayList<IContributionItem>();
|
||||
|
||||
if (delegate != null) {
|
||||
List<Map<String, String>> l = ExternalExecutablesManager.load();
|
||||
if (l != null && !l.isEmpty()) {
|
||||
for (Map<String, String> executableData : l) {
|
||||
String name = executableData.get(IExternalExecutablesProperties.PROP_NAME);
|
||||
String path = executableData.get(IExternalExecutablesProperties.PROP_PATH);
|
||||
String args = executableData.get(IExternalExecutablesProperties.PROP_ARGS);
|
||||
String icon = executableData.get(IExternalExecutablesProperties.PROP_ICON);
|
||||
|
||||
String strTranslate = executableData.get(IExternalExecutablesProperties.PROP_TRANSLATE);
|
||||
boolean translate = strTranslate != null ? Boolean.parseBoolean(strTranslate) : false;
|
||||
|
||||
if (name != null && !"".equals(name) && path != null && !"".equals(path)) { //$NON-NLS-1$ //$NON-NLS-2$
|
||||
IAction action = createAction(name, path, args, translate);
|
||||
|
||||
ImageData id = icon != null ? ExternalExecutablesManager.loadImage(icon) : null;
|
||||
if (id != null) {
|
||||
ImageDescriptor desc = ImageDescriptor.createFromImageData(id);
|
||||
if (desc != null) action.setImageDescriptor(desc);
|
||||
}
|
||||
|
||||
IContributionItem item = new ActionContributionItem(action);
|
||||
items.add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return items.toArray(new IContributionItem[items.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the action to execute.
|
||||
*
|
||||
* @param label The label. Must not be <code>null</code>.
|
||||
* @param path The executable path. Must not be <code>null</code>.
|
||||
* @param args The executable arguments or <code>null</code>.
|
||||
* @param translate Translate backslashes.
|
||||
*
|
||||
* @return The action to execute.
|
||||
*/
|
||||
protected IAction createAction(final String label, final String path, final String args, final boolean translate) {
|
||||
Assert.isNotNull(label);
|
||||
Assert.isNotNull(path);
|
||||
|
||||
IAction action = new Action(label) {
|
||||
@Override
|
||||
public void run() {
|
||||
Assert.isNotNull(delegate);
|
||||
|
||||
ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
|
||||
ISelection selection = service != null ? service.getSelection() : null;
|
||||
if (selection != null && selection.isEmpty()) selection = null;
|
||||
|
||||
Map<String, Object> properties = new HashMap<String, Object>();
|
||||
properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegate.getId());
|
||||
if (selection != null) properties.put(ITerminalsConnectorConstants.PROP_SELECTION, selection);
|
||||
properties.put(ITerminalsConnectorConstants.PROP_PROCESS_PATH, path);
|
||||
if (args != null) properties.put(ITerminalsConnectorConstants.PROP_PROCESS_ARGS, args);
|
||||
properties.put(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE, Boolean.valueOf(translate));
|
||||
|
||||
delegate.execute(properties, null);
|
||||
}
|
||||
};
|
||||
|
||||
return action;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,460 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.showin;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.jface.dialogs.TrayDialog;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.custom.ScrolledComposite;
|
||||
import org.eclipse.swt.events.ModifyEvent;
|
||||
import org.eclipse.swt.events.ModifyListener;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.FileDialog;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.help.IContextHelpIds;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.nls.Messages;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.interfaces.IExternalExecutablesProperties;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.osgi.framework.Bundle;
|
||||
|
||||
/**
|
||||
* External executables dialog implementation.
|
||||
*/
|
||||
public class ExternalExecutablesDialog extends TrayDialog {
|
||||
private String contextHelpId = null;
|
||||
private final boolean edit;
|
||||
|
||||
private Text name;
|
||||
/* default */ Text path;
|
||||
private Text args;
|
||||
/* default */ Text icon;
|
||||
private Button translate;
|
||||
|
||||
/* default */ String last_filter_path = null;
|
||||
/* default */ String last_filter_icon = null;
|
||||
|
||||
private Map<String, String> executableData;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param shell The parent shell or <code>null</code>.
|
||||
*/
|
||||
public ExternalExecutablesDialog(Shell shell, boolean edit) {
|
||||
super(shell);
|
||||
this.edit = edit;
|
||||
|
||||
this.contextHelpId = IContextHelpIds.EXTERNAL_EXECUTABLES_DIALOG;
|
||||
setHelpAvailable(true);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
|
||||
*/
|
||||
@Override
|
||||
protected final Control createDialogArea(Composite parent) {
|
||||
if (contextHelpId != null) {
|
||||
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, contextHelpId);
|
||||
}
|
||||
|
||||
// Let the super implementation create the dialog area control
|
||||
Control control = super.createDialogArea(parent);
|
||||
// Setup the inner panel as scrollable composite
|
||||
if (control instanceof Composite) {
|
||||
ScrolledComposite sc = new ScrolledComposite((Composite)control, SWT.V_SCROLL);
|
||||
|
||||
GridLayout layout = new GridLayout(1, true);
|
||||
layout.marginHeight = 0; layout.marginWidth = 0;
|
||||
layout.verticalSpacing = 0; layout.horizontalSpacing = 0;
|
||||
|
||||
sc.setLayout(layout);
|
||||
sc.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
|
||||
|
||||
sc.setExpandHorizontal(true);
|
||||
sc.setExpandVertical(true);
|
||||
|
||||
Composite composite = new Composite(sc, SWT.NONE);
|
||||
composite.setLayout(new GridLayout());
|
||||
|
||||
// Setup the dialog area content
|
||||
createDialogAreaContent(composite);
|
||||
|
||||
sc.setContent(composite);
|
||||
sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
|
||||
|
||||
// Return the scrolled composite as new dialog area control
|
||||
control = sc;
|
||||
}
|
||||
|
||||
return control;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the dialog area content.
|
||||
*
|
||||
* @param parent The parent composite. Must not be <code>null</code>.
|
||||
*/
|
||||
protected void createDialogAreaContent(Composite parent) {
|
||||
Assert.isNotNull(parent);
|
||||
|
||||
setDialogTitle(edit ? Messages.ExternalExecutablesDialog_title_edit : Messages.ExternalExecutablesDialog_title_add);
|
||||
|
||||
Composite panel = new Composite(parent, SWT.NONE);
|
||||
GridLayout layout = new GridLayout(2, false);
|
||||
layout.marginHeight = 0; layout.marginWidth = 0;
|
||||
panel.setLayout(layout);
|
||||
GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, true);
|
||||
layoutData.widthHint = convertWidthInCharsToPixels(50);
|
||||
panel.setLayoutData(layoutData);
|
||||
|
||||
Label label = new Label(panel, SWT.HORIZONTAL);
|
||||
label.setText(Messages.ExternalExecutablesDialog_field_name);
|
||||
layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
|
||||
label.setLayoutData(layoutData);
|
||||
|
||||
name = new Text(panel, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||
layoutData.widthHint = convertWidthInCharsToPixels(30);
|
||||
name.setLayoutData(layoutData);
|
||||
name.addModifyListener(new ModifyListener() {
|
||||
@Override
|
||||
public void modifyText(ModifyEvent e) {
|
||||
validate();
|
||||
}
|
||||
});
|
||||
|
||||
label = new Label(panel, SWT.HORIZONTAL);
|
||||
label.setText(Messages.ExternalExecutablesDialog_field_path);
|
||||
layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
|
||||
label.setLayoutData(layoutData);
|
||||
|
||||
Composite panel2 = new Composite(panel, SWT.NONE);
|
||||
layout = new GridLayout(2, false);
|
||||
layout.marginHeight = 0; layout.marginWidth = 0;
|
||||
panel2.setLayout(layout);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||
panel2.setLayoutData(layoutData);
|
||||
|
||||
path = new Text(panel2, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||
layoutData.widthHint = convertWidthInCharsToPixels(30);
|
||||
path.setLayoutData(layoutData);
|
||||
path.addModifyListener(new ModifyListener() {
|
||||
@Override
|
||||
public void modifyText(ModifyEvent e) {
|
||||
validate();
|
||||
}
|
||||
});
|
||||
|
||||
Button button = new Button(panel2, SWT.PUSH);
|
||||
button.setText(Messages.ExternalExecutablesDialog_button_browse);
|
||||
layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
|
||||
layoutData.widthHint = convertWidthInCharsToPixels(10);
|
||||
button.setLayoutData(layoutData);
|
||||
button.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
|
||||
|
||||
String selectedFile = path.getText();
|
||||
if (selectedFile != null && selectedFile.trim().length() > 0) {
|
||||
IPath filePath = new Path(selectedFile);
|
||||
// If the selected file points to an directory, use the directory as is
|
||||
IPath filterPath = filePath.toFile().isDirectory() ? filePath : filePath.removeLastSegments(1);
|
||||
while (filterPath != null && filterPath.segmentCount() > 1 && !filterPath.toFile().exists()) {
|
||||
filterPath = filterPath.removeLastSegments(1);
|
||||
}
|
||||
String filterFileName = filePath.toFile().isDirectory() || !filePath.toFile().exists() ? null : filePath.lastSegment();
|
||||
|
||||
if (filterPath != null && !filterPath.isEmpty()) dialog.setFilterPath(filterPath.toString());
|
||||
if (filterFileName != null) dialog.setFileName(filterFileName);
|
||||
} else {
|
||||
String workspace = null;
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
workspace = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString();
|
||||
}
|
||||
|
||||
String filterPath = last_filter_path != null ? last_filter_path : workspace;
|
||||
dialog.setFilterPath(filterPath);
|
||||
}
|
||||
|
||||
selectedFile = dialog.open();
|
||||
if (selectedFile != null) {
|
||||
last_filter_path = dialog.getFilterPath();
|
||||
path.setText(selectedFile);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
label = new Label(panel, SWT.HORIZONTAL);
|
||||
label.setText(Messages.ExternalExecutablesDialog_field_args);
|
||||
layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
|
||||
label.setLayoutData(layoutData);
|
||||
|
||||
args = new Text(panel, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||
layoutData.widthHint = convertWidthInCharsToPixels(30);
|
||||
args.setLayoutData(layoutData);
|
||||
args.addModifyListener(new ModifyListener() {
|
||||
@Override
|
||||
public void modifyText(ModifyEvent e) {
|
||||
validate();
|
||||
}
|
||||
});
|
||||
|
||||
label = new Label(panel, SWT.HORIZONTAL);
|
||||
label.setText(Messages.ExternalExecutablesDialog_field_icon);
|
||||
layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
|
||||
label.setLayoutData(layoutData);
|
||||
|
||||
panel2 = new Composite(panel, SWT.NONE);
|
||||
layout = new GridLayout(2, false);
|
||||
layout.marginHeight = 0; layout.marginWidth = 0;
|
||||
panel2.setLayout(layout);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||
panel2.setLayoutData(layoutData);
|
||||
|
||||
icon = new Text(panel2, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||
layoutData.widthHint = convertWidthInCharsToPixels(30);
|
||||
icon.setLayoutData(layoutData);
|
||||
icon.addModifyListener(new ModifyListener() {
|
||||
@Override
|
||||
public void modifyText(ModifyEvent e) {
|
||||
validate();
|
||||
}
|
||||
});
|
||||
|
||||
button = new Button(panel2, SWT.PUSH);
|
||||
button.setText(Messages.ExternalExecutablesDialog_button_browse);
|
||||
layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
|
||||
layoutData.widthHint = convertWidthInCharsToPixels(10);
|
||||
button.setLayoutData(layoutData);
|
||||
button.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
|
||||
|
||||
String selectedFile = icon.getText();
|
||||
if (selectedFile != null && selectedFile.trim().length() > 0) {
|
||||
IPath filePath = new Path(selectedFile);
|
||||
// If the selected file points to an directory, use the directory as is
|
||||
IPath filterPath = filePath.toFile().isDirectory() ? filePath : filePath.removeLastSegments(1);
|
||||
while (filterPath != null && filterPath.segmentCount() > 1 && !filterPath.toFile().exists()) {
|
||||
filterPath = filterPath.removeLastSegments(1);
|
||||
}
|
||||
String filterFileName = filePath.toFile().isDirectory() || !filePath.toFile().exists() ? null : filePath.lastSegment();
|
||||
|
||||
if (filterPath != null && !filterPath.isEmpty()) dialog.setFilterPath(filterPath.toString());
|
||||
if (filterFileName != null) dialog.setFileName(filterFileName);
|
||||
} else {
|
||||
String workspace = null;
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
workspace = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString();
|
||||
}
|
||||
|
||||
String filterPath = last_filter_icon != null ? last_filter_icon : workspace;
|
||||
dialog.setFilterPath(filterPath);
|
||||
}
|
||||
|
||||
selectedFile = dialog.open();
|
||||
if (selectedFile != null) {
|
||||
last_filter_icon = dialog.getFilterPath();
|
||||
icon.setText(selectedFile);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
translate = new Button(panel, SWT.CHECK);
|
||||
translate.setText(Messages.ExternalExecutablesDialog_field_translate);
|
||||
layoutData = new GridData(SWT.FILL, SWT.TOP, true, false);
|
||||
layoutData.horizontalSpan = 2;
|
||||
translate.setLayoutData(layoutData);
|
||||
translate.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
validate();
|
||||
}
|
||||
});
|
||||
|
||||
if (executableData != null) {
|
||||
String value = executableData.get(IExternalExecutablesProperties.PROP_NAME);
|
||||
name.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
value = executableData.get(IExternalExecutablesProperties.PROP_PATH);
|
||||
path.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
value = executableData.get(IExternalExecutablesProperties.PROP_ARGS);
|
||||
args.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
value = executableData.get(IExternalExecutablesProperties.PROP_ICON);
|
||||
icon.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
value = executableData.get(IExternalExecutablesProperties.PROP_TRANSLATE);
|
||||
translate.setSelection(value != null ? Boolean.parseBoolean(value) : false);
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.dialogs.TrayDialog#createButtonBar(org.eclipse.swt.widgets.Composite)
|
||||
*/
|
||||
@Override
|
||||
protected Control createButtonBar(Composite parent) {
|
||||
Control control = super.createButtonBar(parent);
|
||||
validate();
|
||||
return control;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.dialogs.Dialog#createButton(org.eclipse.swt.widgets.Composite, int, java.lang.String, boolean)
|
||||
*/
|
||||
@Override
|
||||
protected Button createButton(Composite parent, int id, String label, boolean defaultButton) {
|
||||
if (IDialogConstants.OK_ID == id && !edit) {
|
||||
label = Messages.ExternalExecutablesDialog_button_add;
|
||||
}
|
||||
return super.createButton(parent, id, label, defaultButton);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.jface.dialogs.CustomTrayDialog#okPressed()
|
||||
*/
|
||||
@Override
|
||||
protected void okPressed() {
|
||||
if (name != null && path != null) {
|
||||
// Extract the executable properties
|
||||
if (executableData == null) executableData = new HashMap<String, String>();
|
||||
|
||||
String value = name.getText();
|
||||
if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
|
||||
executableData.put(IExternalExecutablesProperties.PROP_NAME, value);
|
||||
} else {
|
||||
executableData.remove(IExternalExecutablesProperties.PROP_NAME);
|
||||
}
|
||||
|
||||
value = path.getText();
|
||||
if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
|
||||
executableData.put(IExternalExecutablesProperties.PROP_PATH, value);
|
||||
} else {
|
||||
executableData.remove(IExternalExecutablesProperties.PROP_PATH);
|
||||
}
|
||||
|
||||
value = args.getText();
|
||||
if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
|
||||
executableData.put(IExternalExecutablesProperties.PROP_ARGS, value);
|
||||
} else {
|
||||
executableData.remove(IExternalExecutablesProperties.PROP_ARGS);
|
||||
}
|
||||
|
||||
value = icon.getText();
|
||||
if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
|
||||
executableData.put(IExternalExecutablesProperties.PROP_ICON, value);
|
||||
} else {
|
||||
executableData.remove(IExternalExecutablesProperties.PROP_ICON);
|
||||
}
|
||||
|
||||
if (translate.getSelection()) {
|
||||
executableData.put(IExternalExecutablesProperties.PROP_TRANSLATE, Boolean.TRUE.toString());
|
||||
} else {
|
||||
executableData.remove(IExternalExecutablesProperties.PROP_TRANSLATE);
|
||||
}
|
||||
} else {
|
||||
executableData = null;
|
||||
}
|
||||
super.okPressed();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void cancelPressed() {
|
||||
// If the user pressed cancel, the dialog needs to return null
|
||||
executableData = null;
|
||||
super.cancelPressed();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the executable properties the user entered.
|
||||
*
|
||||
* @return The executable properties or <code>null</code>.
|
||||
*/
|
||||
public Map<String, String> getExecutableData() {
|
||||
return executableData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set or reset the executable properties. This method has effect
|
||||
* only if called before opening the dialog.
|
||||
*
|
||||
* @param data The executable properties or <code>null</code>.
|
||||
*/
|
||||
public void setExecutableData(Map<String, String> data) {
|
||||
if (data == null) {
|
||||
executableData = data;
|
||||
} else {
|
||||
executableData = new HashMap<String, String>(data);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the dialog.
|
||||
*/
|
||||
public void validate() {
|
||||
boolean valid = true;
|
||||
|
||||
if (name != null && !name.isDisposed()) {
|
||||
valid = !"".equals(name.getText()); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
if (path != null && !path.isDisposed()) {
|
||||
String value = path.getText();
|
||||
if (!"".equals(value)) { //$NON-NLS-1$
|
||||
File f = new File(value);
|
||||
valid |= f.isAbsolute() && f.canRead();
|
||||
} else {
|
||||
valid = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (icon != null && !icon.isDisposed()) {
|
||||
String value = icon.getText();
|
||||
if (!"".equals(value)) { //$NON-NLS-1$
|
||||
File f = new File(value);
|
||||
valid |= f.isAbsolute() && f.canRead();
|
||||
}
|
||||
}
|
||||
|
||||
Button okButton = getButton(IDialogConstants.OK_ID);
|
||||
if (okButton != null) okButton.setEnabled(valid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the title for this dialog.
|
||||
*
|
||||
* @param title The title.
|
||||
*/
|
||||
public void setDialogTitle(String title) {
|
||||
if (getShell() != null && !getShell().isDisposed()) {
|
||||
getShell().setText(title);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.showin;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.interfaces.IExternalExecutablesProperties;
|
||||
import org.eclipse.ui.IStartup;
|
||||
|
||||
/**
|
||||
* External executables data initializer.
|
||||
*/
|
||||
public class ExternalExecutablesInitializer implements IStartup {
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.ui.IStartup#earlyStartup()
|
||||
*/
|
||||
@Override
|
||||
public void earlyStartup() {
|
||||
// On Windows, initialize the "Git Bash" custom "Show In" menu entry
|
||||
if (Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
String gitPath = null;
|
||||
String iconPath = null;
|
||||
|
||||
String path = System.getenv("PATH"); //$NON-NLS-1$
|
||||
if (path != null) {
|
||||
StringTokenizer tokenizer = new StringTokenizer(path, ";"); //$NON-NLS-1$
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
String token = tokenizer.nextToken();
|
||||
File f = new File(token, "git.exe"); //$NON-NLS-1$
|
||||
if (f.canRead()) {
|
||||
File f2 = new File(f.getParentFile().getParentFile(), "bin/sh.exe"); //$NON-NLS-1$
|
||||
if (f2.canExecute()) {
|
||||
gitPath = f2.getAbsolutePath();
|
||||
}
|
||||
|
||||
f2 = new File(f.getParentFile().getParentFile(), "etc/git.ico"); //$NON-NLS-1$
|
||||
if (f2.canRead()) {
|
||||
iconPath = f2.getAbsolutePath();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (gitPath != null) {
|
||||
// Load the configured external executables
|
||||
List<Map<String, String>> l = ExternalExecutablesManager.load();
|
||||
if (l == null) l = new ArrayList<Map<String, String>>();
|
||||
// Find a entry labeled "Git Bash"
|
||||
Map<String, String> m = null;
|
||||
for (Map<String, String> candidate : l) {
|
||||
String name = candidate.get(IExternalExecutablesProperties.PROP_NAME);
|
||||
if ("Git Bash".equals(name)) { //$NON-NLS-1$
|
||||
m = candidate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (m == null) {
|
||||
m = new HashMap<String, String>();
|
||||
m.put(IExternalExecutablesProperties.PROP_NAME, "Git Bash"); //$NON-NLS-1$
|
||||
m.put(IExternalExecutablesProperties.PROP_PATH, gitPath);
|
||||
m.put(IExternalExecutablesProperties.PROP_ARGS, "--login -i"); //$NON-NLS-1$
|
||||
if (iconPath != null) m.put(IExternalExecutablesProperties.PROP_ICON, iconPath);
|
||||
m.put(IExternalExecutablesProperties.PROP_TRANSLATE, Boolean.TRUE.toString());
|
||||
|
||||
l.add(m);
|
||||
ExternalExecutablesManager.save(l);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,181 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.showin;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.swt.graphics.ImageData;
|
||||
import org.eclipse.swt.graphics.ImageLoader;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.activator.UIPlugin;
|
||||
|
||||
/**
|
||||
* External executables manager implementation.
|
||||
*/
|
||||
public class ExternalExecutablesManager {
|
||||
|
||||
/**
|
||||
* Loads the list of all saved external executables.
|
||||
*
|
||||
* @return The list of all saved external executables or <code>null</code>.
|
||||
*/
|
||||
public static List<Map<String, String>> load() {
|
||||
List<Map<String, String>> l = new ArrayList<Map<String, String>>();
|
||||
|
||||
IPath stateLocation = UIPlugin.getDefault().getStateLocation();
|
||||
if (stateLocation != null) {
|
||||
File f = stateLocation.append(".executables/data.properties").toFile(); //$NON-NLS-1$
|
||||
if (f.canRead()) {
|
||||
FileReader r = null;
|
||||
|
||||
try {
|
||||
Properties data = new Properties();
|
||||
r= new FileReader(f);
|
||||
data.load(r);
|
||||
|
||||
Map<Integer, Map<String, String>> c = new HashMap<Integer, Map<String, String>>();
|
||||
for (String name : data.stringPropertyNames()) {
|
||||
if (name == null || name.indexOf('.') == -1) continue;
|
||||
int ix = name.indexOf('.');
|
||||
String n = name.substring(0, ix);
|
||||
String k = (ix + 1) < name.length() ? name.substring(ix + 1) : null;
|
||||
if (n == null || k == null) continue;
|
||||
|
||||
Integer i = null;
|
||||
try { i = Integer.decode(n); } catch (NumberFormatException e) { /* ignored on purpose */ }
|
||||
if (i == null) continue;
|
||||
|
||||
Map<String, String> m = c.get(i);
|
||||
if (m == null) {
|
||||
m = new HashMap<String, String>();
|
||||
c.put(i, m);
|
||||
}
|
||||
Assert.isNotNull(m);
|
||||
|
||||
m.put(k, data.getProperty(name));
|
||||
}
|
||||
|
||||
List<Integer> k = new ArrayList<Integer>(c.keySet());
|
||||
Collections.sort(k);
|
||||
for (Integer i : k) {
|
||||
Map<String, String> m = c.get(i);
|
||||
if (m != null && !m.isEmpty()) l.add(m);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (Platform.inDebugMode()) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} finally {
|
||||
if (r != null) try { r.close(); } catch (IOException e) { /* ignored on purpose */ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return l;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the list of external executables.
|
||||
*
|
||||
* @param l The list of external executables or <code>null</code>.
|
||||
*/
|
||||
public static void save(List<Map<String, String>> l) {
|
||||
IPath stateLocation = UIPlugin.getDefault().getStateLocation();
|
||||
if (stateLocation != null) {
|
||||
File f = stateLocation.append(".executables/data.properties").toFile(); //$NON-NLS-1$
|
||||
if (f.isFile() && (l == null || l.isEmpty())) {
|
||||
@SuppressWarnings("unused")
|
||||
boolean s = f.delete();
|
||||
} else {
|
||||
FileWriter w = null;
|
||||
|
||||
try {
|
||||
Properties data = new Properties();
|
||||
for (int i = 0; i < l.size(); i++) {
|
||||
Map<String, String> m = l.get(i);
|
||||
for (Entry<String, String> e : m.entrySet()) {
|
||||
String key = Integer.toString(i) + "." + e.getKey(); //$NON-NLS-1$
|
||||
data.setProperty(key, e.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (!f.exists()) {
|
||||
@SuppressWarnings("unused")
|
||||
boolean s = f.getParentFile().mkdirs();
|
||||
s = f.createNewFile();
|
||||
}
|
||||
w = new FileWriter(f);
|
||||
data.store(w, null);
|
||||
} catch (Exception e) {
|
||||
if (Platform.inDebugMode()) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} finally {
|
||||
if (w != null) {
|
||||
try {
|
||||
w.flush();
|
||||
w.close();
|
||||
} catch (IOException e) {
|
||||
/* ignored on purpose */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the image data suitable for showing an icon in a menu
|
||||
* (16 x 16, 8bit depth) from the given file.
|
||||
*
|
||||
* @param path The image file path. Must not be <code>null</code>.
|
||||
* @return The image data or <code>null</code>.
|
||||
*/
|
||||
public static ImageData loadImage(String path) {
|
||||
Assert.isNotNull(path);
|
||||
|
||||
ImageData id = null;
|
||||
|
||||
ImageLoader loader = new ImageLoader();
|
||||
ImageData[] data = loader.load(path);
|
||||
|
||||
if (data != null) {
|
||||
for (ImageData d : data) {
|
||||
if (d.height == 16 && d.width == 16) {
|
||||
if (id == null || id.height != 16 && id.width != 16) {
|
||||
id = d;
|
||||
} else if (d.depth < id.depth && d.depth >= 8){
|
||||
id = d;
|
||||
}
|
||||
} else {
|
||||
if (id == null) {
|
||||
id = d;
|
||||
} else if (id.height != 16 && d.height < id.height && id.width != 16 && d.width < id.width) {
|
||||
id = d;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.showin.interfaces;
|
||||
|
||||
/**
|
||||
* External executables data property names.
|
||||
*/
|
||||
public interface IExternalExecutablesProperties {
|
||||
|
||||
/**
|
||||
* The name/label of the external executable.
|
||||
*/
|
||||
public final String PROP_NAME = "Name"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The absolute path of the external executable.
|
||||
*/
|
||||
public final String PROP_PATH = "Path"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The arguments to pass to the external executable.
|
||||
*/
|
||||
public final String PROP_ARGS = "Args"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The absolute path to the icon representing the external executable.
|
||||
*/
|
||||
public final String PROP_ICON = "Icon"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* If set, backslashes are translated to forward slashes on paste.
|
||||
*/
|
||||
public final String PROP_TRANSLATE = "Translate"; //$NON-NLS-1$
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.showin.interfaces;
|
||||
|
||||
/**
|
||||
* Terminals plug-in preference key definitions.
|
||||
*/
|
||||
public interface IPreferenceKeys {
|
||||
/**
|
||||
* Preference keys family prefix.
|
||||
*/
|
||||
public final String PREF_TERMINAL = "terminals"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Preference key: Local terminal initial working directory.
|
||||
*/
|
||||
public final String PREF_LOCAL_TERMINAL_INITIAL_CWD = PREF_TERMINAL + ".localTerminalInitialCwd"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Preference value: Local terminal initial working directory is "User home"
|
||||
*/
|
||||
public final String PREF_INITIAL_CWD_USER_HOME = "userhome"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Preference value: Local terminal initial working directory is "Eclipse home"
|
||||
*/
|
||||
public final String PREF_INITIAL_CWD_ECLIPSE_HOME = "eclipsehome"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Preference value: Local terminal initial working directory is "Eclipse workspace"
|
||||
*/
|
||||
public final String PREF_INITIAL_CWD_ECLIPSE_WS = "eclipsews"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Preference key: Local terminal default shell command on Unix hosts.
|
||||
*/
|
||||
public final String PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX = PREF_TERMINAL + ".localTerminalDefaultShellUnix"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Preference key: Local terminal default shell command arguments on Unix hosts.
|
||||
*/
|
||||
public final String PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS = PREF_TERMINAL + ".localTerminalDefaultShellUnixArgs"; //$NON-NLS-1$
|
||||
}
|
|
@ -0,0 +1,678 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2014 - 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.showin.preferences;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.URIUtil;
|
||||
import org.eclipse.core.variables.IStringVariableManager;
|
||||
import org.eclipse.core.variables.VariablesPlugin;
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.resource.JFaceResources;
|
||||
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
|
||||
import org.eclipse.jface.viewers.ColumnWeightData;
|
||||
import org.eclipse.jface.viewers.ILabelProviderListener;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||
import org.eclipse.jface.viewers.IStructuredContentProvider;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.viewers.ITableLabelProvider;
|
||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||
import org.eclipse.jface.viewers.TableLayout;
|
||||
import org.eclipse.jface.viewers.TableViewer;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.jface.window.Window;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.ModifyEvent;
|
||||
import org.eclipse.swt.events.ModifyListener;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.graphics.GC;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.graphics.ImageData;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Combo;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.DirectoryDialog;
|
||||
import org.eclipse.swt.widgets.FileDialog;
|
||||
import org.eclipse.swt.widgets.Group;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Table;
|
||||
import org.eclipse.swt.widgets.TableColumn;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
import org.eclipse.tcf.te.ui.terminals.controls.NoteCompositeHelper;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.activator.UIPlugin;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.nls.Messages;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.ExternalExecutablesDialog;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.ExternalExecutablesManager;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.interfaces.IExternalExecutablesProperties;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.interfaces.IPreferenceKeys;
|
||||
import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
import org.osgi.framework.Bundle;
|
||||
|
||||
/**
|
||||
* Terminals top preference page implementation.
|
||||
*/
|
||||
public class PreferencePage extends org.eclipse.jface.preference.PreferencePage implements IWorkbenchPreferencePage {
|
||||
/* default */ TableViewer viewer;
|
||||
private Button addButton;
|
||||
private Button editButton;
|
||||
private Button removeButton;
|
||||
/* default */ Combo workingDir;
|
||||
private Button browseButton;
|
||||
|
||||
private Button variablesButton;
|
||||
private boolean hasVariablesButton = false;
|
||||
|
||||
/* default */ Text command;
|
||||
private Button commandBrowseButton;
|
||||
private Text arguments;
|
||||
|
||||
/* default */ final List<Map<String, String>> executables = new ArrayList<Map<String, String>>();
|
||||
/* default */ final Map<String, Image> images = new HashMap<String, Image>();
|
||||
|
||||
/* default */ static final Object[] NO_ELEMENTS = new Object[0];
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
|
||||
*/
|
||||
@Override
|
||||
public void init(IWorkbench workbench) {
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.debug.ui"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
hasVariablesButton = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
|
||||
*/
|
||||
@Override
|
||||
protected Control createContents(final Composite parent) {
|
||||
final GC gc = new GC(parent);
|
||||
gc.setFont(JFaceResources.getDialogFont());
|
||||
|
||||
Composite panel = new Composite(parent, SWT.NONE);
|
||||
panel.setLayout(new GridLayout());
|
||||
GridData layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
|
||||
panel.setLayoutData(layoutData);
|
||||
|
||||
Label label = new Label(panel, SWT.HORIZONTAL);
|
||||
label.setText(Messages.PreferencePage_label);
|
||||
label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
|
||||
|
||||
if (!Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
Group group = new Group(panel, SWT.NONE);
|
||||
group.setText(Messages.PreferencePage_command_label);
|
||||
group.setLayout(new GridLayout(2, false));
|
||||
group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
|
||||
|
||||
command = new Text(group, SWT.SINGLE | SWT.BORDER);
|
||||
command.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
|
||||
command.addModifyListener(new ModifyListener() {
|
||||
@Override
|
||||
public void modifyText(ModifyEvent e) {
|
||||
boolean valid = true;
|
||||
String message = null;
|
||||
|
||||
String text = command.getText();
|
||||
if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$
|
||||
IPath p = new Path(text.trim());
|
||||
valid = p.toFile().isFile() && p.toFile().canRead() && p.toFile().canExecute();
|
||||
if (!valid) message = Messages.PreferencePage_command_invalid;
|
||||
}
|
||||
|
||||
setValid(valid);
|
||||
setErrorMessage(message);
|
||||
}
|
||||
});
|
||||
|
||||
commandBrowseButton = new Button(group, SWT.PUSH);
|
||||
commandBrowseButton.setText(Messages.PreferencePage_command_button_browse);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
|
||||
layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14);
|
||||
commandBrowseButton.setLayoutData(layoutData);
|
||||
commandBrowseButton.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
FileDialog dialog = new FileDialog(parent.getShell(), SWT.OPEN);
|
||||
|
||||
String text = command.getText();
|
||||
if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$
|
||||
IPath p = new Path(text);
|
||||
|
||||
if (p.toFile().isFile() || !p.toFile().exists()) {
|
||||
dialog.setFilterPath(p.removeLastSegments(1).toOSString());
|
||||
dialog.setFileName(p.lastSegment());
|
||||
} else if (p.toFile().isDirectory()) {
|
||||
dialog.setFilterPath(p.toOSString());
|
||||
}
|
||||
}
|
||||
|
||||
String selected = dialog.open();
|
||||
if (selected != null) {
|
||||
IPath sp = new Path(selected);
|
||||
command.setText(sp.toOSString());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
String cmd = UIPlugin.getScopedPreferences().getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX);
|
||||
if (cmd != null && !"".equals(cmd)) { //$NON-NLS-1$
|
||||
command.setText(new Path(cmd).toOSString());
|
||||
}
|
||||
|
||||
Composite argsPanel = new Composite(group, SWT.NONE);
|
||||
GridLayout layout = new GridLayout(2, false);
|
||||
layout.marginHeight = 0; layout.marginWidth = 0;
|
||||
argsPanel.setLayout(layout);
|
||||
layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
|
||||
layoutData.horizontalSpan = 2;
|
||||
argsPanel.setLayoutData(layoutData);
|
||||
|
||||
label = new Label(argsPanel, SWT.NONE);
|
||||
label.setText(Messages.PreferencePage_command_arguments_label);
|
||||
|
||||
arguments = new Text(argsPanel, SWT.SINGLE | SWT.BORDER);
|
||||
arguments.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
|
||||
|
||||
String args = UIPlugin.getScopedPreferences().getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS);
|
||||
if (args != null && !"".equals(args)) { //$NON-NLS-1$
|
||||
arguments.setText(args);
|
||||
}
|
||||
|
||||
NoteCompositeHelper.createNoteComposite(group.getFont(), group, Messages.PreferencePage_command_note_label, Messages.PreferencePage_command_note_text);
|
||||
}
|
||||
|
||||
Group group = new Group(panel, SWT.NONE);
|
||||
group.setText(Messages.PreferencePage_workingDir_label);
|
||||
group.setLayout(new GridLayout(hasVariablesButton ? 3 : 2, false));
|
||||
group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
|
||||
|
||||
workingDir = new Combo(group, SWT.DROP_DOWN);
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
workingDir.setItems(new String[] { Messages.PreferencePage_workingDir_userhome_label, Messages.PreferencePage_workingDir_eclipsehome_label, Messages.PreferencePage_workingDir_eclipsews_label });
|
||||
} else {
|
||||
workingDir.setItems(new String[] { Messages.PreferencePage_workingDir_userhome_label, Messages.PreferencePage_workingDir_eclipsehome_label });
|
||||
}
|
||||
workingDir.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
|
||||
workingDir.select(0);
|
||||
workingDir.addModifyListener(new ModifyListener() {
|
||||
@Override
|
||||
public void modifyText(ModifyEvent e) {
|
||||
boolean valid = true;
|
||||
String message = null;
|
||||
|
||||
String text = workingDir.getText();
|
||||
if (text != null && !"".equals(text.trim()) //$NON-NLS-1$
|
||||
&& !Messages.PreferencePage_workingDir_userhome_label.equals(text)
|
||||
&& !Messages.PreferencePage_workingDir_eclipsehome_label.equals(text)
|
||||
&& !Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) {
|
||||
try {
|
||||
// Resolve possible dynamic variables
|
||||
IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager();
|
||||
String resolved = vm.performStringSubstitution(text.trim());
|
||||
|
||||
IPath p = new Path(resolved);
|
||||
valid = p.toFile().canRead() && p.toFile().isDirectory();
|
||||
if (!valid) message = Messages.PreferencePage_workingDir_invalid;
|
||||
} catch (CoreException ex) {
|
||||
valid = false;
|
||||
message = ex.getLocalizedMessage();
|
||||
}
|
||||
}
|
||||
|
||||
setValid(valid);
|
||||
setErrorMessage(message);
|
||||
}
|
||||
});
|
||||
|
||||
browseButton = new Button(group, SWT.PUSH);
|
||||
browseButton.setText(Messages.PreferencePage_workingDir_button_browse);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
|
||||
layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14);
|
||||
browseButton.setLayoutData(layoutData);
|
||||
browseButton.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
IPath uh = null;
|
||||
IPath eh = null;
|
||||
IPath ew = null;
|
||||
|
||||
// HOME
|
||||
String home = System.getProperty("user.home"); //$NON-NLS-1$
|
||||
if (home != null && !"".equals(home)) uh = new Path(home); //$NON-NLS-1$
|
||||
|
||||
// ECLIPSE_HOME
|
||||
String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$
|
||||
if (eclipseHomeLocation != null) {
|
||||
try {
|
||||
URI uri = URIUtil.fromString(eclipseHomeLocation);
|
||||
File f = URIUtil.toFile(uri);
|
||||
eh = new Path(f.getAbsolutePath());
|
||||
} catch (URISyntaxException ex) { /* ignored on purpose */ }
|
||||
}
|
||||
|
||||
// ECLIPSE_WORKSPACE
|
||||
Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
|
||||
if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
|
||||
if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null
|
||||
&& org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null
|
||||
&& org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation() != null) {
|
||||
ew = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation();
|
||||
}
|
||||
}
|
||||
|
||||
DirectoryDialog dialog = new DirectoryDialog(parent.getShell(), SWT.OPEN);
|
||||
|
||||
// Determine the filter path
|
||||
String text = workingDir.getText();
|
||||
if (Messages.PreferencePage_workingDir_userhome_label.equals(text)) {
|
||||
dialog.setFilterPath(uh.toOSString());
|
||||
} else if (Messages.PreferencePage_workingDir_eclipsehome_label.equals(text)) {
|
||||
dialog.setFilterPath(eh.toOSString());
|
||||
} else if (Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) {
|
||||
dialog.setFilterPath(ew.toOSString());
|
||||
} else if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$
|
||||
try {
|
||||
// Resolve possible dynamic variables
|
||||
IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager();
|
||||
String resolved = vm.performStringSubstitution(text.trim());
|
||||
dialog.setFilterPath(resolved);
|
||||
} catch (CoreException ex) {
|
||||
if (Platform.inDebugMode()) {
|
||||
UIPlugin.getDefault().getLog().log(ex.getStatus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String selected = dialog.open();
|
||||
if (selected != null) {
|
||||
IPath sp = new Path(selected);
|
||||
|
||||
if (uh.equals(sp)) {
|
||||
workingDir.select(0);
|
||||
} else if (eh.equals(sp)) {
|
||||
workingDir.select(1);
|
||||
} else if (ew.equals(sp)) {
|
||||
workingDir.select(2);
|
||||
} else {
|
||||
workingDir.setText(sp.toOSString());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (hasVariablesButton) {
|
||||
variablesButton = new Button(group, SWT.PUSH);
|
||||
variablesButton.setText(Messages.PreferencePage_workingDir_button_variables);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
|
||||
layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14);
|
||||
variablesButton.setLayoutData(layoutData);
|
||||
variablesButton.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
org.eclipse.debug.ui.StringVariableSelectionDialog dialog = new org.eclipse.debug.ui.StringVariableSelectionDialog(getShell());
|
||||
dialog.open();
|
||||
String expression = dialog.getVariableExpression();
|
||||
if (expression != null) {
|
||||
if ("${eclipse_home}".equals(expression)) { //$NON-NLS-1$
|
||||
workingDir.select(1);
|
||||
} else if ("${workspace_loc}".equals(expression)) { //$NON-NLS-1$
|
||||
workingDir.select(2);
|
||||
} else {
|
||||
workingDir.setText(expression);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
String initialCwd = UIPlugin.getScopedPreferences().getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD);
|
||||
if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd) || "".equals(initialCwd.trim())) { //$NON-NLS-1$
|
||||
workingDir.select(0);
|
||||
} else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd) || "${eclipse_home}".equals(initialCwd)) { //$NON-NLS-1$
|
||||
workingDir.select(1);
|
||||
} else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd) || "${workspace_loc}".equals(initialCwd)) { //$NON-NLS-1$
|
||||
workingDir.select(2);
|
||||
} else {
|
||||
workingDir.setText(new Path(initialCwd).toOSString());
|
||||
}
|
||||
|
||||
NoteCompositeHelper.createNoteComposite(group.getFont(), group, Messages.PreferencePage_workingDir_note_label, Messages.PreferencePage_workingDir_note_text);
|
||||
|
||||
group = new Group(panel, SWT.NONE);
|
||||
group.setText(Messages.PreferencePage_executables_label);
|
||||
group.setLayout(new GridLayout(2, false));
|
||||
group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
|
||||
|
||||
viewer = new TableViewer(group, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
|
||||
|
||||
Table table = viewer.getTable();
|
||||
table.setHeaderVisible(true);
|
||||
table.setLinesVisible(true);
|
||||
|
||||
TableColumn column = new TableColumn(table, SWT.LEFT);
|
||||
column.setText(Messages.PreferencePage_executables_column_name_label);
|
||||
column = new TableColumn(table, SWT.LEFT);
|
||||
column.setText(Messages.PreferencePage_executables_column_path_label);
|
||||
|
||||
ColumnViewerToolTipSupport.enableFor(viewer);
|
||||
|
||||
TableLayout tableLayout = new TableLayout();
|
||||
tableLayout.addColumnData(new ColumnWeightData(35));
|
||||
tableLayout.addColumnData(new ColumnWeightData(65));
|
||||
table.setLayout(tableLayout);
|
||||
|
||||
layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||
layoutData.heightHint = Dialog.convertHeightInCharsToPixels(gc.getFontMetrics(), 10);
|
||||
table.setLayoutData(layoutData);
|
||||
|
||||
Composite buttonsPanel = new Composite(group, SWT.NONE);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.marginHeight = 0; layout.marginWidth = 0;
|
||||
buttonsPanel.setLayout(layout);
|
||||
buttonsPanel.setLayoutData(new GridData(SWT.LEAD, SWT.BEGINNING, false, false));
|
||||
|
||||
addButton = new Button(buttonsPanel, SWT.PUSH);
|
||||
addButton.setText(Messages.PreferencePage_executables_button_add_label);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
|
||||
layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10);
|
||||
addButton.setLayoutData(layoutData);
|
||||
addButton.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
ExternalExecutablesDialog dialog = new ExternalExecutablesDialog(PreferencePage.this.getShell(), false);
|
||||
if (dialog.open() == Window.OK) {
|
||||
// Get the executable properties and add it to the the list
|
||||
Map<String, String> executableData = dialog.getExecutableData();
|
||||
if (executableData != null && !executables.contains(executableData)) {
|
||||
executables.add(executableData);
|
||||
viewer.refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
editButton = new Button(buttonsPanel, SWT.PUSH);
|
||||
editButton.setText(Messages.PreferencePage_executables_button_edit_label);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||
layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10);
|
||||
editButton.setLayoutData(layoutData);
|
||||
editButton.addSelectionListener(new SelectionAdapter() {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
ISelection s = viewer.getSelection();
|
||||
if (s instanceof IStructuredSelection && !s.isEmpty()) {
|
||||
Object element = ((IStructuredSelection)s).getFirstElement();
|
||||
if (element instanceof Map) {
|
||||
final Map<String, String> m = (Map<String, String>)element;
|
||||
ExternalExecutablesDialog dialog = new ExternalExecutablesDialog(PreferencePage.this.getShell(), true);
|
||||
dialog.setExecutableData(m);
|
||||
if (dialog.open() == Window.OK) {
|
||||
Map<String, String> executableData = dialog.getExecutableData();
|
||||
if (executableData != null) {
|
||||
m.clear();
|
||||
m.putAll(executableData);
|
||||
viewer.refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
removeButton = new Button(buttonsPanel, SWT.PUSH);
|
||||
removeButton.setText(Messages.PreferencePage_executables_button_remove_label);
|
||||
layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||
layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10);
|
||||
removeButton.setLayoutData(layoutData);
|
||||
removeButton.addSelectionListener(new SelectionAdapter() {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
ISelection s = viewer.getSelection();
|
||||
if (s instanceof IStructuredSelection && !s.isEmpty()) {
|
||||
Iterator<?> iterator = ((IStructuredSelection)s).iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Object element = iterator.next();
|
||||
if (element instanceof Map) {
|
||||
Map<String, Object> m = (Map<String, Object>)element;
|
||||
executables.remove(m);
|
||||
}
|
||||
viewer.refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
viewer.setContentProvider(new IStructuredContentProvider() {
|
||||
@Override
|
||||
public Object[] getElements(Object inputElement) {
|
||||
if (inputElement instanceof List && !((List<?>)inputElement).isEmpty()) {
|
||||
return ((List<?>)inputElement).toArray();
|
||||
}
|
||||
return NO_ELEMENTS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
});
|
||||
|
||||
viewer.setLabelProvider(new ITableLabelProvider() {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public String getColumnText(Object element, int columnIndex) {
|
||||
if (element instanceof Map) {
|
||||
Map<String, Object> m = (Map<String, Object>)element;
|
||||
|
||||
switch (columnIndex) {
|
||||
case 0:
|
||||
return (String)m.get(IExternalExecutablesProperties.PROP_NAME);
|
||||
case 1:
|
||||
return (String)m.get(IExternalExecutablesProperties.PROP_PATH);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public Image getColumnImage(Object element, int columnIndex) {
|
||||
Image i = null;
|
||||
|
||||
if (element instanceof Map) {
|
||||
switch (columnIndex) {
|
||||
case 0:
|
||||
Map<String, Object> m = (Map<String, Object>)element;
|
||||
String icon = (String) m.get(IExternalExecutablesProperties.PROP_ICON);
|
||||
if (icon != null) {
|
||||
i = images.get(icon);
|
||||
if (i == null) {
|
||||
ImageData id = ExternalExecutablesManager.loadImage(icon);
|
||||
if (id != null) {
|
||||
ImageDescriptor d = ImageDescriptor.createFromImageData(id);
|
||||
if (d != null) i = d.createImage();
|
||||
if (i != null) images.put(icon, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeListener(ILabelProviderListener listener) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLabelProperty(Object element, String property) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(ILabelProviderListener listener) {
|
||||
}
|
||||
});
|
||||
|
||||
List<Map<String, String>> l = ExternalExecutablesManager.load();
|
||||
if (l != null) executables.addAll(l);
|
||||
|
||||
viewer.setInput(executables);
|
||||
|
||||
viewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
|
||||
@Override
|
||||
public void selectionChanged(SelectionChangedEvent event) {
|
||||
updateButtons();
|
||||
}
|
||||
});
|
||||
|
||||
updateButtons();
|
||||
|
||||
gc.dispose();
|
||||
|
||||
return panel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the button states.
|
||||
*/
|
||||
protected void updateButtons() {
|
||||
if (viewer != null) {
|
||||
addButton.setEnabled(true);
|
||||
|
||||
ISelection selection = viewer.getSelection();
|
||||
|
||||
boolean hasSelection = selection != null && !selection.isEmpty();
|
||||
int count = selection instanceof IStructuredSelection ? ((IStructuredSelection)selection).size() : 0;
|
||||
|
||||
editButton.setEnabled(hasSelection && count == 1);
|
||||
removeButton.setEnabled(hasSelection && count > 0);
|
||||
} else {
|
||||
addButton.setEnabled(false);
|
||||
editButton.setEnabled(false);
|
||||
removeButton.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
|
||||
*/
|
||||
@Override
|
||||
protected void performDefaults() {
|
||||
if (!Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
command.setText(""); //$NON-NLS-1$
|
||||
arguments.setText(""); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
String initialCwd = UIPlugin.getScopedPreferences().getDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD);
|
||||
if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd) || "".equals(initialCwd.trim())) { //$NON-NLS-1$
|
||||
workingDir.select(0);
|
||||
} else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd) || "${eclipse_home}".equals(initialCwd)) { //$NON-NLS-1$
|
||||
workingDir.select(1);
|
||||
} else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd) || "${workspace_loc}".equals(initialCwd)) { //$NON-NLS-1$
|
||||
workingDir.select(2);
|
||||
} else {
|
||||
workingDir.setText(new Path(initialCwd).toOSString());
|
||||
}
|
||||
|
||||
executables.clear();
|
||||
List<Map<String, String>> l = ExternalExecutablesManager.load();
|
||||
if (l != null) executables.addAll(l);
|
||||
viewer.refresh();
|
||||
|
||||
super.performDefaults();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.preference.PreferencePage#performOk()
|
||||
*/
|
||||
@Override
|
||||
public boolean performOk() {
|
||||
if (!Platform.OS_WIN32.equals(Platform.getOS())) {
|
||||
String text = command.getText();
|
||||
IPath p = new Path(text.trim());
|
||||
UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX, p.toFile().isFile() && p.toFile().canRead() && p.toFile().canExecute() ? p.toOSString() : null);
|
||||
|
||||
text = arguments.getText();
|
||||
UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS, !"".equals(text.trim()) ? text.trim() : null); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
String text = workingDir.getText();
|
||||
if (text == null || Messages.PreferencePage_workingDir_userhome_label.equals(text) || "".equals(text.trim())) { //$NON-NLS-1$
|
||||
UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, null);
|
||||
} else if (Messages.PreferencePage_workingDir_eclipsehome_label.equals(text)) {
|
||||
UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME);
|
||||
} else if (Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) {
|
||||
UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS);
|
||||
} else {
|
||||
try {
|
||||
// Resolve possible dynamic variables
|
||||
IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager();
|
||||
String resolved = vm.performStringSubstitution(text.trim());
|
||||
|
||||
IPath p = new Path(resolved);
|
||||
UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, p.toFile().canRead() && p.toFile().isDirectory() ? text.trim() : null);
|
||||
} catch (CoreException e) {
|
||||
if (Platform.inDebugMode()) {
|
||||
UIPlugin.getDefault().getLog().log(e.getStatus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ExternalExecutablesManager.save(executables);
|
||||
|
||||
return super.performOk();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.dialogs.DialogPage#dispose()
|
||||
*/
|
||||
@Override
|
||||
public void dispose() {
|
||||
for (Image i : images.values()) {
|
||||
i.dispose();
|
||||
}
|
||||
images.clear();
|
||||
super.dispose();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.local.showin.preferences;
|
||||
|
||||
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
|
||||
import org.eclipse.tcf.te.core.terminals.preferences.ScopedEclipsePreferences;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.activator.UIPlugin;
|
||||
import org.eclipse.tcf.te.ui.terminals.local.showin.interfaces.IPreferenceKeys;
|
||||
|
||||
/**
|
||||
* Terminals default preferences initializer.
|
||||
*/
|
||||
public class PreferencesInitializer extends AbstractPreferenceInitializer {
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public PreferencesInitializer() {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
|
||||
*/
|
||||
@Override
|
||||
public void initializeDefaultPreferences() {
|
||||
ScopedEclipsePreferences prefs = UIPlugin.getScopedPreferences();
|
||||
|
||||
prefs.putDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME);
|
||||
prefs.putDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX, null);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
1
plugins/org.eclipse.tcf.te.ui.terminals.process/.options
Normal file
1
plugins/org.eclipse.tcf.te.ui.terminals.process/.options
Normal file
|
@ -0,0 +1 @@
|
|||
org.eclipse.tcf.te.ui.terminals.process/debugmode = 0
|
39
plugins/org.eclipse.tcf.te.ui.terminals.process/.project
Normal file
39
plugins/org.eclipse.tcf.te.ui.terminals.process/.project
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.tcf.te.ui.terminals.process</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1329502082911</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-target</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
|
@ -0,0 +1,362 @@
|
|||
#Tue Oct 11 11:53:38 CEST 2011
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.autoboxing=warning
|
||||
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deadCode=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
|
||||
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
|
||||
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
|
||||
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
|
||||
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
|
||||
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
|
||||
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nullReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
|
||||
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
|
||||
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
|
||||
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=0
|
||||
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
|
||||
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
|
||||
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
|
||||
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
|
||||
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
|
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_header=false
|
||||
org.eclipse.jdt.core.formatter.comment.format_html=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
|
||||
org.eclipse.jdt.core.formatter.comment.format_source_code=true
|
||||
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
|
||||
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
|
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
|
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
|
||||
org.eclipse.jdt.core.formatter.comment.line_length=100
|
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
|
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
|
||||
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
|
||||
org.eclipse.jdt.core.formatter.compact_else_if=true
|
||||
org.eclipse.jdt.core.formatter.continuation_indentation=4
|
||||
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=4
|
||||
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
|
||||
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
|
||||
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
|
||||
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||
org.eclipse.jdt.core.formatter.indent_empty_lines=false
|
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
|
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
|
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||
org.eclipse.jdt.core.formatter.indentation.size=4
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
|
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
|
||||
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
|
||||
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=true
|
||||
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true
|
||||
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=true
|
||||
org.eclipse.jdt.core.formatter.lineSplit=100
|
||||
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
|
||||
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
|
||||
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
|
||||
org.eclipse.jdt.core.formatter.tabulation.char=tab
|
||||
org.eclipse.jdt.core.formatter.tabulation.size=4
|
||||
org.eclipse.jdt.core.formatter.use_on_off_tags=false
|
||||
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
|
||||
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
|
||||
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
|
|
@ -0,0 +1,56 @@
|
|||
eclipse.preferences.version=1
|
||||
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
|
||||
formatter_profile=_Target Explorer Java STD
|
||||
formatter_settings_version=12
|
||||
sp_cleanup.add_default_serial_version_id=true
|
||||
sp_cleanup.add_generated_serial_version_id=false
|
||||
sp_cleanup.add_missing_annotations=true
|
||||
sp_cleanup.add_missing_deprecated_annotations=true
|
||||
sp_cleanup.add_missing_methods=false
|
||||
sp_cleanup.add_missing_nls_tags=false
|
||||
sp_cleanup.add_missing_override_annotations=true
|
||||
sp_cleanup.add_missing_override_annotations_interface_methods=true
|
||||
sp_cleanup.add_serial_version_id=false
|
||||
sp_cleanup.always_use_blocks=true
|
||||
sp_cleanup.always_use_parentheses_in_expressions=false
|
||||
sp_cleanup.always_use_this_for_non_static_field_access=false
|
||||
sp_cleanup.always_use_this_for_non_static_method_access=false
|
||||
sp_cleanup.convert_to_enhanced_for_loop=false
|
||||
sp_cleanup.correct_indentation=false
|
||||
sp_cleanup.format_source_code=false
|
||||
sp_cleanup.format_source_code_changes_only=false
|
||||
sp_cleanup.make_local_variable_final=false
|
||||
sp_cleanup.make_parameters_final=false
|
||||
sp_cleanup.make_private_fields_final=true
|
||||
sp_cleanup.make_type_abstract_if_missing_method=false
|
||||
sp_cleanup.make_variable_declarations_final=false
|
||||
sp_cleanup.never_use_blocks=false
|
||||
sp_cleanup.never_use_parentheses_in_expressions=true
|
||||
sp_cleanup.on_save_use_additional_actions=true
|
||||
sp_cleanup.organize_imports=true
|
||||
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
|
||||
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
|
||||
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
|
||||
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
|
||||
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
|
||||
sp_cleanup.remove_private_constructors=true
|
||||
sp_cleanup.remove_trailing_whitespaces=true
|
||||
sp_cleanup.remove_trailing_whitespaces_all=true
|
||||
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
|
||||
sp_cleanup.remove_unnecessary_casts=true
|
||||
sp_cleanup.remove_unnecessary_nls_tags=true
|
||||
sp_cleanup.remove_unused_imports=true
|
||||
sp_cleanup.remove_unused_local_variables=false
|
||||
sp_cleanup.remove_unused_private_fields=true
|
||||
sp_cleanup.remove_unused_private_members=false
|
||||
sp_cleanup.remove_unused_private_methods=true
|
||||
sp_cleanup.remove_unused_private_types=true
|
||||
sp_cleanup.sort_members=false
|
||||
sp_cleanup.sort_members_all=false
|
||||
sp_cleanup.use_blocks=false
|
||||
sp_cleanup.use_blocks_only_for_return_and_throw=false
|
||||
sp_cleanup.use_parentheses_in_expressions=false
|
||||
sp_cleanup.use_this_for_non_static_field_access=false
|
||||
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
|
||||
sp_cleanup.use_this_for_non_static_method_access=false
|
||||
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
|
|
@ -0,0 +1,32 @@
|
|||
compilers.f.unresolved-features=1
|
||||
compilers.f.unresolved-plugins=1
|
||||
compilers.incompatible-environment=1
|
||||
compilers.p.build=1
|
||||
compilers.p.build.bin.includes=1
|
||||
compilers.p.build.encodings=2
|
||||
compilers.p.build.java.compiler=2
|
||||
compilers.p.build.java.compliance=1
|
||||
compilers.p.build.missing.output=2
|
||||
compilers.p.build.output.library=1
|
||||
compilers.p.build.source.library=1
|
||||
compilers.p.build.src.includes=1
|
||||
compilers.p.deprecated=1
|
||||
compilers.p.discouraged-class=1
|
||||
compilers.p.internal=1
|
||||
compilers.p.missing-packages=1
|
||||
compilers.p.missing-version-export-package=2
|
||||
compilers.p.missing-version-import-package=1
|
||||
compilers.p.missing-version-require-bundle=1
|
||||
compilers.p.no-required-att=0
|
||||
compilers.p.not-externalized-att=2
|
||||
compilers.p.unknown-attribute=1
|
||||
compilers.p.unknown-class=1
|
||||
compilers.p.unknown-element=1
|
||||
compilers.p.unknown-identifier=1
|
||||
compilers.p.unknown-resource=1
|
||||
compilers.p.unresolved-ex-points=0
|
||||
compilers.p.unresolved-import=0
|
||||
compilers.s.create-docs=false
|
||||
compilers.s.doc-folder=doc
|
||||
compilers.s.open-tags=1
|
||||
eclipse.preferences.version=1
|
|
@ -0,0 +1,24 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.tcf.te.ui.terminals.process;singleton:=true
|
||||
Bundle-Version: 1.3.0.qualifier
|
||||
Bundle-Activator: org.eclipse.tcf.te.ui.terminals.process.activator.UIPlugin
|
||||
Bundle-Vendor: %providerName
|
||||
Import-Package: org.eclipse.cdt.utils.pty;mandatory:=native,
|
||||
org.eclipse.cdt.utils.spawner;mandatory:=native
|
||||
Require-Bundle: org.eclipse.cdt.core;bundle-version="5.6";resolution:=optional,
|
||||
org.eclipse.core.expressions;bundle-version="3.4.400",
|
||||
org.eclipse.core.resources;bundle-version="3.8.1";resolution:=optional,
|
||||
org.eclipse.core.runtime;bundle-version="3.8.0",
|
||||
org.eclipse.tcf.te.core.terminals;bundle-version="1.3.0",
|
||||
org.eclipse.tcf.te.ui.terminals;bundle-version="1.3.0",
|
||||
org.eclipse.tm.terminal;bundle-version="3.3.1",
|
||||
org.eclipse.ui;bundle-version="3.8.0"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-Localization: plugin
|
||||
Export-Package: org.eclipse.tcf.te.ui.terminals.process,
|
||||
org.eclipse.tcf.te.ui.terminals.process.activator;x-internal:=true,
|
||||
org.eclipse.tcf.te.ui.terminals.process.help,
|
||||
org.eclipse.tcf.te.ui.terminals.process.nls;x-internal:=true
|
|
@ -0,0 +1,82 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2014 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
|
||||
# Most of the dependencies exposed here are actually covered in the feature.xml
|
||||
# This file ensures that the current bundle has all it needs, even if installed
|
||||
# without the enclosing org.eclipse.tcf.te.terminals.feature .
|
||||
# See also https://bugs.eclipse.org/bugs/show_bug.cgi?id=435150 .
|
||||
|
||||
# 1. Make the optional cdt.core dependency non-greedy: Use (or update to proper
|
||||
# version!) when installed, but do not install automatically since the newer
|
||||
# org.eclipse.cdt.core.native can satisfy the dependency better. We use this
|
||||
# trick since CDT 8.3 had no version on export-package yet but we do want
|
||||
# a version constraint.
|
||||
requires.0.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.0.name = org.eclipse.cdt.core
|
||||
#requires.0.range = [5.6, 6.0)
|
||||
requires.0.greedy = false
|
||||
requires.0.optional = true
|
||||
|
||||
#requires.1.namespace = org.eclipse.equinox.p2.iu
|
||||
#requires.1.name = org.eclipse.cdt.core.native
|
||||
#requires.1.range = [5.6, 6.0)
|
||||
#requires.1.greedy = true
|
||||
#requires.1.optional = true
|
||||
|
||||
# 2. Add the required fragments for local terminal support with proper version.
|
||||
requires.2.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.2.name = org.eclipse.cdt.core.aix
|
||||
#requires.2.range = [5.3, 6.0)
|
||||
requires.2.filter = (osgi.os=aix)
|
||||
|
||||
requires.3.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.3.name = org.eclipse.cdt.core.linux
|
||||
#requires.3.range = [5.2, 6.0)
|
||||
requires.3.filter = (osgi.os=linux)
|
||||
|
||||
requires.4.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.4.name = org.eclipse.cdt.core.linux.ppc64
|
||||
#requires.4.range = [5.1, 6.0)
|
||||
requires.4.filter = (&(osgi.os=linux)(osgi.arch=ppc64))
|
||||
|
||||
requires.5.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.5.name = org.eclipse.cdt.core.linux.x86
|
||||
#requires.5.range = [5.2, 6.0)
|
||||
requires.5.filter = (&(osgi.os=linux)(osgi.arch=x86))
|
||||
|
||||
requires.6.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.6.name = org.eclipse.cdt.core.linux.x86_64
|
||||
#requires.6.range = [5.2, 6.0)
|
||||
requires.6.filter = (&(osgi.os=linux)(osgi.arch=x86_64))
|
||||
|
||||
requires.7.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.7.name = org.eclipse.cdt.core.macosx
|
||||
#requires.7.range = [5.2, 6.0)
|
||||
requires.7.filter = (osgi.os=macosx)
|
||||
|
||||
requires.8.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.8.name = org.eclipse.cdt.core.solaris
|
||||
#requires.8.range = [5.2, 6.0)
|
||||
requires.8.filter = (&(osgi.os=solaris)(osgi.arch=sparc))
|
||||
|
||||
requires.9.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.9.name = org.eclipse.cdt.core.win32
|
||||
#requires.9.range = [5.3, 6.0)
|
||||
requires.9.filter = (osgi.os=win32)
|
||||
|
||||
requires.10.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.10.name = org.eclipse.cdt.core.win32.x86
|
||||
#requires.10.range = [5.2, 6.0)
|
||||
requires.10.filter = (&(osgi.os=win32)(osgi.arch=x86))
|
||||
|
||||
requires.11.namespace = org.eclipse.equinox.p2.iu
|
||||
requires.11.name = org.eclipse.cdt.core.win32.x86_64
|
||||
#requires.11.range = [5.2, 6.0)
|
||||
requires.11.filter = (&(osgi.os=win32)(osgi.arch=x86_64))
|
28
plugins/org.eclipse.tcf.te.ui.terminals.process/about.html
Normal file
28
plugins/org.eclipse.tcf.te.ui.terminals.process/about.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||
<title>About</title>
|
||||
</head>
|
||||
<body lang="EN-US">
|
||||
<h2>About This Content</h2>
|
||||
|
||||
<p>May 24, 2012</p>
|
||||
<h3>License</h3>
|
||||
|
||||
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
|
||||
indicated below, the Content is provided to you under the terms and conditions of the
|
||||
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
|
||||
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
|
||||
For purposes of the EPL, "Program" will mean the Content.</p>
|
||||
|
||||
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
|
||||
being redistributed by another party ("Redistributor") and different terms and conditions may
|
||||
apply to your use of any object code in the Content. Check the Redistributor's license that was
|
||||
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
|
||||
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
|
||||
and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,16 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
plugin.xml,\
|
||||
plugin.properties,\
|
||||
about.html
|
|
@ -0,0 +1,22 @@
|
|||
##################################################################################
|
||||
# Copyright (c) 2011, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
# This program and the accompanying materials are made available under the terms
|
||||
# of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
# available at http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
##################################################################################
|
||||
|
||||
pluginName = Terminals Process Connector
|
||||
providerName = Eclipse.org - Target Explorer
|
||||
|
||||
# ----- Terminal Connectors -----
|
||||
|
||||
TerminalConnector.process=Process Connector (hidden)
|
||||
|
||||
# ----- Terminal Launcher Delegates -----
|
||||
|
||||
ProcessLauncherDelegate.label=Streams Terminal
|
||||
|
||||
# ----- Commands and Menu contributions -----
|
24
plugins/org.eclipse.tcf.te.ui.terminals.process/plugin.xml
Normal file
24
plugins/org.eclipse.tcf.te.ui.terminals.process/plugin.xml
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?eclipse version="3.4"?>
|
||||
<plugin>
|
||||
|
||||
<!-- Terminal connector contributions -->
|
||||
<extension point="org.eclipse.tm.terminal.terminalConnectors">
|
||||
<connector
|
||||
class="org.eclipse.tcf.te.ui.terminals.process.ProcessConnector"
|
||||
hidden="true"
|
||||
id="org.eclipse.tcf.te.ui.terminals.ProcessConnector"
|
||||
name="%TerminalConnector.process"/>
|
||||
</extension>
|
||||
|
||||
<!-- Terminals launcher delegate contributions -->
|
||||
<extension point="org.eclipse.tcf.te.ui.terminals.launcherDelegates">
|
||||
<delegate
|
||||
class="org.eclipse.tcf.te.ui.terminals.process.ProcessLauncherDelegate"
|
||||
hidden="true"
|
||||
id="org.eclipse.tcf.te.ui.terminals.telnet.launcher.process"
|
||||
label="%ProcessLauncherDelegate.label">
|
||||
</delegate>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
17
plugins/org.eclipse.tcf.te.ui.terminals.process/pom.xml
Normal file
17
plugins/org.eclipse.tcf.te.ui.terminals.process/pom.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.tcf</groupId>
|
||||
<artifactId>org.eclipse.tcf.maven-build</artifactId>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<relativePath>../../../admin/pom-build.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<version>1.3.0.qualifier</version>
|
||||
<artifactId>org.eclipse.tcf.te.ui.terminals.process</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
</project>
|
|
@ -0,0 +1,304 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011, 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.process;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.StreamTokenizer;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.utils.pty.PTY;
|
||||
import org.eclipse.cdt.utils.spawner.ProcessFactory;
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.jface.dialogs.MessageDialog;
|
||||
import org.eclipse.osgi.util.NLS;
|
||||
import org.eclipse.swt.custom.CTabItem;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.constants.ILineSeparatorConstants;
|
||||
import org.eclipse.tcf.te.core.terminals.utils.Env;
|
||||
import org.eclipse.tcf.te.ui.terminals.manager.ConsoleManager;
|
||||
import org.eclipse.tcf.te.ui.terminals.process.nls.Messages;
|
||||
import org.eclipse.tcf.te.ui.terminals.streams.AbstractStreamsConnector;
|
||||
import org.eclipse.tm.internal.terminal.emulator.VT100Emulator;
|
||||
import org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ISettingsPage;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
|
||||
|
||||
/**
|
||||
* Process connector implementation.
|
||||
*/
|
||||
@SuppressWarnings("restriction")
|
||||
public class ProcessConnector extends AbstractStreamsConnector {
|
||||
// Reference to the process settings
|
||||
private final ProcessSettings settings;
|
||||
|
||||
// Reference to the PTY instance.
|
||||
private PTY pty;
|
||||
// Reference to the launched process instance.
|
||||
private Process process;
|
||||
// Reference to the process monitor
|
||||
private ProcessMonitor monitor;
|
||||
|
||||
// The terminal width and height. Initially unknown.
|
||||
private int width = -1;
|
||||
private int height = -1;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public ProcessConnector() {
|
||||
this(new ProcessSettings());
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param settings The process settings. Must not be <code>null</code>
|
||||
*/
|
||||
public ProcessConnector(ProcessSettings settings) {
|
||||
super();
|
||||
|
||||
Assert.isNotNull(settings);
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the process object or <code>null</code> if the
|
||||
* connector is connector.
|
||||
*
|
||||
* @return The process object or <code>null</code>.
|
||||
*/
|
||||
public Process getProcess() {
|
||||
return process;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.internal.terminal.provisional.api.provider.TerminalConnectorImpl#connect(org.eclipse.tcf.internal.terminal.provisional.api.ITerminalControl)
|
||||
*/
|
||||
@Override
|
||||
public void connect(ITerminalControl control) {
|
||||
Assert.isNotNull(control);
|
||||
super.connect(control);
|
||||
|
||||
pty = null;
|
||||
width = -1;
|
||||
height = -1;
|
||||
|
||||
try {
|
||||
boolean isAnsiTerminal = false;
|
||||
|
||||
// Try to determine process and PTY instance from the process settings
|
||||
process = settings.getProcess();
|
||||
pty = settings.getPTY();
|
||||
|
||||
// No process -> create PTY on supported platforms and execute
|
||||
// process image.
|
||||
if (process == null) {
|
||||
if (PTY.isSupported(PTY.Mode.TERMINAL)) {
|
||||
try {
|
||||
pty = new PTY(PTY.Mode.TERMINAL);
|
||||
|
||||
// Initialize the terminal size
|
||||
VT100Emulator text = ((VT100TerminalControl)control).getTerminalText();
|
||||
text.fontChanged();
|
||||
} catch (IOException e) {
|
||||
// PTY not supported
|
||||
}
|
||||
}
|
||||
|
||||
// Build up the command
|
||||
StringBuilder command = new StringBuilder(settings.getImage());
|
||||
String arguments = settings.getArguments();
|
||||
if (arguments != null && !"".equals(arguments.trim())) { //$NON-NLS-1$
|
||||
// Append to the command now
|
||||
command.append(" "); //$NON-NLS-1$
|
||||
command.append(arguments.trim());
|
||||
}
|
||||
|
||||
File workingDir =null;
|
||||
if (settings.getWorkingDir()!=null){
|
||||
workingDir = new File(settings.getWorkingDir());
|
||||
}
|
||||
|
||||
String[] envp = null;
|
||||
if (settings.getEnvironment()!=null){
|
||||
envp = settings.getEnvironment();
|
||||
}
|
||||
|
||||
if (settings.isMergeWithNativeEnvironment()) {
|
||||
envp = Env.getEnvironment(envp, true);
|
||||
}
|
||||
|
||||
isAnsiTerminal = getTermVariable(envp).startsWith("ansi"); //$NON-NLS-1$
|
||||
|
||||
if (pty != null) {
|
||||
// A PTY is available -> can use the ProcessFactory.
|
||||
|
||||
// Tokenize the command (ProcessFactory takes an array)
|
||||
StreamTokenizer st = new StreamTokenizer(new StringReader(command.toString()));
|
||||
st.resetSyntax();
|
||||
st.whitespaceChars(0, 32);
|
||||
st.whitespaceChars(0xa0, 0xa0);
|
||||
st.wordChars(33, 255);
|
||||
st.quoteChar('"');
|
||||
st.quoteChar('\'');
|
||||
|
||||
List<String> argv = new ArrayList<String>();
|
||||
int ttype = st.nextToken();
|
||||
while (ttype != StreamTokenizer.TT_EOF) {
|
||||
argv.add(st.sval);
|
||||
ttype = st.nextToken();
|
||||
}
|
||||
|
||||
// Execute the process
|
||||
process = ProcessFactory.getFactory().exec(argv.toArray(new String[argv.size()]), envp, workingDir, pty);
|
||||
} else {
|
||||
// No PTY -> just execute via the standard Java Runtime implementation.
|
||||
process = Runtime.getRuntime().exec(command.toString(), envp, workingDir);
|
||||
}
|
||||
}
|
||||
|
||||
String lineSeparator = settings.getLineSeparator();
|
||||
if (lineSeparator == null && pty == null) {
|
||||
lineSeparator = System.getProperty("line.separator"); //$NON-NLS-1$
|
||||
if ("\r".equals(lineSeparator)) { //$NON-NLS-1$
|
||||
lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_CR;
|
||||
}
|
||||
else if ("\n".equals(lineSeparator)) { //$NON-NLS-1$
|
||||
lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_LF;
|
||||
}
|
||||
else {
|
||||
lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_CRLF;
|
||||
}
|
||||
}
|
||||
|
||||
// Setup the listeners
|
||||
setStdoutListeners(settings.getStdOutListeners());
|
||||
setStderrListeners(settings.getStdErrListeners());
|
||||
|
||||
// Enable VT100 line wrapping if we are connected via pty
|
||||
// And TERM is VT100 compatible
|
||||
if (pty != null && !isAnsiTerminal)
|
||||
control.setVT100LineWrapping(true);
|
||||
|
||||
// connect the streams
|
||||
connectStreams(control, process.getOutputStream(), process.getInputStream(), (pty == null ? process.getErrorStream() : null), settings.isLocalEcho(), lineSeparator);
|
||||
|
||||
// Set the terminal control state to CONNECTED
|
||||
control.setState(TerminalState.CONNECTED);
|
||||
|
||||
// Create the process monitor
|
||||
monitor = new ProcessMonitor(this);
|
||||
monitor.startMonitoring();
|
||||
} catch (IOException e) {
|
||||
// Disconnect right away
|
||||
disconnect();
|
||||
// Lookup the tab item
|
||||
CTabItem item = ConsoleManager.getInstance().findConsole(control);
|
||||
if (item != null) item.dispose();
|
||||
// Get the error message from the exception
|
||||
String msg = e.getLocalizedMessage() != null ? e.getLocalizedMessage() : ""; //$NON-NLS-1$
|
||||
Assert.isNotNull(msg);
|
||||
// Strip away "Exec_tty error:"
|
||||
msg = msg.replace("Exec_tty error:", "").trim(); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
// Repackage into a more user friendly error
|
||||
msg = NLS.bind(Messages.ProcessConnector_error_creatingProcess, settings.getImage(), msg);
|
||||
// Open an error dialog
|
||||
MessageDialog.openError(control.getShell(), Messages.ProcessConnector_error_title, msg);
|
||||
}
|
||||
}
|
||||
|
||||
private static String getTermVariable(String[] envp) {
|
||||
if (envp != null && !Platform.OS_WIN32.equals(Platform.getOS()))
|
||||
for (String var : envp)
|
||||
if (var.startsWith("TERM=")) //$NON-NLS-1$
|
||||
return var.substring(5);
|
||||
return "xterm"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.internal.terminal.provisional.api.provider.TerminalConnectorImpl#isLocalEcho()
|
||||
*/
|
||||
@Override
|
||||
public boolean isLocalEcho() {
|
||||
return settings.isLocalEcho();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.internal.terminal.provisional.api.provider.TerminalConnectorImpl#doDisconnect()
|
||||
*/
|
||||
@Override
|
||||
public void doDisconnect() {
|
||||
// Stop monitoring the process
|
||||
monitor.dispose();
|
||||
|
||||
// Dispose the streams
|
||||
super.doDisconnect();
|
||||
|
||||
// Dispose the process
|
||||
if (process != null) { process.destroy(); process = null; }
|
||||
|
||||
// Set the terminal control state to CLOSED.
|
||||
fControl.setState(TerminalState.CLOSED);
|
||||
}
|
||||
|
||||
// ***** Process Connector settings handling *****
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.internal.terminal.provisional.api.provider.TerminalConnectorImpl#makeSettingsPage()
|
||||
*/
|
||||
@Override
|
||||
public ISettingsPage makeSettingsPage() {
|
||||
return new ProcessSettingsPage(settings);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.internal.terminal.provisional.api.provider.TerminalConnectorImpl#getSettingsSummary()
|
||||
*/
|
||||
@Override
|
||||
public String getSettingsSummary() {
|
||||
return settings.getImage() != null ? settings.getImage() : ""; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.internal.terminal.provisional.api.provider.TerminalConnectorImpl#load(org.eclipse.tcf.internal.terminal.provisional.api.ISettingsStore)
|
||||
*/
|
||||
@Override
|
||||
public void load(ISettingsStore store) {
|
||||
settings.load(store);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.internal.terminal.provisional.api.provider.TerminalConnectorImpl#save(org.eclipse.tcf.internal.terminal.provisional.api.ISettingsStore)
|
||||
*/
|
||||
@Override
|
||||
public void save(ISettingsStore store) {
|
||||
settings.save(store);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.internal.terminal.provisional.api.provider.TerminalConnectorImpl#setTerminalSize(int, int)
|
||||
*/
|
||||
@Override
|
||||
public void setTerminalSize(int newWidth, int newHeight) {
|
||||
if (width != newWidth || height != newHeight) {
|
||||
width = newWidth;
|
||||
height = newHeight;
|
||||
if (pty != null) {
|
||||
pty.setTerminalSize(newWidth, newHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,134 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 Wind River Systems, Inc. and others. All rights reserved.
|
||||
* This program and the accompanying materials are made available under the terms
|
||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.tcf.te.ui.terminals.process;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.cdt.utils.pty.PTY;
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
import org.eclipse.tcf.te.core.terminals.TerminalServiceFactory;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService.Done;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalServiceOutputStreamMonitorListener;
|
||||
import org.eclipse.tcf.te.core.terminals.interfaces.constants.ITerminalsConnectorConstants;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanel;
|
||||
import org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanelContainer;
|
||||
import org.eclipse.tcf.te.ui.terminals.internal.SettingsStore;
|
||||
import org.eclipse.tcf.te.ui.terminals.launcher.AbstractLauncherDelegate;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
|
||||
|
||||
/**
|
||||
* Process launcher delegate implementation.
|
||||
*/
|
||||
@SuppressWarnings("restriction")
|
||||
public class ProcessLauncherDelegate extends AbstractLauncherDelegate {
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#needsUserConfiguration()
|
||||
*/
|
||||
@Override
|
||||
public boolean needsUserConfiguration() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#getPanel(org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanelContainer)
|
||||
*/
|
||||
@Override
|
||||
public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#execute(java.util.Map, org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService.Done)
|
||||
*/
|
||||
@Override
|
||||
public void execute(Map<String, Object> properties, Done done) {
|
||||
Assert.isNotNull(properties);
|
||||
|
||||
// Get the terminal service
|
||||
ITerminalService terminal = TerminalServiceFactory.getService();
|
||||
// If not available, we cannot fulfill this request
|
||||
if (terminal != null) {
|
||||
terminal.openConsole(properties, done);
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#createTerminalConnector(java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
|
||||
Assert.isNotNull(properties);
|
||||
|
||||
// Check for the terminal connector id
|
||||
String connectorId = (String)properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
|
||||
if (connectorId == null) connectorId = "org.eclipse.tcf.te.ui.terminals.ProcessConnector"; //$NON-NLS-1$
|
||||
|
||||
// Extract the process properties
|
||||
String image = (String)properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH);
|
||||
String arguments = (String)properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS);
|
||||
Process process = (Process)properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ);
|
||||
PTY pty = (PTY)properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ);
|
||||
Object value = properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO);
|
||||
boolean localEcho = value instanceof Boolean ? ((Boolean)value).booleanValue() : false;
|
||||
String lineSeparator = (String)properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR);
|
||||
ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[])properties.get(ITerminalsConnectorConstants.PROP_STDOUT_LISTENERS);
|
||||
ITerminalServiceOutputStreamMonitorListener[] stderrListeners = (ITerminalServiceOutputStreamMonitorListener[])properties.get(ITerminalsConnectorConstants.PROP_STDERR_LISTENERS);
|
||||
String workingDir = (String)properties.get(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR);
|
||||
|
||||
String[] envp = null;
|
||||
if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) &&
|
||||
properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) != null &&
|
||||
properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) instanceof String[]){
|
||||
envp = (String[])properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT);
|
||||
}
|
||||
|
||||
Assert.isTrue(image != null || process != null);
|
||||
|
||||
// Construct the terminal settings store
|
||||
ISettingsStore store = new SettingsStore();
|
||||
|
||||
// Construct the process settings
|
||||
ProcessSettings processSettings = new ProcessSettings();
|
||||
processSettings.setImage(image);
|
||||
processSettings.setArguments(arguments);
|
||||
processSettings.setProcess(process);
|
||||
processSettings.setPTY(pty);
|
||||
processSettings.setLocalEcho(localEcho);
|
||||
processSettings.setLineSeparator(lineSeparator);
|
||||
processSettings.setStdOutListeners(stdoutListeners);
|
||||
processSettings.setStdErrListeners(stderrListeners);
|
||||
processSettings.setWorkingDir(workingDir);
|
||||
processSettings.setEnvironment(envp);
|
||||
|
||||
if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT)) {
|
||||
value = properties.get(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT);
|
||||
processSettings.setMergeWithNativeEnvironment(value instanceof Boolean ? ((Boolean)value).booleanValue() : false);
|
||||
}
|
||||
|
||||
// And save the settings to the store
|
||||
processSettings.save(store);
|
||||
|
||||
// Construct the terminal connector instance
|
||||
ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
|
||||
if (connector != null) {
|
||||
// Apply default settings
|
||||
connector.makeSettingsPage();
|
||||
// And load the real settings
|
||||
connector.load(store);
|
||||
}
|
||||
|
||||
return connector;
|
||||
}
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue