Compare commits
165 Commits
release/8.
...
APPINT-336
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd2bf71102 | ||
|
|
da7e03f68e | ||
|
|
5eaada3aba | ||
|
|
11d857350f | ||
|
|
58dc50bb6b | ||
|
|
4a6676bbaa | ||
|
|
ac940b3379 | ||
|
|
b2de3dad81 | ||
|
|
977dc22d8d | ||
|
|
360a6858d6 | ||
|
|
5f28859a41 | ||
|
|
c81725aa46 | ||
|
|
f6ab6a6358 | ||
|
|
bf10f9c18e | ||
|
|
7b3696a646 | ||
|
|
ec04f46618 | ||
|
|
1c46738d0d | ||
|
|
8282a464c5 | ||
|
|
e8812cebf4 | ||
|
|
29328275ad | ||
|
|
423ce93761 | ||
|
|
243e453dbb | ||
|
|
6cfa26af6d | ||
|
|
c564b3442d | ||
|
|
b5d0ccea4d | ||
|
|
8f9cf1151e | ||
|
|
e8a43d98fe | ||
|
|
35d862aed0 | ||
|
|
acb61a7ae4 | ||
|
|
e430e1d470 | ||
|
|
dd1dbcb35d | ||
|
|
5d926326ce | ||
|
|
db6a44c74a | ||
|
|
fedf5925e5 | ||
|
|
925ea11a94 | ||
|
|
c0fbf66e87 | ||
|
|
52f1dc38a3 | ||
|
|
4147beea33 | ||
|
|
b094bb0aed | ||
|
|
1dc9b02324 | ||
|
|
b528e5151d | ||
|
|
84176ff9e5 | ||
|
|
84990887da | ||
|
|
4fa37a28ac | ||
|
|
0e2cafa85a | ||
|
|
f186a936b0 | ||
|
|
13343894d4 | ||
|
|
d95bfd2d0f | ||
|
|
db7d1bada5 | ||
|
|
dc7b4b7b80 | ||
|
|
2f83c5d741 | ||
|
|
63f2439835 | ||
|
|
4b3a46c0a7 | ||
|
|
cc9357e0dc | ||
|
|
aa6e1448c9 | ||
|
|
94023733c2 | ||
|
|
2b5f0f269d | ||
|
|
d1e0e93e57 | ||
|
|
9424218a1d | ||
|
|
bffb520b0f | ||
|
|
7916c6f89a | ||
|
|
21ca6fe9bb | ||
|
|
7aa1e6ae24 | ||
|
|
0deaf29970 | ||
|
|
ee365b2d49 | ||
|
|
7234b250b8 | ||
|
|
d9d26530ca | ||
|
|
01a3801bb0 | ||
|
|
084745f17b | ||
|
|
22f73a08de | ||
|
|
0d18604741 | ||
|
|
049b4c7c76 | ||
|
|
1c6c1341a1 | ||
|
|
090e598d55 | ||
|
|
cff7c53280 | ||
|
|
734759f372 | ||
|
|
e570c9d476 | ||
|
|
2a32fb66e6 | ||
|
|
30053f572c | ||
|
|
048734d3bc | ||
|
|
0d2f6f19c3 | ||
|
|
52da1b306e | ||
|
|
701d470538 | ||
|
|
521426be77 | ||
|
|
ddd4b0eba8 | ||
|
|
21d789d553 | ||
|
|
e4faa6a337 | ||
|
|
ad2f4ce5bb | ||
|
|
38682ffba3 | ||
|
|
d895842031 | ||
|
|
edce94393b | ||
|
|
0d8066e125 | ||
|
|
e3bae25dc5 | ||
|
|
0f3dcc9475 | ||
|
|
c2d3242772 | ||
|
|
cdf8b89429 | ||
|
|
6b573518e3 | ||
|
|
dbe389353e | ||
|
|
ac2734e7d9 | ||
|
|
f4368af5b9 | ||
|
|
3cc1fa1152 | ||
|
|
45d0a8342a | ||
|
|
ded9ab93a8 | ||
|
|
a30cab74bf | ||
|
|
7ed80ccb6d | ||
|
|
5abaef1ab6 | ||
|
|
207564458d | ||
|
|
d6ff602b18 | ||
|
|
660766115d | ||
|
|
dcc1725d40 | ||
|
|
8b17ba86b5 | ||
|
|
a8d50d6ac2 | ||
|
|
19a991a2a1 | ||
|
|
17c865c786 | ||
|
|
ebdbfe3e14 | ||
|
|
8a78da5967 | ||
|
|
aacfc18a1e | ||
|
|
8816a6a5df | ||
|
|
38b0a1e7f1 | ||
|
|
ee74a59bf7 | ||
|
|
e6641a1a75 | ||
|
|
92dce3e830 | ||
|
|
f75dea2269 | ||
|
|
f5d22f35e3 | ||
|
|
8cfb0ed774 | ||
|
|
c8f1376046 | ||
|
|
d1efe710ab | ||
|
|
e7926678ba | ||
|
|
4941aa01d3 | ||
|
|
449cb87534 | ||
|
|
acf681c18e | ||
|
|
9618ced9f1 | ||
|
|
1f1878e225 | ||
|
|
e703c00806 | ||
|
|
5e7db6dc90 | ||
|
|
2e7b0d4fbc | ||
|
|
c6029fd39a | ||
|
|
08c68b5348 | ||
|
|
98a8940a07 | ||
|
|
207f21deb8 | ||
|
|
1847f091f2 | ||
|
|
4b7ec41eb8 | ||
|
|
6fd204630b | ||
|
|
eae9fafb43 | ||
|
|
954a681095 | ||
|
|
6e850c80ce | ||
|
|
643b2805fe | ||
|
|
4e8d2cca45 | ||
|
|
c266fc498f | ||
|
|
bca165e700 | ||
|
|
a860bf9a64 | ||
|
|
3e3c225b0d | ||
|
|
c5167fd103 | ||
|
|
193081f7b1 | ||
|
|
3a5becf258 | ||
|
|
ebc9394c27 | ||
|
|
0ba186ba76 | ||
|
|
d2f1898a4c | ||
|
|
b98af59baf | ||
|
|
fc4197206a | ||
|
|
d7968d7ec2 | ||
|
|
bdc31e6a13 | ||
|
|
7e4800e33a | ||
|
|
a6aa7f4874 | ||
|
|
30150e7851 |
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<feature id="org.talend.commons.feature" label="Commons Feature" version="8.0.1.qualifier" provider-name=".Talend SA.">
|
||||
<feature id="org.talend.commons.feature" label="Commons Feature" version="8.8.8.qualifier" provider-name=".Talend SA.">
|
||||
<description url="http://www.talend.com/online/featuresdescription.html#commons-feature">Complete description about this feature at http://www.talend.com/online/featuresdescription.html#commons-feature</description>
|
||||
<copyright url="http://www.talend.com/online/copyright.txt">Copyright Talend 2006, 2007</copyright>
|
||||
<license>The licence are describe in branding feature</license>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.commons.feature</artifactId>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<feature id="org.talend.core.feature" label="Core Feature" version="8.0.1.qualifier" provider-name=".Talend SA.">
|
||||
<feature id="org.talend.core.feature" label="Core Feature" version="8.8.8.qualifier" provider-name=".Talend SA.">
|
||||
<description url="http://www.talend.com/online/featuresdescription.html#core-feature">Complete description about this feature at http://www.talend.com/online/featuresdescription.html#core-feature</description>
|
||||
<copyright url="http://www.talend.com/online/copyright.txt">Copyright Talend 2006, 2007</copyright>
|
||||
<license>The licence are describe in branding feature</license>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.core.feature</artifactId>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<feature
|
||||
id="org.talend.fragment.jars.common.feature"
|
||||
label="Fragment Jars in Common"
|
||||
version="8.0.1.qualifier">
|
||||
version="8.8.8.qualifier">
|
||||
|
||||
<description url="http://www.example.com/description">
|
||||
[Enter Feature Description here.]
|
||||
@@ -56,12 +56,5 @@
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="true"/>
|
||||
|
||||
<plugin
|
||||
id="org.talend.signon.util"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
</feature>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.fragment.jars.common.feature</artifactId>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feature id="org.talend.help.feature" label="Help Feature" version="8.0.1.qualifier" provider-name=".Talend SA.">
|
||||
<feature id="org.talend.help.feature" label="Help Feature" version="8.8.8.qualifier" provider-name=".Talend SA.">
|
||||
<description url="http://www.talend.com/online/featuresdescription.html#help-feature">Complete description about this feature at http://www.talend.com/online/featuresdescription.html#help-feature</description>
|
||||
<copyright url="http://www.talend.com/online/copyright.txt">Copyright Talend 2006, 2007</copyright>
|
||||
<license>The licence are describe in branding feature</license>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.help.feature</artifactId>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<feature id="org.talend.libraries.jdbc.feature" label="Jdbc_feature Feature" version="8.0.1.qualifier" provider-name=".Talend SA.">
|
||||
<feature id="org.talend.libraries.jdbc.feature" label="Jdbc_feature Feature" version="8.8.8.qualifier" provider-name=".Talend SA.">
|
||||
<description url="http://www.example.com/description">[Enter Feature Description here.]</description>
|
||||
<copyright url="http://www.example.com/copyright">[Enter Copyright Description here.]</copyright>
|
||||
<license url="http://www.example.com/license">[Enter License Description here.]</license>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.libraries.jdbc.feature</artifactId>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<feature
|
||||
id="org.talend.platform.feature"
|
||||
label="Platform featrue"
|
||||
version="8.0.1.qualifier"
|
||||
version="8.8.8.qualifier"
|
||||
provider-name=".Talend SA.">
|
||||
|
||||
<description url="http://www.talend.com/online/featuresdescription.html#platform-feature">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.platform.feature</artifactId>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<feature
|
||||
id="org.talend.rcp.feature"
|
||||
label="RCP Feature"
|
||||
version="8.0.1.qualifier"
|
||||
version="8.8.8.qualifier"
|
||||
provider-name=".Talend SA.">
|
||||
|
||||
<description url="http://www.talend.com/online/featuresdescription.html#rcp-feature">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.rcp.feature</artifactId>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<feature id="org.talend.update.p2.feature" label="P2-feature" version="8.0.1.qualifier">
|
||||
<feature id="org.talend.update.p2.feature" label="P2-feature" version="8.8.8.qualifier">
|
||||
<description url="http://www.example.com/description">[Enter Feature Description here.]</description>
|
||||
<copyright url="http://www.example.com/copyright">[Enter Copyright Description here.]</copyright>
|
||||
<license url="http://www.example.com/license">[Enter License Description here.]</license>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.update.p2.feature</artifactId>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<feature id="org.talend.updates.feature" label="Updates-feature" version="8.0.1.qualifier" provider-name=".Talend SA.">
|
||||
<feature id="org.talend.updates.feature" label="Updates-feature" version="8.8.8.qualifier" provider-name=".Talend SA.">
|
||||
<copyright url="http://www.talend.com/about-us">[Enter Copyright Description here.]</copyright>
|
||||
<plugin id="org.talend.updates.runtime" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
|
||||
</feature>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.updates.feature</artifactId>
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<feature id="org.talend.utils.feature" label="Utils_feature Feature" version="8.0.1.qualifier">
|
||||
<feature id="org.talend.utils.feature" label="Utils_feature Feature" version="8.8.8.qualifier">
|
||||
<description url="http://www.example.com/description">This feature contains the Talend utilities plugin and its dependencies.</description>
|
||||
<copyright url="http://www.example.com/copyright">[Enter Copyright Description here.]</copyright>
|
||||
<license url="http://www.example.com/license">[Enter License Description here.]</license>
|
||||
<requires>
|
||||
<import plugin="org.bouncycastle.bcprov" version="1.69.0" match="greaterOrEqual"/>
|
||||
<import plugin="com.cedarsoftware.json-io" version="0.0.0" match="greaterOrEqual"/>
|
||||
<import plugin="com.fasterxml.jackson.core.jackson-annotations" version="2.9.0" match="greaterOrEqual"/>
|
||||
<import plugin="com.fasterxml.jackson.core.jackson-core" version="2.9.8" match="greaterOrEqual"/>
|
||||
@@ -16,15 +17,15 @@
|
||||
<import plugin="org.apache.commons.lang" version="0.0.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.apache.commons.lang3" version="0.0.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.apache.log4j" version="0.0.0" match="greaterOrEqual"/>
|
||||
<import plugin="avro" version="0.0.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.apache.servicemix.bundles.avro" version="0.0.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.junit" version="4.13.2" match="greaterOrEqual"/>
|
||||
<import plugin="org.slf4j.api" version="0.0.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.slf4j.binding.log4j12" version="0.0.0" match="greaterOrEqual"/>
|
||||
<import plugin="org.talend.studio.studio-utils" version="0.0.0" match="greaterOrEqual"/>
|
||||
</requires>
|
||||
<plugin id="org.talend.daikon" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
|
||||
<plugin id="org.talend.daikon.exception" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
|
||||
<plugin id="org.talend.daikon.crypto.utils" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
|
||||
<plugin id="org.talend.studio.studio-utils" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
|
||||
<plugin id="org.talend.utils" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
|
||||
<plugin id="org.talend.platform.logging" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
|
||||
</feature>
|
||||
|
||||
@@ -4,12 +4,9 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.utils.feature</artifactId>
|
||||
<packaging>eclipse-feature</packaging>
|
||||
<properties>
|
||||
<tycho.buildtimestamp.format>${timestamp}</tycho.buildtimestamp.format>
|
||||
</properties>
|
||||
</project>
|
||||
|
||||
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Common UI runtime Plug-in
|
||||
Bundle-SymbolicName: org.talend.common.ui.runtime;singleton:=true
|
||||
Bundle-Version: 8.0.1.qualifier
|
||||
Bundle-Version: 8.8.8.qualifier
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
org.apache.commons.collections,
|
||||
org.talend.libraries.dom4j-jaxen,
|
||||
|
||||
@@ -4,6 +4,4 @@ bin.includes = META-INF/,\
|
||||
plugin.xml,\
|
||||
icons/,\
|
||||
icons1/,\
|
||||
.,\
|
||||
resources/
|
||||
|
||||
.
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 600 B |
Binary file not shown.
|
Before Width: | Height: | Size: 288 B |
Binary file not shown.
|
Before Width: | Height: | Size: 618 B |
Binary file not shown.
|
Before Width: | Height: | Size: 229 B |
Binary file not shown.
|
Before Width: | Height: | Size: 627 B |
@@ -1,17 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?eclipse version="3.4"?>
|
||||
<plugin>
|
||||
<extension
|
||||
point="org.eclipse.e4.ui.css.swt.theme">
|
||||
<stylesheet
|
||||
uri="resources/theme/light_preferencestyle.css">
|
||||
<themeid
|
||||
refid="org.talend.themes.css.talend.default"></themeid>
|
||||
</stylesheet>
|
||||
<stylesheet
|
||||
uri="resources/theme/dark_preferencestyle.css">
|
||||
<themeid
|
||||
refid="org.eclipse.e4.ui.css.theme.e4_dark"></themeid>
|
||||
</stylesheet>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.common.ui.runtime</artifactId>
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
/* ############################## Eclipse UI properties ############################## */
|
||||
|
||||
IEclipsePreferences#org-talend-common-ui-runtime:org-talend-common-ui-runtime { /* pseudo attribute added to allow contributions without replacing this node, see Bug 466075 */
|
||||
preferences:
|
||||
'table.background=#org-eclipse-ui-workbench-DARK_BACKGROUND'
|
||||
'table.foreground=#org-eclipse-ui-workbench-DARK_FOREGROUND'
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
/* ############################## Eclipse UI properties ############################## */
|
||||
|
||||
|
||||
IEclipsePreferences#org-talend-common-ui-runtime:org-talend-common-ui-runtime { /* pseudo attribute added to allow contributions without replacing this node, see Bug 466075 */
|
||||
preferences:
|
||||
'table.background=COLOR-LIST-BACKGROUND'
|
||||
'table.foreground=COLOR_LIST_FOREGROUND'
|
||||
}
|
||||
@@ -12,22 +12,14 @@
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.runtime;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
|
||||
/**
|
||||
* DOC cmeng class global comment. Detailled comment
|
||||
*/
|
||||
public interface ColorConstants {
|
||||
|
||||
static final String BUNDLE_ID_COMMON_UI_RUNTIME = "org.talend.common.ui.runtime";
|
||||
|
||||
static final String KEY_TABLE_BACKGROUND = "table.background";
|
||||
|
||||
static final String KEY_TABLE_FOREGROUND = "table.foreground";
|
||||
|
||||
static final Color WHITE_COLOR = new Color(null, 255, 255, 255);
|
||||
|
||||
static final Color GREY_COLOR = new Color(null, 215, 215, 215);
|
||||
@@ -36,38 +28,11 @@ public interface ColorConstants {
|
||||
|
||||
static final Color YELLOW_COLOR = new Color(null, 255, 173, 37);// 254, 182, 84
|
||||
|
||||
static final Color RED_COLOR = new Color(null, new RGB(204, 87, 89));// 255
|
||||
|
||||
static final Color ERROR_FONT_COLOR = new Color(null, new RGB(255, 0, 0));// 255
|
||||
static final Color RED_COLOR = new Color(null, new RGB(204,87,89));// 255
|
||||
|
||||
static final Color VERTICAL_SEPERATOR_LINE_COLOR = new Color(null, 162, 179, 195);
|
||||
|
||||
static final Color LOCHMARA_COLOR = new Color(null, 6, 117, 193);
|
||||
|
||||
static final Color WATHET_COLOR = new Color(null, 135, 206, 235);
|
||||
|
||||
static final Color INFO_COLOR = new Color(null, 205, 227, 242);
|
||||
// static final Color INFO_COLOR = YELLOW_GREEN_COLOR;
|
||||
|
||||
static final Color WARN_COLOR = new Color(null, 252, 230, 217);
|
||||
|
||||
static final Color ERR_COLOR = new Color(null, 255, 235, 235);
|
||||
|
||||
static final Color SUCCEED_COLOR = new Color(null, 221, 242, 217);
|
||||
|
||||
static Color getTableBackgroundColor() {
|
||||
return ITalendThemeService.getColor(ColorConstants.BUNDLE_ID_COMMON_UI_RUNTIME, ColorConstants.KEY_TABLE_BACKGROUND)
|
||||
.orElse(Display.getDefault().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
|
||||
}
|
||||
|
||||
static Color getTableForegroundColor() {
|
||||
return ITalendThemeService.getColor(ColorConstants.BUNDLE_ID_COMMON_UI_RUNTIME, ColorConstants.KEY_TABLE_FOREGROUND)
|
||||
.orElse(Display.getDefault().getSystemColor(SWT.COLOR_LIST_FOREGROUND));
|
||||
}
|
||||
|
||||
static Color getTableReadOnlyForegroundColor() {
|
||||
return ITalendThemeService.getColor("CONTEXT_TABLE_READONLY_FOREGROUND")
|
||||
.orElse(Display.getDefault().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -23,8 +23,6 @@ import org.talend.commons.ui.runtime.exception.ExceptionServiceImpl;
|
||||
|
||||
public class CommonUIPlugin implements BundleActivator {
|
||||
|
||||
public static String BUNDLE_ID = "org.talend.common.ui.runtime";
|
||||
|
||||
private static Boolean fullyHeadless = null;
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,154 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2022 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.runtime;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.framework.FrameworkUtil;
|
||||
import org.osgi.framework.ServiceReference;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
|
||||
/**
|
||||
* DOC cmeng class global comment. Detailled comment
|
||||
*/
|
||||
public interface ITalendThemeService {
|
||||
|
||||
public static String DEFAULT_PREFERENCE_ID = "org.eclipse.ui.workbench";
|
||||
|
||||
public static String THEME_PREFERENCE_ID = "org.eclipse.e4.ui.css.swt.theme";
|
||||
|
||||
/**
|
||||
* Get color from instance scope preference of default bundleId, which managed by theme; the standard way eclipse
|
||||
* uses
|
||||
*
|
||||
* @param prop
|
||||
* @return the Color, <font color="red">please <b>DON'T</b> dispose it, it is managed by JFaceResources</font>
|
||||
*/
|
||||
static Optional<Color> getColor(String prop) {
|
||||
return getColor(DEFAULT_PREFERENCE_ID, prop);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get color from instance scope preference of bundleId, which managed by theme; the standard way eclipse uses
|
||||
*
|
||||
* @param bundleId the instance scope preference which stores the prop
|
||||
* @param prop
|
||||
* @return the Color, <font color="red">please <b>DON'T</b> dispose it, it is managed by JFaceResources</font>
|
||||
*/
|
||||
static Optional<Color> getColor(String bundleId, String prop) {
|
||||
ITalendThemeService theme = get();
|
||||
if (theme != null) {
|
||||
return Optional.ofNullable(theme.getColorForTheme(bundleId, prop));
|
||||
}
|
||||
return Optional.ofNullable(null);
|
||||
}
|
||||
|
||||
Color getColorForTheme(String bundleId, String prop);
|
||||
|
||||
/**
|
||||
* Get property from instance scope preference of default bundleId, which managed by theme; the standard way eclipse
|
||||
* uses
|
||||
*
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
static Optional<String> getProperty(String key) {
|
||||
return getProperty(DEFAULT_PREFERENCE_ID, key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get property from instance scope preference of bundleId, which managed by theme; the standard way eclipse uses
|
||||
*
|
||||
* @param bundleId the instance scope preference which stores the key
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
static Optional<String> getProperty(String bundleId, String key) {
|
||||
ITalendThemeService theme = get();
|
||||
String value = null;
|
||||
if (theme != null) {
|
||||
value = theme.getPropertyForTheme(bundleId, key);
|
||||
}
|
||||
if (StringUtils.isBlank(value)) {
|
||||
return Optional.ofNullable(null);
|
||||
} else {
|
||||
return Optional.ofNullable(value);
|
||||
}
|
||||
}
|
||||
|
||||
String getPropertyForTheme(String bundleId, String key);
|
||||
|
||||
static void addPropertyChangeListener(IPropertyChangeListener listener) {
|
||||
ITalendThemeService theme = get();
|
||||
if (theme != null) {
|
||||
theme.addPropertyChangeListenerFor(DEFAULT_PREFERENCE_ID, listener);
|
||||
}
|
||||
}
|
||||
|
||||
static void addPropertyChangeListener(String bundleId, IPropertyChangeListener listener) {
|
||||
ITalendThemeService theme = get();
|
||||
if (theme != null) {
|
||||
theme.addPropertyChangeListenerFor(bundleId, listener);
|
||||
}
|
||||
}
|
||||
|
||||
void addPropertyChangeListenerFor(String bundleId, IPropertyChangeListener listener);
|
||||
|
||||
static boolean containsPropertyChangeListener(String bundleId, IPropertyChangeListener listener) {
|
||||
ITalendThemeService theme = get();
|
||||
if (theme != null) {
|
||||
return theme.containsPropertyChangeListenerFor(bundleId, listener);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean containsPropertyChangeListenerFor(String bundleId, IPropertyChangeListener listener);
|
||||
|
||||
static void removePropertyChangeListener(IPropertyChangeListener listener) {
|
||||
ITalendThemeService theme = get();
|
||||
if (theme != null) {
|
||||
theme.removePropertyChangeListenerFor(DEFAULT_PREFERENCE_ID, listener);
|
||||
}
|
||||
}
|
||||
|
||||
static void removePropertyChangeListener(String bundleId, IPropertyChangeListener listener) {
|
||||
ITalendThemeService theme = get();
|
||||
if (theme != null) {
|
||||
theme.removePropertyChangeListenerFor(bundleId, listener);
|
||||
}
|
||||
}
|
||||
|
||||
void removePropertyChangeListenerFor(String bundleId, IPropertyChangeListener listener);
|
||||
|
||||
IPreferenceStore getThemePreferenceStore();
|
||||
|
||||
static ITalendThemeService get() {
|
||||
try {
|
||||
BundleContext bc = FrameworkUtil.getBundle(ITalendThemeService.class).getBundleContext();
|
||||
ServiceReference<ITalendThemeService> serviceReference = bc.getServiceReference(ITalendThemeService.class);
|
||||
if (serviceReference == null) {
|
||||
return null;
|
||||
}
|
||||
return bc.getService(serviceReference);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -40,8 +40,6 @@ public class ExceptionMessageDialog extends MessageDialog {
|
||||
private String exceptionString = null;
|
||||
|
||||
private int[] diabledButtonIndex = new int[] {};
|
||||
|
||||
private boolean expandedOnOpen = false;
|
||||
|
||||
public ExceptionMessageDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage,
|
||||
int dialogImageType, String[] dialogButtonLabels, int defaultIndex, Throwable ex) {
|
||||
@@ -87,8 +85,6 @@ public class ExceptionMessageDialog extends MessageDialog {
|
||||
text.setText(exceptionString);
|
||||
text.setEditable(false);
|
||||
errorComposite.setClient(text);
|
||||
|
||||
errorComposite.setExpanded(expandedOnOpen);
|
||||
|
||||
return errorComposite;
|
||||
}
|
||||
@@ -154,22 +150,6 @@ public class ExceptionMessageDialog extends MessageDialog {
|
||||
this.exceptionString = exceptionString;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return the expandedOnOpen
|
||||
*/
|
||||
public boolean isExpandedOnOpen() {
|
||||
return expandedOnOpen;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param expandedOnOpen the expandedOnOpen to set
|
||||
*/
|
||||
public void setExpandedOnOpen(boolean expandedOnOpen) {
|
||||
this.expandedOnOpen = expandedOnOpen;
|
||||
}
|
||||
|
||||
public void setDisabledButtons(int[] index) {
|
||||
this.diabledButtonIndex = index;
|
||||
}
|
||||
|
||||
@@ -72,27 +72,12 @@ public final class MessageBoxExceptionHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public static void process(Throwable ex, Shell shell, boolean wrapMessage) {
|
||||
CommonExceptionHandler.process(ex);
|
||||
|
||||
if (CommonsPlugin.isHeadless() || CommonsPlugin.isJUnitTest()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (shell != null) {
|
||||
showMessage(ex, shell, wrapMessage);
|
||||
}
|
||||
}
|
||||
|
||||
public static void showMessage(Throwable ex, Shell shell) {
|
||||
showMessage(ex, shell, true);
|
||||
}
|
||||
/**
|
||||
* Open a message box showing a generic message and exception message.
|
||||
*
|
||||
* @param ex - exception to show
|
||||
*/
|
||||
public static void showMessage(Throwable ex, Shell shell, boolean wrapMessage) {
|
||||
public static void showMessage(Throwable ex, Shell shell) {
|
||||
if (ex.equals(lastShowedAction)) {
|
||||
return;
|
||||
}
|
||||
@@ -100,14 +85,10 @@ public final class MessageBoxExceptionHandler {
|
||||
|
||||
// TODO smallet use ErrorDialogWidthDetailArea ?
|
||||
String title = Messages.getString("commons.error"); //$NON-NLS-1$
|
||||
String excepMsg = ex.getMessage();
|
||||
String msg = Messages.getString("exception.errorOccured", ex.getMessage()); //$NON-NLS-1$
|
||||
//add for tup-19726/19790, as for exception detailMessage will show more details on log area.
|
||||
if(ex.getCause()!=null) {
|
||||
excepMsg = ex.getCause().getMessage();
|
||||
}
|
||||
String msg = Messages.getString("exception.errorOccured", excepMsg); //$NON-NLS-1$
|
||||
if (!wrapMessage) {
|
||||
msg = Messages.getString("exception.message", excepMsg); //$NON-NLS-1$
|
||||
msg = Messages.getString("exception.errorOccured", ex.getCause().getMessage()); //$NON-NLS-1$
|
||||
}
|
||||
Priority priority = CommonExceptionHandler.getPriority(ex);
|
||||
|
||||
|
||||
@@ -114,7 +114,6 @@ TableViewerCreator.Table.BeNull=table is null
|
||||
TableViewerCreator.TableColumn.AssertMsg=The TableColumn of TableEditorColumn with idProperty '{0}' has not the correct Table parent
|
||||
TreeToTablesLinker.Type.Unsupported=This type of currentControl is unsupported
|
||||
commons.error=Error
|
||||
exception.message={0}\nSee log for more details.
|
||||
exception.errorOccured=An error occured ({0}).\nSee log for more details.
|
||||
ModelSelectionDialog.Message=Please choose one option, or cancel.
|
||||
ModelSelectionDialog.Option=option
|
||||
|
||||
@@ -114,7 +114,6 @@ TableViewerCreator.Table.BeNull=la table est null.
|
||||
TableViewerCreator.TableColumn.AssertMsg=La TableColumn de TableEditorColumn avec idProperty '{0}' n'a pas la bonne Table parente
|
||||
TreeToTablesLinker.Type.Unsupported=Ce type de currentControl n'est pas support\u00E9
|
||||
commons.error=Erreur
|
||||
exception.message={0}\nConsultez le log pour plus de d\u00E9tails.
|
||||
exception.errorOccured=Une erreur est survenue ({0}).\nConsultez le log pour plus de d\u00E9tails.
|
||||
ModelSelectionDialog.Message=S\u00E9lectionnez une option ou annulez.
|
||||
ModelSelectionDialog.Option=Option
|
||||
|
||||
@@ -96,7 +96,7 @@ ProposalUtils.CtrlProposal.ErrorMsg=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u5236\u
|
||||
RemovePushButton.RemoveButton.Tip=\u9078\u629E\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664
|
||||
ResetDBTypesButton.ResetDBTypesButton.Tip=DB\u30BF\u30A4\u30D7\u3092\u30EA\u30BB\u30C3\u30C8
|
||||
Rule.rule=\u30EB\u30FC\u30EB[{0}]
|
||||
SaveAsGenericSchemaPushButton.saveAsSchema=\u30B8\u30A7\u30CD\u30EA\u30C3\u30AF\u30B9\u30AD\u30FC\u30DE\u3068\u3057\u3066\u4FDD\u5B58
|
||||
SaveAsGenericSchemaPushButton.saveAsSchema=\u6C4E\u7528\u30B9\u30AD\u30FC\u30DE\u3068\u3057\u3066\u4FDD\u5B58
|
||||
SelectContextVariablesPushButton.Label=\u30B3\u30F3\u30C6\u30AF\u30B9\u30C8\u5909\u6570\u3092\u9078\u629E
|
||||
SWTCalendarWithTime.contentEvening=\u5915\u65B9
|
||||
SWTCalendarWithTime.contentHr=\u6642:
|
||||
@@ -114,7 +114,6 @@ TableViewerCreator.Table.BeNull=\u30C6\u30FC\u30D6\u30EB\u304CNULL\u3067\u3059
|
||||
TableViewerCreator.TableColumn.AssertMsg=idProperty'{0}'\u304C\u3042\u308BTableEditorColumn\u306ETableColumn\u306B\u306F\u3001\u6B63\u3057\u3044\u89AA\u30C6\u30FC\u30D6\u30EB\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093
|
||||
TreeToTablesLinker.Type.Unsupported=currentControl\u306E\u3053\u306E\u30BF\u30A4\u30D7\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
|
||||
commons.error=\u30A8\u30E9\u30FC
|
||||
exception.message={0}\n\u8A73\u7D30\u306F\u30ED\u30B0\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
exception.errorOccured=\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F({0})\u3002\n\u8A73\u7D30\u306F\u30ED\u30B0\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
ModelSelectionDialog.Message=\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\uFF11\u3064\u9078\u629E\u3059\u308B\u304B\u3001\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
ModelSelectionDialog.Option=\u30AA\u30D7\u30B7\u30E7\u30F3
|
||||
@@ -122,7 +121,7 @@ ModelSelectionDialog.BuiltIn=\u7D44\u307F\u8FBC\u307F\u30D7\u30ED\u30D1\u30C6\u3
|
||||
ModelSelectionDialog.ViewSchema=\u30B9\u30AD\u30FC\u30DE\u3092\u8868\u793A\u3057\u307E\u3059(\u8AAD\u307F\u53D6\u308A\u5C02\u7528)\u3002
|
||||
ModelSelectionDialog.newViewSchema=\u30B9\u30AD\u30FC\u30DE\u3092\u8868\u793A
|
||||
ModelSelectionDialog.ViewQuery=\u30AF\u30A8\u30EA\u30FC\u3046\u3092\u8868\u793A\u3057\u307E\u3059(\u8AAD\u307F\u53D6\u308A\u5C02\u7528)\u3002
|
||||
ModelSelectionDialog.Update=\u30EA\u30DD\u30B8\u30C8\u30EA\u30FC\u63A5\u7D9A\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u307E\u3059\u3002
|
||||
ModelSelectionDialog.Update=\u30EA\u30DD\u30B8\u30C8\u30EA\u30FC\u63A5\u7D9A\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002
|
||||
SSLConfirmDialog.KeyStore=KeyStore\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044
|
||||
SSLConfirmDialog.TrustStore=TrustStore\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044
|
||||
SSLConfirmDialog.Password=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044
|
||||
|
||||
@@ -114,7 +114,6 @@ TableViewerCreator.Table.BeNull=\u8868\u4E3A null
|
||||
TableViewerCreator.TableColumn.AssertMsg=TableEditorColumn \u7684 idProperty \u4E3A '{0}' \u7684 TableColumn \u6CA1\u6709\u6B63\u786E\u7684 Table \u7236\u9879
|
||||
TreeToTablesLinker.Type.Unsupported=\u4E0D\u652F\u6301\u8FD9\u79CD\u7C7B\u578B\u7684 currentControl
|
||||
commons.error=\u9519\u8BEF
|
||||
exception.message={0}\n\u8BF7\u67E5\u770B\u65E5\u5FD7\u4EE5\u83B7\u53D6\u66F4\u591A\u8BE6\u7EC6\u4FE1\u606F\u3002
|
||||
exception.errorOccured=\u51FA\u73B0\u9519\u8BEF ({0})\u3002\n\u8BF7\u67E5\u770B\u65E5\u5FD7\u4EE5\u83B7\u53D6\u66F4\u591A\u8BE6\u7EC6\u4FE1\u606F\u3002
|
||||
ModelSelectionDialog.Message=\u8BF7\u9009\u62E9\u4E00\u4E2A\u9009\u9879\u6216\u53D6\u6D88\u3002
|
||||
ModelSelectionDialog.Option=\u9009\u9879
|
||||
|
||||
@@ -115,8 +115,6 @@ public enum ECoreImage implements IImage {
|
||||
|
||||
METADATA_SAPCONNECTION_ICON("/icons1/sapconnection.png"), //$NON-NLS-1$
|
||||
METADATA_SAPCONNECTION_WIZ("/icons1/connection_wiz.gif"), //$NON-NLS-1$
|
||||
|
||||
METADATA_BIGQUERYCONNECTION_ICON("/icons1/bigqueryconnection.png"), //$NON-NLS-1$
|
||||
|
||||
METADATA_HEADERFOOTER_ICON("/icons1/headerfooter_icon32.png"), //$NON-NLS-1$
|
||||
|
||||
|
||||
@@ -39,11 +39,6 @@ public enum EImage implements IImage {
|
||||
EDIT_ICON("/icons/write_obj.gif"), //$NON-NLS-1$
|
||||
READ_ICON("/icons/read_obj.gif"), //$NON-NLS-1$
|
||||
|
||||
WRAP_ICON("/icons/wrap.png"), //$NON-NLS-1$
|
||||
QUESTION_ICON("/icons/question.gif"), //$NON-NLS-1$
|
||||
HELP_ICON("/icons/help.png"), //$NON-NLS-1$
|
||||
MOREINFO_ICON("/icons/moreInfo.png"), //$NON-NLS-1$
|
||||
|
||||
CREATE_CONNECTION_ICON("/icons/connection.gif"), //$NON-NLS-1$
|
||||
|
||||
RESET_DBTYPES_ICON("/icons/reset_dbtypes.jpg"), //$NON-NLS-1$
|
||||
|
||||
@@ -16,14 +16,8 @@ import java.io.BufferedOutputStream;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.swt.SWT;
|
||||
@@ -164,35 +158,8 @@ public class ImageUtils {
|
||||
return imageDes;
|
||||
}
|
||||
|
||||
private static Map<byte[], ImageDataProvider> imageFromDataCachedImages = Collections.synchronizedMap(new HashMap<byte[], ImageDataProvider>());
|
||||
private static Map<Long, byte[]> cachedImagesTimeKeeping = Collections.synchronizedMap(new HashMap<Long, byte[]>());
|
||||
|
||||
private static Thread clearImageFromDataCachedImages = new Thread() {
|
||||
@SuppressWarnings("static-access")
|
||||
public void run() {
|
||||
long timeout = 5 * 60 * 1000;
|
||||
while(true) {//remove older than 5 mins
|
||||
Set<Entry<Long, byte[]>> collect = cachedImagesTimeKeeping.entrySet().stream()
|
||||
.filter(entry -> (System.currentTimeMillis() - entry.getKey()) > timeout).collect(Collectors.toSet());
|
||||
for(Entry<Long, byte[]> entry: collect) {
|
||||
Long key = entry.getKey();
|
||||
cachedImagesTimeKeeping.remove(key);
|
||||
imageFromDataCachedImages.remove(entry.getValue());
|
||||
}
|
||||
|
||||
try {
|
||||
sleep(timeout);
|
||||
} catch (InterruptedException e) {//
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
private static Map<byte[], ImageDataProvider> imageFromDataCachedImages = new HashMap<byte[], ImageDataProvider>();
|
||||
|
||||
static {
|
||||
clearImageFromDataCachedImages.setDaemon(true);
|
||||
clearImageFromDataCachedImages.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* By default, keep in memory the .
|
||||
*
|
||||
@@ -202,17 +169,12 @@ public class ImageUtils {
|
||||
*/
|
||||
public static ImageDescriptor createImageFromData(byte[] data, boolean... keepInMemory) {
|
||||
if (data != null) {
|
||||
ImageDataProvider imageProvider = null;
|
||||
Optional<byte[]> findKey = imageFromDataCachedImages.keySet().stream().filter(key->Arrays.equals(key, data)).findAny();
|
||||
if(findKey.isPresent()) {
|
||||
imageProvider = imageFromDataCachedImages.get(findKey.get());
|
||||
}
|
||||
ImageDataProvider imageProvider = imageFromDataCachedImages.get(data);
|
||||
if (imageProvider == null) {
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(data);
|
||||
ImageData img = new ImageData(bais);
|
||||
imageProvider = new TalendImageProvider(img);
|
||||
imageFromDataCachedImages.put(data, imageProvider);
|
||||
cachedImagesTimeKeeping.put(System.currentTimeMillis(), data);
|
||||
}
|
||||
return ImageDescriptor.createFromImageDataProvider(imageProvider);
|
||||
}
|
||||
@@ -221,9 +183,8 @@ public class ImageUtils {
|
||||
|
||||
public static void disposeImages(byte[] data) {
|
||||
if (data != null) {
|
||||
Optional<byte[]> findKey = imageFromDataCachedImages.keySet().stream().filter(key->Arrays.equals(key, data)).findAny();
|
||||
if(findKey.isPresent()) {
|
||||
imageFromDataCachedImages.remove(findKey.get());
|
||||
if (imageFromDataCachedImages.get(data) != null) {
|
||||
imageFromDataCachedImages.remove(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,8 +57,6 @@ import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Table;
|
||||
import org.eclipse.swt.widgets.TableColumn;
|
||||
import org.eclipse.swt.widgets.TableItem;
|
||||
import org.talend.commons.ui.runtime.ColorConstants;
|
||||
import org.talend.commons.ui.runtime.ITalendThemeService;
|
||||
import org.talend.commons.ui.runtime.i18n.Messages;
|
||||
import org.talend.commons.ui.runtime.swt.proposal.IShowInvisibleCellEditorMethods;
|
||||
import org.talend.commons.ui.runtime.swt.tableviewer.behavior.DefaultHeaderColumnSelectionListener;
|
||||
@@ -293,8 +291,7 @@ public class TableViewerCreatorNotModifiable<B> {
|
||||
public TableViewerCreatorNotModifiable(Composite compositeParent) {
|
||||
super();
|
||||
this.compositeParent = compositeParent;
|
||||
this.emptyZoneColor = ITalendThemeService.getColor("org.talend.commons.ui.BgColorForEmptyArea")
|
||||
.orElse(compositeParent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
|
||||
this.emptyZoneColor = compositeParent.getDisplay().getSystemColor(SWT.COLOR_WHITE);
|
||||
|
||||
}
|
||||
|
||||
@@ -672,22 +669,8 @@ public class TableViewerCreatorNotModifiable<B> {
|
||||
table.addListener(SWTFacade.Paint, paintListener);
|
||||
}
|
||||
|
||||
Color prefBackgroundColor = backgroundColor;
|
||||
if (prefBackgroundColor == null) {
|
||||
prefBackgroundColor = ColorConstants.getTableBackgroundColor();
|
||||
if (prefBackgroundColor == null) {
|
||||
prefBackgroundColor = table.getDisplay().getSystemColor(SWT.COLOR_WHITE);
|
||||
}
|
||||
}
|
||||
Color prefForegroundColor = foregroundColor;
|
||||
if (prefForegroundColor == null) {
|
||||
prefForegroundColor = ColorConstants.getTableForegroundColor();
|
||||
if (prefForegroundColor == null) {
|
||||
prefForegroundColor = table.getDisplay().getSystemColor(SWT.COLOR_BLACK);
|
||||
}
|
||||
}
|
||||
setBackgroundColor(prefBackgroundColor);
|
||||
setForegroundColor(prefForegroundColor);
|
||||
setBackgroundColor(backgroundColor != null ? backgroundColor : table.getDisplay().getSystemColor(SWT.COLOR_WHITE));
|
||||
setForegroundColor(foregroundColor != null ? foregroundColor : table.getDisplay().getSystemColor(SWT.COLOR_BLACK));
|
||||
|
||||
if (useCustomItemColoring) {
|
||||
setUseCustomItemColoring(true);
|
||||
|
||||
@@ -69,10 +69,6 @@ public class DefaultTableLabelProvider implements ITableLabelProvider, ITableCol
|
||||
returnValue = defaultValue;
|
||||
}
|
||||
} else {
|
||||
if ("ID_COLUMN_ROW_NUM".equals(column.getId())) {
|
||||
int indexOf = this.tableViewerCreator.getInputList().indexOf(element);
|
||||
AccessorUtils.set(column, element, indexOf + 1);
|
||||
}
|
||||
Object value = AccessorUtils.get(element, column);
|
||||
CellEditor cellEditor = column.getCellEditor();
|
||||
CellEditorValueAdapter retrieverValue = column.getCellEditorValueAdapter();
|
||||
|
||||
@@ -12,14 +12,9 @@
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.runtime.utils;
|
||||
|
||||
import org.eclipse.jface.resource.ColorRegistry;
|
||||
import org.eclipse.jface.resource.DataFormatException;
|
||||
import org.eclipse.jface.resource.JFaceResources;
|
||||
import org.eclipse.jface.resource.StringConverter;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Device;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
|
||||
/**
|
||||
@@ -107,16 +102,4 @@ public class TalendColorPalette {
|
||||
public static final java.awt.Color TERTIARY_ORANGE_AWT = new java.awt.Color(244, 175, 128);
|
||||
|
||||
public static final java.awt.Color TERTIARY_YELLOW_AWT = new java.awt.Color(255, 217, 143);
|
||||
|
||||
public static Color convertToColor(String rgbStr) throws DataFormatException {
|
||||
ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
|
||||
Color color = colorRegistry.get(rgbStr);
|
||||
if (color != null) {
|
||||
return color;
|
||||
}
|
||||
RGB rgb = StringConverter.asRGB(rgbStr);
|
||||
colorRegistry.put(rgbStr, rgb);
|
||||
return colorRegistry.get(rgbStr);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Enumeration;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.jar.JarOutputStream;
|
||||
|
||||
import org.apache.tools.zip.ZipEntry;
|
||||
@@ -170,52 +169,8 @@ public class ZipFileUtils {
|
||||
inputStream.close();
|
||||
}
|
||||
}
|
||||
|
||||
public static void unZipFileEntry(File destFile, java.util.zip.ZipFile zipFile, java.util.zip.ZipEntry entry) throws IOException {
|
||||
InputStream inputStream;
|
||||
FileOutputStream fileOut;
|
||||
if (entry.isDirectory()) {
|
||||
destFile.mkdirs();
|
||||
} else {
|
||||
File parent = destFile.getParentFile();
|
||||
if (parent != null && !parent.exists()) {
|
||||
parent.mkdirs();
|
||||
}
|
||||
|
||||
inputStream = zipFile.getInputStream(entry);
|
||||
|
||||
fileOut = new FileOutputStream(destFile);
|
||||
byte[] buf = new byte[bufSize];
|
||||
int readedBytes;
|
||||
while ((readedBytes = inputStream.read(buf)) > 0) {
|
||||
fileOut.write(buf, 0, readedBytes);
|
||||
}
|
||||
fileOut.close();
|
||||
|
||||
inputStream.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void setBufSize(int bufSize) {
|
||||
ZipFileUtils.bufSize = bufSize;
|
||||
}
|
||||
|
||||
public static boolean isValidJarFile(String moduleFilePath) {
|
||||
if (moduleFilePath == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!new File(moduleFilePath).exists()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try (JarFile zip = new JarFile(moduleFilePath)) {
|
||||
zip.getManifest();
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Common Runtime Plug-in
|
||||
Bundle-SymbolicName: org.talend.commons.runtime;singleton:=true
|
||||
Bundle-Version: 8.0.1.qualifier
|
||||
Bundle-Version: 8.8.8.qualifier
|
||||
Require-Bundle: org.apache.log4j;visibility:=reexport,
|
||||
org.apache.commons.commons-beanutils,
|
||||
org.apache.commons.collections,
|
||||
|
||||
@@ -283,7 +283,6 @@
|
||||
<KEYWORD1>smallint</KEYWORD1>
|
||||
<KEYWORD1>smallmoney</KEYWORD1>
|
||||
<KEYWORD1>text</KEYWORD1>
|
||||
<KEYWORD1>TIME</KEYWORD1>
|
||||
<KEYWORD1>timestamp</KEYWORD1>
|
||||
<KEYWORD1>tinyint</KEYWORD1>
|
||||
<KEYWORD1>uniqueidentifier</KEYWORD1>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.commons.runtime</artifactId>
|
||||
|
||||
@@ -92,12 +92,13 @@
|
||||
<dependency>
|
||||
<groupId>xerces</groupId>
|
||||
<artifactId>xercesImpl</artifactId>
|
||||
<version>2.12.2</version>
|
||||
<version>2.12.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.22</version>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.16</version>
|
||||
<type>bundle</type>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
@@ -125,7 +126,7 @@
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>32.0.1-jre</version>
|
||||
<version>30.0-jre</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<configuration>
|
||||
|
||||
@@ -58,14 +58,10 @@ public class CommonsPlugin implements BundleActivator {
|
||||
// TESB-17856: For commandline builds ESB Micorservice bundle
|
||||
private static boolean isESBMicorservice = false;
|
||||
|
||||
private static Boolean isJunitWorking;
|
||||
|
||||
private static Boolean isDevMode = null;
|
||||
|
||||
private static ServiceTracker proxyTracker;
|
||||
|
||||
private static Boolean isDebugP2 = null;
|
||||
|
||||
public static boolean isWorkbenchCreated() {
|
||||
return isWorkbenchCreated;
|
||||
}
|
||||
@@ -128,17 +124,6 @@ public class CommonsPlugin implements BundleActivator {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isDebugP2() {
|
||||
try {
|
||||
if (isDebugP2 == null) {
|
||||
isDebugP2 = Boolean.getBoolean("talend.studio.lite.p2.debug");
|
||||
}
|
||||
return isDebugP2;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isDebugMode() {
|
||||
return Boolean.getBoolean("talendDebug") //$NON-NLS-1$
|
||||
|| ArrayUtils.contains(Platform.getApplicationArgs(), TalendDebugHandler.TALEND_DEBUG);
|
||||
@@ -152,35 +137,6 @@ public class CommonsPlugin implements BundleActivator {
|
||||
return "org.talend.rcp.branding.tuj.product".equals(Platform.getProduct().getId()); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public static boolean isJunitWorking() {
|
||||
if (isJunitWorking == null) {
|
||||
try {
|
||||
String[] args = Platform.getCommandLineArgs();
|
||||
String applicationId = null;
|
||||
|
||||
for (int i = 0; i < args.length - 1; i++) {
|
||||
if (args[i].equalsIgnoreCase("-application")) { //$NON-NLS-1$
|
||||
applicationId = args[i + 1];
|
||||
}
|
||||
}
|
||||
|
||||
if (applicationId != null
|
||||
&& (applicationId.equals("org.eclipse.swtbot.eclipse.junit.headless.swtbottestapplication") //$NON-NLS-1$
|
||||
|| applicationId.equals("org.eclipse.pde.junit.runtime.uitestapplication"))) { //$NON-NLS-1$
|
||||
isJunitWorking = true;
|
||||
} else {
|
||||
isJunitWorking = false;
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
isJunitWorking = false;
|
||||
}
|
||||
}
|
||||
if (isJunitWorking == null) {
|
||||
isJunitWorking = false;
|
||||
}
|
||||
return isJunitWorking;
|
||||
}
|
||||
|
||||
/**
|
||||
* Answer the file associated with name. This handles the case of running as a plugin and running standalone which
|
||||
* happens during testing.
|
||||
|
||||
@@ -36,11 +36,6 @@ public final class CommonExceptionHandler {
|
||||
Priority priority = getPriority(ex);
|
||||
process(ex, priority);
|
||||
}
|
||||
|
||||
public static void process(Throwable ex, String msg) {
|
||||
Priority priority = getPriority(ex);
|
||||
process(ex, msg, priority);
|
||||
}
|
||||
|
||||
public static void process(Throwable ex, Priority priority) {
|
||||
String message = ex.getMessage();
|
||||
@@ -48,13 +43,6 @@ public final class CommonExceptionHandler {
|
||||
log.log(priority, message, ex);
|
||||
|
||||
}
|
||||
|
||||
public static void process(Throwable ex, String msg, Priority priority) {
|
||||
String message = ex.getMessage() + ": " + msg;
|
||||
|
||||
log.log(priority, message, ex);
|
||||
|
||||
}
|
||||
|
||||
public static void log(String message) {
|
||||
log.log(Level.INFO, message);
|
||||
|
||||
@@ -23,19 +23,10 @@ public class FatalException extends RuntimeException {
|
||||
@SuppressWarnings("unused")//$NON-NLS-1$
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final int CODE_INCOMPATIBLE_UPDATE = 10;
|
||||
|
||||
private int code;
|
||||
|
||||
public FatalException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public FatalException(int code, String message) {
|
||||
super(message);
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public FatalException(String message) {
|
||||
super(message);
|
||||
}
|
||||
@@ -43,9 +34,4 @@ public class FatalException extends RuntimeException {
|
||||
public FatalException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.runtime.model.emf;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
import org.eclipse.emf.common.util.URI;
|
||||
import org.eclipse.emf.ecore.xmi.XMLHelper;
|
||||
import org.eclipse.emf.ecore.xmi.XMLResource;
|
||||
import org.eclipse.emf.ecore.xmi.XMLSave;
|
||||
import org.eclipse.emf.ecore.xmi.impl.XMISaveImpl;
|
||||
import org.eclipse.emf.ecore.xmi.impl.XMLString;
|
||||
|
||||
/**
|
||||
* DOC jding class global comment. Detailled comment
|
||||
*/
|
||||
public class CustomXMIResource extends TalendXMIResource {
|
||||
|
||||
public static final String ENCODING = "UTF-8"; //$NON-NLS-1$
|
||||
|
||||
CustomXMISave xmiSave;
|
||||
|
||||
public CustomXMIResource() {
|
||||
super();
|
||||
}
|
||||
|
||||
public CustomXMIResource(URI uri) {
|
||||
super(uri);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
super.init();
|
||||
encoding = ENCODING;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected XMLSave createXMLSave() {
|
||||
xmiSave = new CustomXMISave(createXMLHelper());
|
||||
return xmiSave;
|
||||
}
|
||||
|
||||
public String getResourceContent(Map<?, ?> options) {
|
||||
if (xmiSave == null) {
|
||||
createXMLSave();
|
||||
}
|
||||
return xmiSave.getXMLContent(this, options);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class CustomXMISave extends XMISaveImpl {
|
||||
|
||||
public CustomXMISave(XMLHelper helper) {
|
||||
super(helper);
|
||||
}
|
||||
|
||||
public String getXMLContent(XMLResource resource, Map<?, ?> options) {
|
||||
StringJoiner strJoin = new StringJoiner("");
|
||||
super.init(resource, options);
|
||||
super.traverse(resource.getContents());
|
||||
XMLString xmlString = this.doc;
|
||||
Iterator<String> iterator = xmlString.stringIterator();
|
||||
while (iterator.hasNext()) {
|
||||
String string = (String) iterator.next();
|
||||
if (string != null) {
|
||||
strJoin.add(string);
|
||||
}
|
||||
}
|
||||
return strJoin.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,7 +16,6 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
@@ -264,12 +263,4 @@ public class EmfHelper {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String getEmfModelContent(EObject model) throws Exception {
|
||||
String content = "";
|
||||
CustomXMIResource xmiResource = new CustomXMIResource();
|
||||
xmiResource.getContents().add(model);
|
||||
content = xmiResource.getResourceContent(Collections.EMPTY_MAP);
|
||||
return content;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ package org.talend.commons.runtime.service;
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
@@ -46,22 +45,6 @@ public interface ITaCoKitService {
|
||||
boolean isNeedMigration(String componentName, Map<String, String> properties);
|
||||
|
||||
boolean isTaCoKitType(Object repoType);
|
||||
|
||||
boolean isTaCoKitRepositoryNode(Object node);
|
||||
|
||||
boolean isTaCoKitConnection(Object conn);
|
||||
|
||||
Object getDatastoreFromDataset(Object repositoryViewObject);
|
||||
|
||||
String getParentItemIdFromItem(Object Item);
|
||||
|
||||
boolean isValueSelectionParameter(Object parameter);
|
||||
|
||||
List<Map<String, Object>> convertToTable(String value);
|
||||
|
||||
List<String> getValuesFromTableParameter(Object parameter, String... keys);
|
||||
|
||||
List<String> getValuesFromTableParameterValue(String value, String ...keys);
|
||||
|
||||
public static ITaCoKitService getInstance() {
|
||||
BundleContext bc = FrameworkUtil.getBundle(ITaCoKitService.class).getBundleContext();
|
||||
|
||||
@@ -31,9 +31,7 @@ import javax.xml.transform.stream.StreamResult;
|
||||
|
||||
import org.talend.utils.xml.XmlUtils;
|
||||
import org.w3c.dom.Document;
|
||||
import org.xml.sax.ErrorHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXParseException;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -52,23 +50,6 @@ public final class XMLFileUtil {
|
||||
public static Document loadDoc(InputStream stream) throws ParserConfigurationException, SAXException, IOException {
|
||||
try {
|
||||
DocumentBuilder db = DOCBUILDER_FACTORY.newDocumentBuilder();
|
||||
db.setErrorHandler(new ErrorHandler() {
|
||||
|
||||
@Override
|
||||
public void warning(SAXParseException exception) throws SAXException {
|
||||
throw exception;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fatalError(SAXParseException exception) throws SAXException {
|
||||
throw exception;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(SAXParseException exception) throws SAXException {
|
||||
throw exception;
|
||||
}
|
||||
});
|
||||
return db.parse(stream);
|
||||
} finally {
|
||||
try {
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
package org.talend.commons.utils;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.crypto.BadPaddingException;
|
||||
import javax.crypto.Cipher;
|
||||
@@ -35,8 +34,6 @@ public class PasswordEncryptUtil {
|
||||
|
||||
private static final SecureRandom SECURERANDOM = new SecureRandom();
|
||||
|
||||
private static final Pattern REG_ENCRYPTED_DATA = Pattern.compile("^enc\\:system\\.encryption\\.key\\.v\\d\\:\\p{Print}+");
|
||||
|
||||
private static SecretKey getSecretKey() throws Exception {
|
||||
if (key == null) {
|
||||
byte rawKeyData[] = StudioEncryption
|
||||
|
||||
@@ -145,30 +145,7 @@ public class DB2ForZosDataBaseMetadata extends PackageFakeDatabaseMetadata {
|
||||
*/
|
||||
@Override
|
||||
public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException {
|
||||
ResultSet rs = super.getPrimaryKeys(catalog, schema, table);
|
||||
if (rs == null) {
|
||||
rs = new DB2ForZosResultSet();
|
||||
}
|
||||
return rs;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.utils.database.FakeDatabaseMetaData#getExportedKeys(java.lang.String, java.lang.String,
|
||||
* java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
|
||||
ResultSet rs = super.getExportedKeys(catalog, schema, table);
|
||||
if (rs == null) {
|
||||
if (this.metaData != null) {
|
||||
rs = this.metaData.getExportedKeys(catalog, schema, table);
|
||||
} else {
|
||||
rs = new DB2ForZosResultSet();
|
||||
}
|
||||
}
|
||||
return rs;
|
||||
return new DB2ForZosResultSet();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -197,6 +174,17 @@ public class DB2ForZosDataBaseMetadata extends PackageFakeDatabaseMetadata {
|
||||
return tableResultSet;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.utils.database.FakeDatabaseMetaData#getExportedKeys(java.lang.String, java.lang.String,
|
||||
* java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
|
||||
return new DB2ForZosResultSet();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
|
||||
@@ -1,24 +1,18 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.signon.util.listener;
|
||||
|
||||
public interface LoginEventListener {
|
||||
|
||||
public void loginStart();
|
||||
|
||||
public void loginStop(String authCode, String dataCenter);
|
||||
|
||||
public void loginFailed(Exception ex);
|
||||
|
||||
public String getCodeChallenge();
|
||||
}
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.utils.network;
|
||||
|
||||
public interface ITalendNexusPrefConstants {
|
||||
|
||||
public static final String NEXUS_TIMEOUT = "NEXUS_TIMEOUT"; //$NON-NLS-1$
|
||||
}
|
||||
@@ -24,7 +24,6 @@ import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Enumeration;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
@@ -32,13 +31,8 @@ import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.eclipse.core.internal.net.ProxyManager;
|
||||
import org.eclipse.core.net.proxy.IProxyData;
|
||||
import org.eclipse.core.net.proxy.IProxyService;
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||
import org.talend.commons.exception.CommonExceptionHandler;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.runtime.utils.io.FileCopyUtils;
|
||||
|
||||
@@ -47,8 +41,6 @@ import org.talend.commons.runtime.utils.io.FileCopyUtils;
|
||||
*/
|
||||
public class NetworkUtil {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(NetworkUtil.class);
|
||||
|
||||
private static final String[] windowsCommand = { "ipconfig", "/all" }; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
||||
private static final String[] linuxCommand = { "/sbin/ifconfig", "-a" }; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
@@ -63,11 +55,6 @@ public class NetworkUtil {
|
||||
private static final int DEFAULT_NEXUS_TIMEOUT = 20000;// same as preference value
|
||||
|
||||
public static final String ORG_TALEND_DESIGNER_CORE = "org.talend.designer.core"; //$NON-NLS-1$
|
||||
|
||||
/*
|
||||
* see ITalendCorePrefConstants.PERFORMANCE_TAC_READ_TIMEOUT
|
||||
*/
|
||||
private static final String PERFORMANCE_TAC_READ_TIMEOUT = "PERFORMANCE_TAC_READ_TIMEOUT"; //$NON-NLS-1$
|
||||
|
||||
private static final String PROP_DISABLEDSCHEMES_USE_DEFAULT = "talend.studio.jdk.http.auth.tunneling.disabledSchemes.useDefault";
|
||||
|
||||
@@ -79,136 +66,6 @@ public class NetworkUtil {
|
||||
|
||||
private static final String PROP_NETWORK_STATUS = "network.status"; //$NON-NLS-1$
|
||||
|
||||
private static final String SYSTEM_PROXY_ENABLED = "talend.studio.proxy.enableSystemProxyByDefault";
|
||||
|
||||
public static void applyProxyFromSystemProperties() throws Exception {
|
||||
if (!Boolean.valueOf(System.getProperty("talend.studio.proxy.applySystemProps", Boolean.FALSE.toString()))) {
|
||||
return;
|
||||
}
|
||||
final String passwordMask = "***";
|
||||
String httpProxyHost = System.getProperty("http.proxyHost");
|
||||
String httpProxyPort = System.getProperty("http.proxyPort");
|
||||
String httpUser = System.getProperty("http.proxyUser");
|
||||
String httpPassword = System.getProperty("http.proxyPassword");
|
||||
if (StringUtils.isNotBlank(httpPassword)) {
|
||||
System.setProperty("http.proxyPassword", passwordMask);
|
||||
}
|
||||
String httpNonProxyHosts = System.getProperty("http.nonProxyHosts");
|
||||
String httpsProxyHost = System.getProperty("https.proxyHost");
|
||||
String httpsProxyPort = System.getProperty("https.proxyPort");
|
||||
String httpsUser = System.getProperty("https.proxyUser");
|
||||
String httpsPassword = System.getProperty("https.proxyPassword");
|
||||
if (StringUtils.isNotBlank(httpsPassword)) {
|
||||
System.setProperty("https.proxyPassword", passwordMask);
|
||||
}
|
||||
String httpsNonProxyHosts = System.getProperty("https.nonProxyHosts");
|
||||
String socksProxyHost = System.getProperty("socksProxyHost");
|
||||
String socksProxyPort = System.getProperty("socksProxyPort");
|
||||
String socksProxyUser = System.getProperty("socksProxyUser");
|
||||
if (socksProxyUser == null) {
|
||||
socksProxyUser = System.getProperty("java.net.socks.username");
|
||||
}
|
||||
String socksProxyPassword = System.getProperty("socksProxyPassword");
|
||||
if (StringUtils.isNotBlank(socksProxyPassword)) {
|
||||
System.setProperty("socksProxyPassword", passwordMask);
|
||||
}
|
||||
if (socksProxyPassword == null) {
|
||||
socksProxyPassword = System.getProperty("java.net.socks.password");
|
||||
}
|
||||
IProxyService proxyService = ProxyManager.getProxyManager();
|
||||
boolean isHttpProxyEnabled = StringUtils.isNotBlank(httpProxyHost) && StringUtils.isNotBlank(httpProxyPort);
|
||||
boolean isHttpsProxyEnabled = StringUtils.isNotBlank(httpsProxyHost) && StringUtils.isNotBlank(httpsProxyPort);
|
||||
boolean isSocksProxyEnabled = StringUtils.isNotBlank(socksProxyHost) && StringUtils.isNotBlank(socksProxyPort);
|
||||
if (!isHttpProxyEnabled && !isHttpsProxyEnabled && !isSocksProxyEnabled) {
|
||||
proxyService
|
||||
.setSystemProxiesEnabled(Boolean.valueOf(System.getProperty(SYSTEM_PROXY_ENABLED, Boolean.TRUE.toString())));
|
||||
proxyService.setProxiesEnabled(false);
|
||||
LOGGER.info("No proxy specified, disabled.");
|
||||
} else {
|
||||
proxyService.setSystemProxiesEnabled(false);
|
||||
proxyService.setProxiesEnabled(true);
|
||||
List<IProxyData> proxies = new ArrayList<>();
|
||||
String initedProxyTypes = "";
|
||||
if (isHttpProxyEnabled) {
|
||||
try {
|
||||
IProxyData httpProxy = proxyService.getProxyData(IProxyData.HTTP_PROXY_TYPE);
|
||||
httpProxy.setHost(httpProxyHost);
|
||||
httpProxy.setPort(Integer.valueOf(httpProxyPort));
|
||||
if (StringUtils.isNotBlank(httpUser)) {
|
||||
httpProxy.setUserid(httpUser);
|
||||
if (httpPassword == null) {
|
||||
httpPassword = "";
|
||||
}
|
||||
httpProxy.setPassword(httpPassword);
|
||||
}
|
||||
proxies.add(httpProxy);
|
||||
initedProxyTypes += IProxyData.HTTP_PROXY_TYPE + " ";
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
if (isHttpsProxyEnabled) {
|
||||
try {
|
||||
IProxyData httpsProxy = proxyService.getProxyData(IProxyData.HTTPS_PROXY_TYPE);
|
||||
httpsProxy.setHost(httpsProxyHost);
|
||||
httpsProxy.setPort(Integer.valueOf(httpsProxyPort));
|
||||
if (StringUtils.isNotBlank(httpsUser)) {
|
||||
httpsProxy.setUserid(httpsUser);
|
||||
if (httpsPassword == null) {
|
||||
httpsPassword = "";
|
||||
}
|
||||
httpsProxy.setPassword(httpsPassword);
|
||||
}
|
||||
proxies.add(httpsProxy);
|
||||
initedProxyTypes += IProxyData.HTTPS_PROXY_TYPE + " ";
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
if (isSocksProxyEnabled) {
|
||||
try {
|
||||
IProxyData socksProxy = proxyService.getProxyData(IProxyData.SOCKS_PROXY_TYPE);
|
||||
socksProxy.setHost(socksProxyHost);
|
||||
socksProxy.setPort(Integer.valueOf(socksProxyPort));
|
||||
if (StringUtils.isNotBlank(socksProxyUser)) {
|
||||
socksProxy.setUserid(socksProxyUser);
|
||||
if (socksProxyPassword == null) {
|
||||
socksProxyPassword = "";
|
||||
}
|
||||
socksProxy.setPassword(socksProxyPassword);
|
||||
}
|
||||
proxies.add(socksProxy);
|
||||
initedProxyTypes += IProxyData.SOCKS_PROXY_TYPE;
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
proxyService.setProxyData(proxies.toArray(new IProxyData[0]));
|
||||
List<String> nonProxyHosts = new ArrayList<>();
|
||||
if (StringUtils.isNotBlank(httpNonProxyHosts)) {
|
||||
String[] split = httpNonProxyHosts.split("|");
|
||||
nonProxyHosts.addAll(Arrays.asList(split));
|
||||
}
|
||||
if (StringUtils.isNotBlank(httpsNonProxyHosts)) {
|
||||
String[] split = httpsNonProxyHosts.split("|");
|
||||
nonProxyHosts.addAll(Arrays.asList(split));
|
||||
}
|
||||
proxyService.setNonProxiedHosts(nonProxyHosts.toArray(new String[0]));
|
||||
|
||||
if (passwordMask.equals(System.getProperty("http.proxyPassword"))) {
|
||||
System.setProperty("http.proxyPassword", httpPassword);
|
||||
}
|
||||
if (passwordMask.equals(System.getProperty("https.proxyPassword"))) {
|
||||
System.setProperty("https.proxyPassword", httpsPassword);
|
||||
}
|
||||
if (passwordMask.equals(System.getProperty("socksProxyPassword"))) {
|
||||
System.setProperty("socksProxyPassword", socksProxyPassword);
|
||||
}
|
||||
|
||||
LOGGER.info("Succeed to init proxy: " + initedProxyTypes);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isNetworkValid() {
|
||||
return isNetworkValid(DEFAULT_TIMEOUT);
|
||||
}
|
||||
@@ -246,7 +103,6 @@ public class NetworkUtil {
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
CommonExceptionHandler.process(e, getCheckUrl());
|
||||
return false;
|
||||
} finally {
|
||||
conn.disconnect();
|
||||
@@ -259,7 +115,7 @@ public class NetworkUtil {
|
||||
if (StringUtils.isNotBlank(customUrl)) {
|
||||
return customUrl;
|
||||
} else {
|
||||
return "https://talend-update.talend.com/nexus/content/groups/studio-libraries/";
|
||||
return "https://talend-update.talend.com/nexus/content/repositories/libraries/";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,7 +139,6 @@ public class NetworkUtil {
|
||||
conn.setRequestMethod("HEAD"); //$NON-NLS-1$
|
||||
conn.getResponseMessage();
|
||||
} catch (Exception e) {
|
||||
CommonExceptionHandler.process(e, urlString);
|
||||
// if not reachable , will throw exception(time out/unknown host) .So if catched exception, make it a
|
||||
// invalid server
|
||||
return false;
|
||||
@@ -294,10 +149,10 @@ public class NetworkUtil {
|
||||
}
|
||||
|
||||
public static int getNexusTimeout() {
|
||||
int timeout = Integer.getInteger("nexus.timeout.min", DEFAULT_NEXUS_TIMEOUT);
|
||||
int timeout = DEFAULT_NEXUS_TIMEOUT;
|
||||
try {
|
||||
IEclipsePreferences node = InstanceScope.INSTANCE.getNode(ORG_TALEND_DESIGNER_CORE);
|
||||
timeout = Math.max(timeout, node.getInt(PERFORMANCE_TAC_READ_TIMEOUT, 0) * 1000);
|
||||
timeout = node.getInt(ITalendNexusPrefConstants.NEXUS_TIMEOUT, DEFAULT_NEXUS_TIMEOUT);
|
||||
} catch (Throwable e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
|
||||
@@ -88,17 +88,13 @@ public class EclipseCommandLine {
|
||||
static public final String TALEND_CONTINUE_LOGON = "-talendContinueLogon";
|
||||
|
||||
static public final String TALEND_CONTINUE_UPDATE = "-talendContinueUpdate";
|
||||
|
||||
static public final String TALEND_CLEAN_M2 = "-talendCleanM2";
|
||||
|
||||
static public final String TALEND_CLEAN_UNINSTALLED_BUNDLES = "-talendCleanUninstalledBundles";
|
||||
|
||||
static public final String PROP_KEY_PROFILE_ID = "eclipse.p2.profile";
|
||||
|
||||
static public final String ARG_BRANCH = "-branch";
|
||||
|
||||
static public final String ARG_PROJECT = "-project";
|
||||
|
||||
|
||||
static public final String LOGIN_ONLINE_UPDATE = "--loginOnlineUpdate";
|
||||
|
||||
static public final String ARG_TALEND_BUNDLES_CLEANED = "-talend.studio.bundles.cleaned"; //$NON-NLS-1$
|
||||
|
||||
@@ -1 +1 @@
|
||||
talend.version=8.0.1
|
||||
talend.version=8.8.8
|
||||
|
||||
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Common UI Plug-in
|
||||
Bundle-SymbolicName: org.talend.commons.ui;singleton:=true
|
||||
Bundle-Version: 8.0.1.qualifier
|
||||
Bundle-Version: 8.8.8.qualifier
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
org.eclipse.core.resources,
|
||||
org.eclipse.jface.text,
|
||||
@@ -20,8 +20,7 @@ Require-Bundle: org.eclipse.core.runtime,
|
||||
org.talend.commons.runtime,
|
||||
org.talend.common.ui.runtime;visibility:=reexport,
|
||||
org.talend.libraries.ui;visibility:=reexport,
|
||||
org.eclipse.ui.workbench,
|
||||
org.eclipse.jface.notifications
|
||||
org.eclipse.ui.workbench
|
||||
Eclipse-LazyStart: true
|
||||
Bundle-Vendor: .Talend SA.
|
||||
Export-Package: org.talend.commons.ui.command,
|
||||
@@ -29,7 +28,6 @@ Export-Package: org.talend.commons.ui.command,
|
||||
org.talend.commons.ui.gmf.util,
|
||||
org.talend.commons.ui.html,
|
||||
org.talend.commons.ui.i18n,
|
||||
org.talend.commons.ui.nofitication,
|
||||
org.talend.commons.ui.swt.actions,
|
||||
org.talend.commons.ui.swt.advanced.composite,
|
||||
org.talend.commons.ui.swt.advanced.dataeditor,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.commons.ui</artifactId>
|
||||
|
||||
@@ -92,7 +92,7 @@ ProposalUtils.CtrlProposal.ErrorMsg=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u5236\u
|
||||
RemovePushButton.RemoveButton.Tip=\u9078\u629E\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664
|
||||
ResetDBTypesButton.ResetDBTypesButton.Tip=DB\u30BF\u30A4\u30D7\u3092\u30EA\u30BB\u30C3\u30C8
|
||||
Rule.rule=\u30EB\u30FC\u30EB[{0}]
|
||||
SaveAsGenericSchemaPushButton.saveAsSchema=\u30B8\u30A7\u30CD\u30EA\u30C3\u30AF\u30B9\u30AD\u30FC\u30DE\u3068\u3057\u3066\u4FDD\u5B58
|
||||
SaveAsGenericSchemaPushButton.saveAsSchema=\u6C4E\u7528\u30B9\u30AD\u30FC\u30DE\u3068\u3057\u3066\u4FDD\u5B58
|
||||
SelectContextVariablesPushButton.Label=\u30B3\u30F3\u30C6\u30AF\u30B9\u30C8\u5909\u6570\u3092\u9078\u629E
|
||||
SWTCalendarWithTime.contentEvening=\u5915\u65B9
|
||||
SWTCalendarWithTime.contentHr=\u6642:
|
||||
@@ -116,7 +116,7 @@ ModelSelectionDialog.Option=\u30AA\u30D7\u30B7\u30E7\u30F3
|
||||
ModelSelectionDialog.BuiltIn=\u7D44\u307F\u8FBC\u307F\u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u5909\u66F4\u3057\u307E\u3059\u3002
|
||||
ModelSelectionDialog.ViewSchema=\u30B9\u30AD\u30FC\u30DE\u3092\u8868\u793A\u3057\u307E\u3059(\u8AAD\u307F\u53D6\u308A\u5C02\u7528)\u3002
|
||||
ModelSelectionDialog.ViewQuery=\u30AF\u30A8\u30EA\u30FC\u3046\u3092\u8868\u793A\u3057\u307E\u3059(\u8AAD\u307F\u53D6\u308A\u5C02\u7528)\u3002
|
||||
ModelSelectionDialog.Update=\u30EA\u30DD\u30B8\u30C8\u30EA\u30FC\u63A5\u7D9A\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u307E\u3059\u3002
|
||||
ModelSelectionDialog.Update=\u30EA\u30DD\u30B8\u30C8\u30EA\u30FC\u63A5\u7D9A\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002
|
||||
FileStep2.previewFailure=\u30D7\u30EC\u30D3\u30E5\u30FC\u30A8\u30E9\u30FC\u3002\u4E00\u90E8\u306E\u8A2D\u5B9A\u3092\u5909\u66F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\u6CE8: \u30D7\u30EC\u30D3\u30E5\u30FC\u30A8\u30E9\u30FC\u306F\u4E00\u822C\u7684\u306B\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u8A2D\u5B9A\u306E\u8AA4\u308A\u304C\u539F\u56E0\u3067\u3059\u3002
|
||||
StateComposite.FLL_DB_INFOR=DB\u60C5\u5831\u3092\u5165\u529B
|
||||
StateComposite.HELP_MESSAGE=\u30D8\u30EB\u30D7\u30E1\u30C3\u30BB\u30FC\u30B8
|
||||
|
||||
@@ -1,133 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2022 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.nofitication;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jface.notifications.AbstractNotificationPopup;
|
||||
import org.eclipse.jface.window.Window;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.graphics.Rectangle;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.swt.widgets.Monitor;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
public abstract class ArrangedNotificationPopup extends AbstractNotificationPopup {
|
||||
|
||||
protected static final int MAX_WIDTH = 400;
|
||||
|
||||
protected static final int MIN_HEIGHT = 100;
|
||||
|
||||
protected static final int PADDING_EDGE = 5;
|
||||
|
||||
private static NotificationManager manager;
|
||||
|
||||
public ArrangedNotificationPopup(Display display) {
|
||||
super(display);
|
||||
}
|
||||
|
||||
public ArrangedNotificationPopup(Display display, int style) {
|
||||
super(display, style);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createContentArea(Composite parent) {
|
||||
createControl(parent);
|
||||
afterCreate();
|
||||
}
|
||||
|
||||
protected abstract void createControl(Composite parent);
|
||||
|
||||
@Override
|
||||
protected Shell getParentShell() {
|
||||
return getNotificationManager().getParentShell();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializeBounds() {
|
||||
Rectangle clArea = getPrimaryClientArea();
|
||||
Point initialSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
|
||||
int height = Math.max(initialSize.y, MIN_HEIGHT);
|
||||
int width = Math.min(initialSize.x, MAX_WIDTH);
|
||||
|
||||
Point size = new Point(width, height);
|
||||
getShell().setLocation(clArea.width + clArea.x - size.x - PADDING_EDGE, clArea.height + clArea.y - size.y - PADDING_EDGE);
|
||||
getShell().setSize(size);
|
||||
}
|
||||
|
||||
private Rectangle getPrimaryClientArea() {
|
||||
Shell parentShell = getParentShell();
|
||||
if (parentShell != null) {
|
||||
// calculate client area in display-relative coordinates
|
||||
// (i.e. without window border / decorations)
|
||||
Rectangle bounds = parentShell.getBounds();
|
||||
Rectangle trim = parentShell.computeTrim(0, 0, 0, 0);
|
||||
List<Window> toasts = getNotificationManager().getWindows();
|
||||
Rectangle rect = new Rectangle(bounds.x - trim.x, bounds.y - trim.y, bounds.width - trim.width,
|
||||
bounds.height - trim.height);
|
||||
if (!toasts.isEmpty()) {
|
||||
int index = 0;
|
||||
if (toasts.contains(this)) {
|
||||
// parent shell resize or move
|
||||
index = toasts.indexOf(this);
|
||||
if (index == 0) {
|
||||
// return parent shell rectangle if it's the first one at bottom
|
||||
return rect;
|
||||
}
|
||||
// the one under current toast
|
||||
index -= 1;
|
||||
} else {
|
||||
// toast creation
|
||||
// the one on the top
|
||||
index = toasts.size() - 1;
|
||||
}
|
||||
Rectangle toastRect = toasts.get(index).getShell().getBounds();
|
||||
rect = new Rectangle(rect.x, rect.y, rect.width, toastRect.y - rect.y);
|
||||
}
|
||||
return rect;
|
||||
}
|
||||
// else display on primary monitor
|
||||
Monitor primaryMonitor = this.getShell().getDisplay().getPrimaryMonitor();
|
||||
return (primaryMonitor != null) ? primaryMonitor.getClientArea() : this.getShell().getDisplay().getClientArea();
|
||||
}
|
||||
|
||||
protected void afterCreate() {
|
||||
//
|
||||
}
|
||||
|
||||
@Override
|
||||
public int open() {
|
||||
int open = super.open();
|
||||
// add after open
|
||||
getNotificationManager().add(this);
|
||||
return open;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean close() {
|
||||
boolean close = super.close();
|
||||
getNotificationManager().remove(this);
|
||||
getNotificationManager().refresh();
|
||||
return close;
|
||||
}
|
||||
|
||||
private NotificationManager getNotificationManager() {
|
||||
if (manager == null) {
|
||||
manager = NotificationManager.getInstance();
|
||||
}
|
||||
return manager;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.nofitication;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.eclipse.jface.window.Window;
|
||||
import org.eclipse.jface.window.WindowManager;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
|
||||
public class NotificationManager implements Listener {
|
||||
|
||||
private static NotificationManager notificationManager;
|
||||
|
||||
private WindowManager windowManager = new WindowManager();
|
||||
|
||||
private NotificationManager() {
|
||||
Shell shell = getParentShell();
|
||||
if (shell != null) {
|
||||
shell.addListener(SWT.Resize, this);
|
||||
shell.addListener(SWT.Move, this);
|
||||
}
|
||||
}
|
||||
|
||||
public static NotificationManager getInstance() {
|
||||
if (notificationManager == null) {
|
||||
notificationManager = new NotificationManager();
|
||||
}
|
||||
return notificationManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleEvent(Event event) {
|
||||
refresh();
|
||||
}
|
||||
|
||||
public void refresh() {
|
||||
Stream.of(windowManager.getWindows()).map(ArrangedNotificationPopup.class::cast)
|
||||
.forEach(ArrangedNotificationPopup::initializeBounds);
|
||||
}
|
||||
|
||||
public List<Window> getWindows() {
|
||||
return Stream.of(windowManager.getWindows()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public void add(Window window) {
|
||||
windowManager.add(window);
|
||||
}
|
||||
|
||||
public void remove(Window window) {
|
||||
windowManager.remove(window);
|
||||
}
|
||||
|
||||
public Shell getParentShell() {
|
||||
Shell shell = null;
|
||||
if (PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) {
|
||||
shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
|
||||
if (shell == null) {
|
||||
shell = PlatformUI.getWorkbench().getDisplay().getActiveShell();
|
||||
}
|
||||
}
|
||||
return shell;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -130,10 +130,11 @@ public abstract class ExportPushButtonForExtendedTable extends ExportPushButton
|
||||
AbstractExtendedTableViewer extendedTableViewer = (AbstractExtendedTableViewer) extendedControlViewer;
|
||||
ExtendedTableModel extendedTableModel = extendedTableViewer.getExtendedTableModel();
|
||||
boolean enabled = false;
|
||||
if (extendedTableModel != null && extendedTableModel.isDataRegistered() && extendedTableModel.getBeansList().size() > 0) {
|
||||
if (extendedTableModel != null && extendedTableModel.isDataRegistered()
|
||||
&& extendedTableModel.getBeansList().size() > 0) {
|
||||
enabled = true;
|
||||
}
|
||||
return extendedTableModel != null || enabled;
|
||||
return super.getEnabledState() && enabled;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import org.talend.commons.ui.runtime.image.EImage;
|
||||
import org.talend.commons.ui.runtime.image.ImageProvider;
|
||||
import org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton;
|
||||
import org.talend.commons.ui.swt.extended.table.AbstractExtendedTableViewer;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
|
||||
/**
|
||||
* DOC Administrator class global comment. Detailled comment <br/>
|
||||
@@ -34,11 +33,4 @@ public abstract class SaveAsGenericSchemaPushButton extends ExtendedPushButton {
|
||||
|
||||
@Override
|
||||
protected abstract Command getCommandToExecute();
|
||||
|
||||
@Override
|
||||
public boolean getEnabledState() {
|
||||
AbstractExtendedTableViewer extendedTableViewer = (AbstractExtendedTableViewer) extendedControlViewer;
|
||||
ExtendedTableModel extendedTableModel = extendedTableViewer.getExtendedTableModel();
|
||||
return extendedTableModel != null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ import java.util.List;
|
||||
|
||||
import org.eclipse.gef.commands.Command;
|
||||
import org.talend.commons.ui.runtime.i18n.Messages;
|
||||
import org.talend.commons.ui.runtime.swt.tableviewer.TableViewerCreatorNotModifiable;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
|
||||
/**
|
||||
@@ -89,11 +88,6 @@ public class ExtendedTableAddCommand extends Command implements IExtendedTableCo
|
||||
// }
|
||||
|
||||
extendedTable.addAll(indexStartAdd, beansToAdd);
|
||||
// when not lazy load need to do refresh to refresh the row number
|
||||
if (!TableViewerCreatorNotModifiable.getRecommandLazyLoad()
|
||||
&& !TableViewerCreatorNotModifiable.isLazyLoadingEnabled()) {
|
||||
extendedTable.getTableViewer().refresh();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ public abstract class ExtendedTableCaseCommand extends Command implements IExten
|
||||
@Override
|
||||
public void execute() {
|
||||
convertCase(extendedTable, beansToCovertCase, selectionIndices, isUpperCase);
|
||||
extendedTable.getTableViewer().refresh();
|
||||
|
||||
}
|
||||
|
||||
public abstract void convertCase(ExtendedTableModel extendedTable, List copiedObjectsList, int[] selectionIndices, boolean isUpperCase);
|
||||
|
||||
@@ -17,7 +17,6 @@ import java.util.List;
|
||||
|
||||
import org.eclipse.gef.commands.Command;
|
||||
import org.talend.commons.ui.runtime.i18n.Messages;
|
||||
import org.talend.commons.ui.runtime.swt.tableviewer.TableViewerCreatorNotModifiable;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
import org.talend.commons.ui.utils.SimpleClipboard;
|
||||
import org.talend.commons.utils.data.list.UniqueStringGenerator;
|
||||
@@ -66,11 +65,6 @@ public abstract class ExtendedTablePasteCommand extends Command implements IExte
|
||||
List list = new ArrayList((List) data);
|
||||
list = createPastableBeansList(extendedTable, list);
|
||||
extendedTable.addAll(indexStart, list);
|
||||
// when not lazy load need to do refresh to refresh the row number
|
||||
if (!TableViewerCreatorNotModifiable.getRecommandLazyLoad()
|
||||
&& !TableViewerCreatorNotModifiable.isLazyLoadingEnabled()) {
|
||||
extendedTable.getTableViewer().refresh();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ package org.talend.commons.ui.swt.advanced.dataeditor.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.gef.commands.Command;
|
||||
import org.talend.commons.ui.runtime.i18n.Messages;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
@@ -55,7 +54,7 @@ public abstract class ExtendedTableQuoteCommand extends Command implements IExte
|
||||
@Override
|
||||
public void execute() {
|
||||
toQuote(extendedTable, beansToQuote, selectionIndices, quote, isAddingQuote);
|
||||
extendedTable.getTableViewer().refresh();
|
||||
|
||||
}
|
||||
|
||||
public abstract void toQuote(ExtendedTableModel extendedTable, List copiedObjectsList, int[] selectionIndices, String quote, boolean isAddingQuote);
|
||||
|
||||
@@ -20,7 +20,6 @@ import java.util.List;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.eclipse.gef.commands.Command;
|
||||
import org.talend.commons.ui.runtime.i18n.Messages;
|
||||
import org.talend.commons.ui.runtime.swt.tableviewer.TableViewerCreatorNotModifiable;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
|
||||
/**
|
||||
@@ -131,11 +130,6 @@ public class ExtendedTableRemoveCommand extends Command implements IExtendedTabl
|
||||
removedBeansIndices.add(index);
|
||||
}
|
||||
}
|
||||
// when not lazy load need to do refresh to refresh the row number
|
||||
if (!TableViewerCreatorNotModifiable.getRecommandLazyLoad()
|
||||
&& !TableViewerCreatorNotModifiable.isLazyLoadingEnabled()) {
|
||||
extendedTable.getTableViewer().refresh();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -18,12 +18,12 @@ import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.preference.PreferenceConverter;
|
||||
import org.eclipse.jface.resource.StringConverter;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.talend.commons.ui.runtime.ITalendThemeService;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.scanner.ColoringScanner;
|
||||
|
||||
/**
|
||||
@@ -33,7 +33,7 @@ import org.talend.commons.ui.swt.colorstyledtext.scanner.ColoringScanner;
|
||||
*
|
||||
*/
|
||||
public class ColorManager {
|
||||
|
||||
|
||||
public static final RGB DEFAULT_STRING_COLOR = new RGB(0, 0, 0);
|
||||
|
||||
public static final RGB DEFAULT_KEYWORD1_COLOR = new RGB(50, 32, 160);
|
||||
@@ -106,19 +106,15 @@ public class ColorManager {
|
||||
}
|
||||
|
||||
public Color getColor(String colorName) {
|
||||
Color prefColor = getThemeColor(colorName);
|
||||
if (colorMap.containsKey(colorName) && (colorMap.get(colorName)).equals(prefColor)) {
|
||||
return colorMap.get(colorName);
|
||||
RGB prefColor = PreferenceConverter.getColor(store, colorName);
|
||||
Color color = null;
|
||||
if (colorMap.containsKey(colorName) && (colorMap.get(colorName)).getRGB().equals(prefColor)) {
|
||||
color = (Color) colorMap.get(colorName);
|
||||
} else {
|
||||
colorMap.put(colorName, prefColor);
|
||||
color = new Color(Display.getDefault(), prefColor);
|
||||
colorMap.put(colorName, color);
|
||||
}
|
||||
return prefColor;
|
||||
}
|
||||
|
||||
private static Color getThemeColor(String colorName) {
|
||||
Color c = ITalendThemeService.getColor(colorName)
|
||||
.orElse(Display.getDefault().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
|
||||
return c;
|
||||
return color;
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
@@ -168,20 +164,20 @@ public class ColorManager {
|
||||
}
|
||||
|
||||
public static void initDefaultColors(IPreferenceStore store) {
|
||||
store.setDefault(NULL_COLOR, StringConverter.asString(getThemeColor(NULL_COLOR).getRGB()));
|
||||
store.setDefault(COMMENT1_COLOR, StringConverter.asString(getThemeColor(COMMENT1_COLOR).getRGB()));
|
||||
store.setDefault(COMMENT2_COLOR, StringConverter.asString(getThemeColor(COMMENT2_COLOR).getRGB()));
|
||||
store.setDefault(LITERAL1_COLOR, StringConverter.asString(getThemeColor(LITERAL1_COLOR).getRGB()));
|
||||
store.setDefault(LITERAL2_COLOR, StringConverter.asString(getThemeColor(LITERAL2_COLOR).getRGB()));
|
||||
store.setDefault(LABEL_COLOR, StringConverter.asString(getThemeColor(LABEL_COLOR).getRGB()));
|
||||
store.setDefault(KEYWORD1_COLOR, StringConverter.asString(getThemeColor(KEYWORD1_COLOR).getRGB()));
|
||||
store.setDefault(KEYWORD2_COLOR, StringConverter.asString(getThemeColor(KEYWORD2_COLOR).getRGB()));
|
||||
store.setDefault(KEYWORD3_COLOR, StringConverter.asString(getThemeColor(KEYWORD3_COLOR).getRGB()));
|
||||
store.setDefault(FUNCTION_COLOR, StringConverter.asString(getThemeColor(FUNCTION_COLOR).getRGB()));
|
||||
store.setDefault(MARKUP_COLOR, StringConverter.asString(getThemeColor(MARKUP_COLOR).getRGB()));
|
||||
store.setDefault(OPERATOR_COLOR, StringConverter.asString(getThemeColor(OPERATOR_COLOR).getRGB()));
|
||||
store.setDefault(DIGIT_COLOR, StringConverter.asString(getThemeColor(DIGIT_COLOR).getRGB()));
|
||||
store.setDefault(INVALID_COLOR, StringConverter.asString(getThemeColor(INVALID_COLOR).getRGB()));
|
||||
store.setDefault(NULL_COLOR, StringConverter.asString(DEFAULT_STRING_COLOR));
|
||||
store.setDefault(COMMENT1_COLOR, StringConverter.asString(DEFAULT_COMMENT1_COLOR));
|
||||
store.setDefault(COMMENT2_COLOR, StringConverter.asString(DEFAULT_COMMENT2_COLOR));
|
||||
store.setDefault(LITERAL1_COLOR, StringConverter.asString(DEFAULT_LITERAL1_COLOR));
|
||||
store.setDefault(LITERAL2_COLOR, StringConverter.asString(DEFAULT_LITERAL2_COLOR));
|
||||
store.setDefault(LABEL_COLOR, StringConverter.asString(DEFAULT_LABEL_COLOR));
|
||||
store.setDefault(KEYWORD1_COLOR, StringConverter.asString(DEFAULT_KEYWORD1_COLOR));
|
||||
store.setDefault(KEYWORD2_COLOR, StringConverter.asString(DEFAULT_KEYWORD2_COLOR));
|
||||
store.setDefault(KEYWORD3_COLOR, StringConverter.asString(DEFAULT_KEYWORD3_COLOR));
|
||||
store.setDefault(FUNCTION_COLOR, StringConverter.asString(DEFAULT_FUNCTION_COLOR));
|
||||
store.setDefault(MARKUP_COLOR, StringConverter.asString(DEFAULT_MARKUP_COLOR));
|
||||
store.setDefault(OPERATOR_COLOR, StringConverter.asString(DEFAULT_OPERATOR_COLOR));
|
||||
store.setDefault(DIGIT_COLOR, StringConverter.asString(DEFAULT_DIGIT_COLOR));
|
||||
store.setDefault(INVALID_COLOR, StringConverter.asString(DEFAULT_INVALID_COLOR));
|
||||
|
||||
String bold = BOLD_SUFFIX;
|
||||
store.setDefault(COMMENT1_COLOR + bold, false);
|
||||
|
||||
@@ -1,384 +1,368 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.colorstyledtext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.text.rules.IToken;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.custom.ExtendedModifyEvent;
|
||||
import org.eclipse.swt.custom.ExtendedModifyListener;
|
||||
import org.eclipse.swt.custom.StyleRange;
|
||||
import org.eclipse.swt.custom.StyledText;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.swt.widgets.MenuItem;
|
||||
import org.eclipse.ui.ISharedImages;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.talend.commons.runtime.xml.XmlUtil;
|
||||
import org.talend.commons.ui.runtime.ITalendThemeService;
|
||||
import org.talend.commons.ui.runtime.i18n.Messages;
|
||||
import org.talend.commons.ui.runtime.image.ImageProvider;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.jedit.Mode;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.jedit.Modes;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.rules.CToken;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.scanner.ColoringScanner;
|
||||
import org.talend.commons.utils.threading.ExecutionLimiter;
|
||||
|
||||
/**
|
||||
* This component is an adaptation of a Color Editor for a StyledText.
|
||||
*
|
||||
* The original editor can be found on http://www.gstaff.org/colorEditor/ <br/>
|
||||
*
|
||||
* <b>How to use it, example :</b> <br/>
|
||||
* ColorStyledText text = new ColorStyledText(parent, SWT.H_SCROLL | SWT.V_SCROLL,
|
||||
* CorePlugin.getDefault().getPreferenceStore(), ECodeLanguage.PERL.getName());</i> <br/>
|
||||
* <br/>
|
||||
*
|
||||
* $Id: ColorStyledText.java 7183 2007-11-23 11:03:36Z amaumont $
|
||||
*
|
||||
*/
|
||||
public class ColorStyledText extends StyledText {
|
||||
|
||||
|
||||
public static final String PREFERENCE_COLOR_FOREGROUND= "ColorStyledText.Color.Foreground"; //$NON-NLS-1$
|
||||
public static final String PREFERENCE_COLOR_BACKGROUND= "ColorStyledText.Color.Background"; //$NON-NLS-1$
|
||||
public static final String PREFERENCE_COLOR_SELECTION_FOREGROUND= "ColorStyledText.Color.SelectionForeground"; //$NON-NLS-1$
|
||||
public static final String PREFERENCE_COLOR_SELECTION_BACKGROUND= "ColorStyledText.Color.SelectionBackground"; //$NON-NLS-1$
|
||||
|
||||
private final static int MAXIMUM_CHARACTERS_BEFORE_USE_TIMER = 1000;
|
||||
|
||||
private final ColorManager colorManager;
|
||||
|
||||
private final ColoringScanner scanner;
|
||||
|
||||
private final String languageMode;
|
||||
|
||||
private final MenuItem pasteItem;
|
||||
|
||||
private boolean coloring = true;
|
||||
|
||||
private UndoRedoManager undoRedoManager;
|
||||
|
||||
public ColorStyledText(Composite parent, int style, IPreferenceStore store, String languageMode) {
|
||||
super(parent, style);
|
||||
this.languageMode = languageMode;
|
||||
this.colorManager = new ColorManager(store);
|
||||
|
||||
/*
|
||||
* set the Shortcuts of the undo/redo
|
||||
*/
|
||||
this.setKeyBinding('Z' | SWT.CTRL, ActionCode.UNDO);
|
||||
this.setKeyBinding('Y' | SWT.CTRL, ActionCode.REDO);
|
||||
UndoRedoManager undoManager = new UndoRedoManager(50);
|
||||
undoManager.connect(this);
|
||||
this.setUndoManager(undoManager);
|
||||
|
||||
ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
|
||||
Menu popupMenu = new Menu(this);
|
||||
|
||||
MenuItem redoItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
redoItem.setText(Messages.getString("ColorStyledText.RedoItem.Text")); //$NON-NLS-1$
|
||||
redoItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
redo();
|
||||
}
|
||||
});
|
||||
|
||||
MenuItem undoItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
undoItem.setText(Messages.getString("ColorStyledText.UndoItem.Text")); //$NON-NLS-1$
|
||||
undoItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
undo();
|
||||
}
|
||||
});
|
||||
|
||||
Image image = ImageProvider.getImage(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
|
||||
MenuItem copyItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
copyItem.setText(Messages.getString("ColorStyledText.CopyItem.Text")); //$NON-NLS-1$
|
||||
copyItem.setImage(image);
|
||||
copyItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
copy();
|
||||
}
|
||||
});
|
||||
|
||||
image = ImageProvider.getImage(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
|
||||
pasteItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
pasteItem.setText(Messages.getString("ColorStyledText.PasteItem.Text")); //$NON-NLS-1$
|
||||
pasteItem.setData(this);
|
||||
pasteItem.setImage(image);
|
||||
pasteItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
paste();
|
||||
}
|
||||
});
|
||||
pasteItem.setEnabled(getEditable());
|
||||
|
||||
this.setMenu(popupMenu);
|
||||
MenuItem selectAllItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
selectAllItem.setText(Messages.getString("ColorStyledText.SelectAllItem.Text")); //$NON-NLS-1$
|
||||
selectAllItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
selectAll();
|
||||
}
|
||||
});
|
||||
this.setMenu(popupMenu);
|
||||
|
||||
Listener selectAllListener = new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
if (event.character == '\u0001') { // CTRL + A
|
||||
selectAll();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
addListener(SWT.KeyDown, selectAllListener);
|
||||
|
||||
Mode mode = Modes.getMode(languageMode + XmlUtil.FILE_XML_SUFFIX);
|
||||
scanner = new ColoringScanner(mode, colorManager);
|
||||
|
||||
addExtendedModifyListener(modifyListener);
|
||||
initColorSetting();
|
||||
}
|
||||
|
||||
|
||||
protected void initColorSetting() {
|
||||
this.setForeground(ITalendThemeService.getColor(PREFERENCE_COLOR_FOREGROUND).orElse(null));
|
||||
this.setBackground(ITalendThemeService.getColor(PREFERENCE_COLOR_BACKGROUND).orElse(null));
|
||||
this.setSelectionBackground(ITalendThemeService.getColor(PREFERENCE_COLOR_SELECTION_BACKGROUND).orElse(null));
|
||||
this.setSelectionForeground(ITalendThemeService.getColor(PREFERENCE_COLOR_SELECTION_FOREGROUND).orElse(null));
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC qli Comment method "invokeAction".
|
||||
*
|
||||
* @param action
|
||||
*
|
||||
* */
|
||||
public void invokeAction(int action) {
|
||||
super.invokeAction(action);
|
||||
|
||||
switch (action) {
|
||||
case ActionCode.UNDO:
|
||||
undo(); // ctrl+Z
|
||||
break;
|
||||
case ActionCode.REDO:
|
||||
redo(); // ctrl+Y
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for undoRedoManager.
|
||||
*
|
||||
* @return the undoRedoManager
|
||||
*/
|
||||
public UndoRedoManager getUndoManager() {
|
||||
return this.undoRedoManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the undoRedoManager.
|
||||
*
|
||||
* @param undoRedoManager the undoRedoManager to set
|
||||
*/
|
||||
public void setUndoManager(UndoRedoManager undoRedoManager) {
|
||||
this.undoRedoManager = undoRedoManager;
|
||||
}
|
||||
|
||||
public static class ActionCode {
|
||||
|
||||
public static final int UNDO = Integer.MAX_VALUE;
|
||||
|
||||
public static final int REDO = UNDO - 1;
|
||||
|
||||
}
|
||||
|
||||
private void undo() {
|
||||
if (undoRedoManager != null) {
|
||||
undoRedoManager.undo();
|
||||
}
|
||||
}
|
||||
|
||||
private void redo() {
|
||||
if (undoRedoManager != null) {
|
||||
undoRedoManager.redo();
|
||||
}
|
||||
}
|
||||
|
||||
protected void colorize(final ColoringScanner scanner) {
|
||||
final ArrayList<StyleRange> styles = new ArrayList<StyleRange>();
|
||||
if (this.coloring) {
|
||||
IToken token;
|
||||
if (this.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
scanner.parse(this.getText().replaceAll("\"", " ").replaceAll("'", " ")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||
|
||||
do {
|
||||
token = scanner.nextToken();
|
||||
if (!token.isEOF()) {
|
||||
if (token instanceof CToken) {
|
||||
CToken ctoken = (CToken) token;
|
||||
StyleRange styleRange;
|
||||
styleRange = new StyleRange();
|
||||
styleRange.start = scanner.getTokenOffset();
|
||||
styleRange.length = scanner.getTokenLength();
|
||||
if (ctoken.getType() == null) {
|
||||
styleRange.fontStyle = colorManager.getStyleFor(ctoken.getColor());
|
||||
styleRange.foreground = colorManager.getColor(ctoken.getColor());
|
||||
} else {
|
||||
styleRange.fontStyle = colorManager.getStyleForType(ctoken.getColor());
|
||||
styleRange.foreground = colorManager.getColorForType(ctoken.getColor());
|
||||
}
|
||||
styles.add(styleRange);
|
||||
}
|
||||
}
|
||||
} while (!token.isEOF());
|
||||
setStyles(styles);
|
||||
} else {
|
||||
StyleRange styleRange = new StyleRange();
|
||||
styles.add(styleRange);
|
||||
styleRange.start = 0;
|
||||
styleRange.length = this.getText().getBytes().length;
|
||||
styleRange.foreground = null;
|
||||
setStyles(styles);
|
||||
}
|
||||
}
|
||||
|
||||
public void setStyles(final ArrayList<StyleRange> styles) {
|
||||
if (ColorStyledText.this.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
int countChars = getCharCount();
|
||||
|
||||
for (int i = 0; i < styles.size(); i++) {
|
||||
StyleRange styleRange = styles.get(i);
|
||||
// System.out.println("styleRange.start=" + styleRange.start);
|
||||
// System.out.println("styleRange.length=" + styleRange.length);
|
||||
if (!(0 <= styleRange.start && styleRange.start + styleRange.length <= countChars)) {
|
||||
continue;
|
||||
}
|
||||
setStyleRange(styleRange);
|
||||
}
|
||||
}
|
||||
|
||||
ExtendedModifyListener modifyListener = new ExtendedModifyListener() {
|
||||
|
||||
public void modifyText(ExtendedModifyEvent event) {
|
||||
if (ColorStyledText.this.getCharCount() > MAXIMUM_CHARACTERS_BEFORE_USE_TIMER) {
|
||||
colorizeLimiter.resetTimer();
|
||||
colorizeLimiter.startIfExecutable(true, null);
|
||||
} else {
|
||||
getDisplay().asyncExec(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
colorize(scanner);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public ColorManager getColorManager() {
|
||||
return this.colorManager;
|
||||
}
|
||||
|
||||
public String getLanguageMode() {
|
||||
return this.languageMode;
|
||||
}
|
||||
|
||||
public ColoringScanner getScanner() {
|
||||
return this.scanner;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.swt.custom.StyledText#setEditable(boolean)
|
||||
*/
|
||||
@Override
|
||||
public void setEditable(boolean editable) {
|
||||
super.setEditable(editable);
|
||||
if (pasteItem != null) {
|
||||
pasteItem.setEnabled(editable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for coloring.
|
||||
*
|
||||
* @return the coloring
|
||||
*/
|
||||
public boolean isColoring() {
|
||||
return this.coloring;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the coloring.
|
||||
*
|
||||
* @param coloring the coloring to set
|
||||
*/
|
||||
public void setColoring(boolean coloring) {
|
||||
boolean wasDifferent = this.coloring != coloring;
|
||||
this.coloring = coloring;
|
||||
if (!coloring) {
|
||||
removeExtendedModifyListener(modifyListener);
|
||||
} else if (wasDifferent) {
|
||||
colorizeLimiter.resetTimer();
|
||||
colorizeLimiter.startIfExecutable(true, null);
|
||||
addExtendedModifyListener(modifyListener);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.swt.widgets.Widget#dispose()
|
||||
*/
|
||||
@Override
|
||||
public void dispose() {
|
||||
super.dispose();
|
||||
colorManager.dispose();
|
||||
}
|
||||
|
||||
private final ExecutionLimiter colorizeLimiter = new ExecutionLimiter(1000, true) {
|
||||
|
||||
@Override
|
||||
public void execute(final boolean isFinalExecution, Object data) {
|
||||
if (!isDisposed()) {
|
||||
getDisplay().asyncExec(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
colorize(scanner);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.colorstyledtext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.text.rules.IToken;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.custom.ExtendedModifyEvent;
|
||||
import org.eclipse.swt.custom.ExtendedModifyListener;
|
||||
import org.eclipse.swt.custom.StyleRange;
|
||||
import org.eclipse.swt.custom.StyledText;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.swt.widgets.MenuItem;
|
||||
import org.eclipse.ui.ISharedImages;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.talend.commons.runtime.xml.XmlUtil;
|
||||
import org.talend.commons.ui.runtime.i18n.Messages;
|
||||
import org.talend.commons.ui.runtime.image.ImageProvider;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.jedit.Mode;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.jedit.Modes;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.rules.CToken;
|
||||
import org.talend.commons.ui.swt.colorstyledtext.scanner.ColoringScanner;
|
||||
import org.talend.commons.utils.threading.ExecutionLimiter;
|
||||
|
||||
/**
|
||||
* This component is an adaptation of a Color Editor for a StyledText.
|
||||
*
|
||||
* The original editor can be found on http://www.gstaff.org/colorEditor/ <br/>
|
||||
*
|
||||
* <b>How to use it, example :</b> <br/>
|
||||
* ColorStyledText text = new ColorStyledText(parent, SWT.H_SCROLL | SWT.V_SCROLL,
|
||||
* CorePlugin.getDefault().getPreferenceStore(), ECodeLanguage.PERL.getName());</i> <br/>
|
||||
* <br/>
|
||||
*
|
||||
* $Id: ColorStyledText.java 7183 2007-11-23 11:03:36Z amaumont $
|
||||
*
|
||||
*/
|
||||
public class ColorStyledText extends StyledText {
|
||||
|
||||
private final static int MAXIMUM_CHARACTERS_BEFORE_USE_TIMER = 1000;
|
||||
|
||||
private final ColorManager colorManager;
|
||||
|
||||
private final ColoringScanner scanner;
|
||||
|
||||
private final String languageMode;
|
||||
|
||||
private final MenuItem pasteItem;
|
||||
|
||||
private boolean coloring = true;
|
||||
|
||||
private UndoRedoManager undoRedoManager;
|
||||
|
||||
public ColorStyledText(Composite parent, int style, IPreferenceStore store, String languageMode) {
|
||||
super(parent, style);
|
||||
this.languageMode = languageMode;
|
||||
this.colorManager = new ColorManager(store);
|
||||
|
||||
/*
|
||||
* set the Shortcuts of the undo/redo
|
||||
*/
|
||||
this.setKeyBinding('Z' | SWT.CTRL, ActionCode.UNDO);
|
||||
this.setKeyBinding('Y' | SWT.CTRL, ActionCode.REDO);
|
||||
UndoRedoManager undoManager = new UndoRedoManager(50);
|
||||
undoManager.connect(this);
|
||||
this.setUndoManager(undoManager);
|
||||
|
||||
ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
|
||||
Menu popupMenu = new Menu(this);
|
||||
|
||||
MenuItem redoItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
redoItem.setText(Messages.getString("ColorStyledText.RedoItem.Text")); //$NON-NLS-1$
|
||||
redoItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
redo();
|
||||
}
|
||||
});
|
||||
|
||||
MenuItem undoItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
undoItem.setText(Messages.getString("ColorStyledText.UndoItem.Text")); //$NON-NLS-1$
|
||||
undoItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
undo();
|
||||
}
|
||||
});
|
||||
|
||||
Image image = ImageProvider.getImage(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
|
||||
MenuItem copyItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
copyItem.setText(Messages.getString("ColorStyledText.CopyItem.Text")); //$NON-NLS-1$
|
||||
copyItem.setImage(image);
|
||||
copyItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
copy();
|
||||
}
|
||||
});
|
||||
|
||||
image = ImageProvider.getImage(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
|
||||
pasteItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
pasteItem.setText(Messages.getString("ColorStyledText.PasteItem.Text")); //$NON-NLS-1$
|
||||
pasteItem.setData(this);
|
||||
pasteItem.setImage(image);
|
||||
pasteItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
paste();
|
||||
}
|
||||
});
|
||||
pasteItem.setEnabled(getEditable());
|
||||
|
||||
this.setMenu(popupMenu);
|
||||
MenuItem selectAllItem = new MenuItem(popupMenu, SWT.PUSH);
|
||||
selectAllItem.setText(Messages.getString("ColorStyledText.SelectAllItem.Text")); //$NON-NLS-1$
|
||||
selectAllItem.addListener(SWT.Selection, new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
selectAll();
|
||||
}
|
||||
});
|
||||
this.setMenu(popupMenu);
|
||||
|
||||
Listener selectAllListener = new Listener() {
|
||||
|
||||
public void handleEvent(Event event) {
|
||||
if (event.character == '\u0001') { // CTRL + A
|
||||
selectAll();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
addListener(SWT.KeyDown, selectAllListener);
|
||||
|
||||
Mode mode = Modes.getMode(languageMode + XmlUtil.FILE_XML_SUFFIX);
|
||||
scanner = new ColoringScanner(mode, colorManager);
|
||||
|
||||
addExtendedModifyListener(modifyListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC qli Comment method "invokeAction".
|
||||
*
|
||||
* @param action
|
||||
*
|
||||
* */
|
||||
public void invokeAction(int action) {
|
||||
super.invokeAction(action);
|
||||
|
||||
switch (action) {
|
||||
case ActionCode.UNDO:
|
||||
undo(); // ctrl+Z
|
||||
break;
|
||||
case ActionCode.REDO:
|
||||
redo(); // ctrl+Y
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for undoRedoManager.
|
||||
*
|
||||
* @return the undoRedoManager
|
||||
*/
|
||||
public UndoRedoManager getUndoManager() {
|
||||
return this.undoRedoManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the undoRedoManager.
|
||||
*
|
||||
* @param undoRedoManager the undoRedoManager to set
|
||||
*/
|
||||
public void setUndoManager(UndoRedoManager undoRedoManager) {
|
||||
this.undoRedoManager = undoRedoManager;
|
||||
}
|
||||
|
||||
public static class ActionCode {
|
||||
|
||||
public static final int UNDO = Integer.MAX_VALUE;
|
||||
|
||||
public static final int REDO = UNDO - 1;
|
||||
|
||||
}
|
||||
|
||||
private void undo() {
|
||||
if (undoRedoManager != null) {
|
||||
undoRedoManager.undo();
|
||||
}
|
||||
}
|
||||
|
||||
private void redo() {
|
||||
if (undoRedoManager != null) {
|
||||
undoRedoManager.redo();
|
||||
}
|
||||
}
|
||||
|
||||
protected void colorize(final ColoringScanner scanner) {
|
||||
final ArrayList<StyleRange> styles = new ArrayList<StyleRange>();
|
||||
if (this.coloring) {
|
||||
IToken token;
|
||||
if (this.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
scanner.parse(this.getText().replaceAll("\"", " ").replaceAll("'", " ")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||
|
||||
do {
|
||||
token = scanner.nextToken();
|
||||
if (!token.isEOF()) {
|
||||
if (token instanceof CToken) {
|
||||
CToken ctoken = (CToken) token;
|
||||
StyleRange styleRange;
|
||||
styleRange = new StyleRange();
|
||||
styleRange.start = scanner.getTokenOffset();
|
||||
styleRange.length = scanner.getTokenLength();
|
||||
if (ctoken.getType() == null) {
|
||||
styleRange.fontStyle = colorManager.getStyleFor(ctoken.getColor());
|
||||
styleRange.foreground = colorManager.getColor(ctoken.getColor());
|
||||
} else {
|
||||
styleRange.fontStyle = colorManager.getStyleForType(ctoken.getColor());
|
||||
styleRange.foreground = colorManager.getColorForType(ctoken.getColor());
|
||||
}
|
||||
styles.add(styleRange);
|
||||
}
|
||||
}
|
||||
} while (!token.isEOF());
|
||||
setStyles(styles);
|
||||
} else {
|
||||
StyleRange styleRange = new StyleRange();
|
||||
styles.add(styleRange);
|
||||
styleRange.start = 0;
|
||||
styleRange.length = this.getText().getBytes().length;
|
||||
styleRange.foreground = null;
|
||||
setStyles(styles);
|
||||
}
|
||||
}
|
||||
|
||||
public void setStyles(final ArrayList<StyleRange> styles) {
|
||||
if (ColorStyledText.this.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
int countChars = getCharCount();
|
||||
|
||||
for (int i = 0; i < styles.size(); i++) {
|
||||
StyleRange styleRange = styles.get(i);
|
||||
// System.out.println("styleRange.start=" + styleRange.start);
|
||||
// System.out.println("styleRange.length=" + styleRange.length);
|
||||
if (!(0 <= styleRange.start && styleRange.start + styleRange.length <= countChars)) {
|
||||
continue;
|
||||
}
|
||||
setStyleRange(styleRange);
|
||||
}
|
||||
}
|
||||
|
||||
ExtendedModifyListener modifyListener = new ExtendedModifyListener() {
|
||||
|
||||
public void modifyText(ExtendedModifyEvent event) {
|
||||
if (ColorStyledText.this.getCharCount() > MAXIMUM_CHARACTERS_BEFORE_USE_TIMER) {
|
||||
colorizeLimiter.resetTimer();
|
||||
colorizeLimiter.startIfExecutable(true, null);
|
||||
} else {
|
||||
getDisplay().asyncExec(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
colorize(scanner);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public ColorManager getColorManager() {
|
||||
return this.colorManager;
|
||||
}
|
||||
|
||||
public String getLanguageMode() {
|
||||
return this.languageMode;
|
||||
}
|
||||
|
||||
public ColoringScanner getScanner() {
|
||||
return this.scanner;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.swt.custom.StyledText#setEditable(boolean)
|
||||
*/
|
||||
@Override
|
||||
public void setEditable(boolean editable) {
|
||||
super.setEditable(editable);
|
||||
if (pasteItem != null) {
|
||||
pasteItem.setEnabled(editable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for coloring.
|
||||
*
|
||||
* @return the coloring
|
||||
*/
|
||||
public boolean isColoring() {
|
||||
return this.coloring;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the coloring.
|
||||
*
|
||||
* @param coloring the coloring to set
|
||||
*/
|
||||
public void setColoring(boolean coloring) {
|
||||
boolean wasDifferent = this.coloring != coloring;
|
||||
this.coloring = coloring;
|
||||
if (!coloring) {
|
||||
removeExtendedModifyListener(modifyListener);
|
||||
} else if (wasDifferent) {
|
||||
colorizeLimiter.resetTimer();
|
||||
colorizeLimiter.startIfExecutable(true, null);
|
||||
addExtendedModifyListener(modifyListener);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.swt.widgets.Widget#dispose()
|
||||
*/
|
||||
@Override
|
||||
public void dispose() {
|
||||
super.dispose();
|
||||
colorManager.dispose();
|
||||
}
|
||||
|
||||
private final ExecutionLimiter colorizeLimiter = new ExecutionLimiter(1000, true) {
|
||||
|
||||
@Override
|
||||
public void execute(final boolean isFinalExecution, Object data) {
|
||||
if (!isDisposed()) {
|
||||
getDisplay().asyncExec(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
colorize(scanner);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.dialogs;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.talend.commons.ui.utils.image.ColorUtils;
|
||||
@@ -31,7 +29,5 @@ public interface IConfigModuleDialog {
|
||||
public String getMavenURI();
|
||||
|
||||
public int open();
|
||||
|
||||
public Map<String, String> getModulesMVNUrls();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.dialogs;
|
||||
|
||||
import org.eclipse.jface.wizard.IWizard;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
|
||||
|
||||
/**
|
||||
* DOC cmeng class global comment. Detailled comment
|
||||
*/
|
||||
public interface ITalendWizard extends IWizard {
|
||||
|
||||
Color getBackgroundColor();
|
||||
|
||||
Color getForegroundColor();
|
||||
|
||||
int getHorizonPadding();
|
||||
|
||||
int getVerticalPadding();
|
||||
|
||||
int getVerticalMargin();
|
||||
|
||||
int getHorizonMargin();
|
||||
|
||||
boolean hideDefaultMessageArea();
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.dialogs;
|
||||
|
||||
import org.eclipse.jface.dialogs.IDialogPage;
|
||||
import org.eclipse.jface.wizard.IWizardContainer2;
|
||||
|
||||
|
||||
/**
|
||||
* DOC cmeng class global comment. Detailled comment
|
||||
*/
|
||||
public interface ITalendWizardContainer extends IWizardContainer2 {
|
||||
|
||||
void showMoreInfoLink(IDialogPage page, String name, String link);
|
||||
|
||||
}
|
||||
@@ -1,968 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.dialogs;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.jface.dialogs.IDialogPage;
|
||||
import org.eclipse.jface.dialogs.IMessageProvider;
|
||||
import org.eclipse.jface.resource.JFaceResources;
|
||||
import org.eclipse.jface.window.ToolTip;
|
||||
import org.eclipse.jface.wizard.IWizard;
|
||||
import org.eclipse.jface.wizard.ProgressMonitorPart;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.custom.StyledText;
|
||||
import org.eclipse.swt.events.DisposeEvent;
|
||||
import org.eclipse.swt.events.DisposeListener;
|
||||
import org.eclipse.swt.events.PaintEvent;
|
||||
import org.eclipse.swt.events.PaintListener;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Font;
|
||||
import org.eclipse.swt.graphics.FontData;
|
||||
import org.eclipse.swt.graphics.GC;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.graphics.ImageData;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.graphics.Rectangle;
|
||||
import org.eclipse.swt.layout.FormAttachment;
|
||||
import org.eclipse.swt.layout.FormData;
|
||||
import org.eclipse.swt.layout.FormLayout;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.program.Program;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Canvas;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.forms.events.HyperlinkAdapter;
|
||||
import org.eclipse.ui.forms.events.HyperlinkEvent;
|
||||
import org.eclipse.ui.forms.widgets.Hyperlink;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.ui.runtime.ColorConstants;
|
||||
|
||||
/**
|
||||
* DOC cmeng class global comment. Detailled comment
|
||||
*/
|
||||
public class TalendWizardDialog extends WizardDialog implements ITalendWizardContainer {
|
||||
|
||||
private boolean useNewStyle = false;
|
||||
|
||||
private Color backgroundColor;
|
||||
|
||||
private Color foregroundColor;
|
||||
|
||||
private static Font titleBigFont;
|
||||
|
||||
private Canvas titleLabelWithAnimation;
|
||||
|
||||
private Canvas messagePanel;
|
||||
|
||||
private Color msgPanelColor = ColorConstants.INFO_COLOR;
|
||||
|
||||
private Composite topPanel;
|
||||
|
||||
private Label errIcon;
|
||||
|
||||
private StyledText errMsgTxt;
|
||||
|
||||
private Hyperlink moreInfoLink;
|
||||
|
||||
private String moreInfoUrl;
|
||||
|
||||
private volatile Thread titleAnimationSchedulerThread;
|
||||
|
||||
private volatile boolean threadShowingMsg = false;
|
||||
|
||||
private Image bigTitleImg;
|
||||
|
||||
private Image smallTitleImg;
|
||||
|
||||
private String title;
|
||||
|
||||
private int messageTopY;
|
||||
|
||||
private volatile double percentage = 1.0;
|
||||
|
||||
private boolean hideMessageArea = false;
|
||||
|
||||
public TalendWizardDialog(Shell parentShell, IWizard newWizard) {
|
||||
super(parentShell, newWizard);
|
||||
useNewStyle = true;
|
||||
if (newWizard instanceof ITalendWizard) {
|
||||
ITalendWizard talendWizard = (ITalendWizard) newWizard;
|
||||
backgroundColor = talendWizard.getBackgroundColor();
|
||||
foregroundColor = talendWizard.getForegroundColor();
|
||||
hideMessageArea = talendWizard.hideDefaultMessageArea();
|
||||
}
|
||||
// this.setTitleAreaColor(new RGB(205, 227, 242));
|
||||
}
|
||||
|
||||
private Thread createTitleAnimationSchedulerThread(boolean showMessage) {
|
||||
return new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
titleAnimationSchedulerThread(showMessage);
|
||||
}
|
||||
}, "title anmimation, show: " + showMessage);
|
||||
}
|
||||
|
||||
private void titleAnimationSchedulerThread(boolean showMessage) {
|
||||
int totalTime = 500;
|
||||
int split = 30;
|
||||
int sleepTime = totalTime / split;
|
||||
double percentPerFrame = 1.0 / split;
|
||||
for (int i = 1; i < split; i++) {
|
||||
double curX = 1 - percentPerFrame * i;
|
||||
double donePercent = Math.sqrt(1 - curX * curX);
|
||||
onTitleAreaRefresh(donePercent, showMessage);
|
||||
if (Thread.currentThread().isInterrupted()) {
|
||||
break;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(sleepTime);
|
||||
} catch (InterruptedException e) {
|
||||
onTitleAnimationInterupted(showMessage);
|
||||
return;
|
||||
}
|
||||
}
|
||||
onTitleAreaRefresh(1.0, showMessage);
|
||||
}
|
||||
|
||||
private void onTitleAnimationInterupted(boolean showMessage) {
|
||||
this.percentage = 1.0;
|
||||
}
|
||||
|
||||
private boolean isHideMessageArea() {
|
||||
return hideMessageArea;
|
||||
}
|
||||
|
||||
private void onTitleAreaRefresh(double donePercent, boolean showMessage) {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
topPanel.getDisplay().syncExec(() -> {
|
||||
onTitleAreaRefreshFrame(donePercent, showMessage);
|
||||
});
|
||||
}
|
||||
|
||||
private void onTitleAreaRefreshFrame(double donePercent, boolean showMessage) {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
this.percentage = donePercent;
|
||||
sortPanelOrder();
|
||||
if (!showMessage) {
|
||||
messagePanel.setVisible(false);
|
||||
} else {
|
||||
messagePanel.setVisible(true);
|
||||
// errIcon.setVisible(true);
|
||||
}
|
||||
Point size = topPanel.getSize();
|
||||
int totalY = size.y - messageTopY;
|
||||
int y = 0;
|
||||
if (showMessage) {
|
||||
y = messageTopY + (int) ((1.0 - donePercent) * totalY);
|
||||
} else {
|
||||
y = messageTopY + (int) (donePercent * totalY);
|
||||
}
|
||||
|
||||
FormData fd = (FormData) messagePanel.getLayoutData();
|
||||
fd.top = new FormAttachment(0, y);
|
||||
this.titleLabelWithAnimation.redraw();
|
||||
topPanel.layout();
|
||||
}
|
||||
|
||||
public void setNewErrorStyle(boolean newErrStyle) {
|
||||
this.useNewStyle = newErrStyle;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createContents(Composite parent) {
|
||||
if (useNewStyle()) {
|
||||
parent.setBackground(backgroundColor);
|
||||
parent.setForeground(foregroundColor);
|
||||
}
|
||||
Control panel = super.createContents(parent);
|
||||
try {
|
||||
if (useNewStyle()) {
|
||||
sortPanelOrder();
|
||||
workArea.setBackground(backgroundColor);
|
||||
workArea.setForeground(foregroundColor);
|
||||
pageContainer.setBackground(backgroundColor);
|
||||
pageContainer.setForeground(foregroundColor);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
return panel;
|
||||
}
|
||||
|
||||
private boolean useNewStyle() {
|
||||
return this.useNewStyle;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createDialogArea(Composite parent) {
|
||||
Composite panel = (Composite) super.createDialogArea(parent);
|
||||
if (useNewStyle()) {
|
||||
this.titleBarSeparator.dispose();
|
||||
this.separator.dispose();
|
||||
}
|
||||
return panel;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ProgressMonitorPart createProgressMonitorPart(Composite composite, GridLayout pmlayout) {
|
||||
if (useNewStyle()) {
|
||||
composite.setBackground(backgroundColor);
|
||||
composite.setForeground(foregroundColor);
|
||||
// progMonitor.setBackground(backgroundColor);
|
||||
// progMonitor.setForeground(foregroundColor);
|
||||
}
|
||||
ProgressMonitorPart progMonitor = super.createProgressMonitorPart(composite, pmlayout);
|
||||
return progMonitor;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createButtonBar(Composite parent) {
|
||||
if (!useNewStyle()) {
|
||||
return super.createButtonBar(parent);
|
||||
}
|
||||
Composite composite = new Composite(parent, SWT.NONE);
|
||||
composite.setBackground(backgroundColor);
|
||||
composite.setForeground(foregroundColor);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.marginWidth = 0;
|
||||
layout.marginHeight = 0;
|
||||
layout.horizontalSpacing = 0;
|
||||
composite.setLayout(layout);
|
||||
composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
|
||||
composite.setFont(parent.getFont());
|
||||
|
||||
Control helpControl = null;
|
||||
// create help control if needed
|
||||
if (isHelpAvailable()) {
|
||||
helpControl = createHelpControl(composite);
|
||||
((GridData) helpControl.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(
|
||||
IDialogConstants.HORIZONTAL_MARGIN);
|
||||
}
|
||||
createButtonsForButtonBar(composite);
|
||||
|
||||
Button helpButton = getButton(IDialogConstants.HELP_ID);
|
||||
Button finishButton = getButton(IDialogConstants.FINISH_ID);
|
||||
Button cancelButton = getButton(IDialogConstants.CANCEL_ID);
|
||||
Button backButton = getButton(IDialogConstants.BACK_ID);
|
||||
Button nextButton = getButton(IDialogConstants.NEXT_ID);
|
||||
|
||||
FormLayout formLayout = new FormLayout();
|
||||
formLayout.marginWidth = getHorizonMargin();
|
||||
formLayout.marginHeight = getVerticalPadding();
|
||||
composite.setLayout(formLayout);
|
||||
final int HORIZON_ALIGN = getHorizonPadding();
|
||||
|
||||
cancelButton.setBackground(backgroundColor);
|
||||
cancelButton.setForeground(foregroundColor);
|
||||
FormData cancelData = new FormData();
|
||||
cancelData.left = new FormAttachment(0);
|
||||
cancelData.top = new FormAttachment(composite, 0, SWT.CENTER);
|
||||
cancelData.width = getButtonWidth(cancelButton);
|
||||
cancelButton.setLayoutData(cancelData);
|
||||
|
||||
Control tmpCtrl = cancelButton;
|
||||
|
||||
if (helpControl != null) {
|
||||
helpControl.setBackground(backgroundColor);
|
||||
helpControl.setForeground(foregroundColor);
|
||||
FormData formData = new FormData();
|
||||
formData.left = new FormAttachment(tmpCtrl, HORIZON_ALIGN, SWT.RIGHT);
|
||||
formData.top = new FormAttachment(tmpCtrl, 0, SWT.CENTER);
|
||||
helpControl.setLayoutData(formData);
|
||||
tmpCtrl = helpControl;
|
||||
}
|
||||
if (helpButton != null) {
|
||||
helpButton.setBackground(backgroundColor);
|
||||
helpButton.setForeground(foregroundColor);
|
||||
FormData formData = new FormData();
|
||||
formData.left = new FormAttachment(tmpCtrl, HORIZON_ALIGN, SWT.RIGHT);
|
||||
formData.top = new FormAttachment(tmpCtrl, 0, SWT.CENTER);
|
||||
formData.width = getButtonWidth(helpButton);
|
||||
helpButton.setLayoutData(formData);
|
||||
tmpCtrl = helpButton;
|
||||
}
|
||||
finishButton.setBackground(backgroundColor);
|
||||
finishButton.setForeground(foregroundColor);
|
||||
FormData finishData = new FormData();
|
||||
finishData.right = new FormAttachment(100);
|
||||
finishData.top = new FormAttachment(composite, 0, SWT.CENTER);
|
||||
finishData.width = getButtonWidth(finishButton);
|
||||
finishButton.setLayoutData(finishData);
|
||||
tmpCtrl = finishButton;
|
||||
|
||||
if (nextButton != null) {
|
||||
nextButton.setBackground(backgroundColor);
|
||||
nextButton.setForeground(foregroundColor);
|
||||
FormData nextData = new FormData();
|
||||
Composite nextParentCtrl = nextButton.getParent();
|
||||
nextParentCtrl.setBackground(backgroundColor);
|
||||
nextParentCtrl.setForeground(foregroundColor);
|
||||
nextData.right = new FormAttachment(tmpCtrl, -HORIZON_ALIGN, SWT.LEFT);
|
||||
nextData.top = new FormAttachment(tmpCtrl, 0, SWT.CENTER);
|
||||
nextParentCtrl.setLayoutData(nextData);
|
||||
}
|
||||
if (backButton != null) {
|
||||
backButton.setBackground(backgroundColor);
|
||||
backButton.setForeground(foregroundColor);
|
||||
}
|
||||
|
||||
return composite;
|
||||
}
|
||||
|
||||
private int getButtonWidth(Button btn) {
|
||||
int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
|
||||
Point minSize = btn.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
|
||||
return Math.max(widthHint, minSize.x);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createTitleArea(Composite parent) {
|
||||
Control titleCtrl = null;
|
||||
if (useNewStyle()) {
|
||||
final int horizonPadding = getHorizonPadding();
|
||||
final int horizonMargin = getHorizonMargin();
|
||||
final int verticalPadding = getVerticalPadding();
|
||||
final int msgMargin = getMargin();
|
||||
Control oldTitleArea = super.createTitleArea(parent);
|
||||
topPanel = new Composite(parent, SWT.NONE);
|
||||
titleCtrl = topPanel;
|
||||
// topPanel.setBackground(ColorConstants.RED_COLOR);
|
||||
topPanel.setBackground(backgroundColor);
|
||||
topPanel.setForeground(foregroundColor);
|
||||
FormData topPanelFd = new FormData();
|
||||
topPanelFd.top = new FormAttachment(0);
|
||||
topPanelFd.left = new FormAttachment(0);
|
||||
topPanelFd.right = new FormAttachment(100);
|
||||
// topPanelFd.bottom = new FormAttachment(oldTitleArea, 0, SWT.BOTTOM);
|
||||
Label tmpLabel = new Label(parent, SWT.NONE);
|
||||
// tmpLabel.setFont(getTitleBigFont());
|
||||
tmpLabel.setFont(JFaceResources.getBannerFont());
|
||||
tmpLabel.setText("Test");
|
||||
tmpLabel.pack();
|
||||
Point size = tmpLabel.getSize();
|
||||
tmpLabel.setFont(null);
|
||||
tmpLabel.setText("Test");
|
||||
tmpLabel.pack();
|
||||
Point errSize = tmpLabel.getSize();
|
||||
tmpLabel.dispose();
|
||||
if (isHideMessageArea()) {
|
||||
topPanelFd.height = 0;
|
||||
} else {
|
||||
topPanelFd.height = verticalPadding + size.y + verticalPadding + errSize.y + msgMargin * 2;
|
||||
}
|
||||
topPanel.setLayoutData(topPanelFd);
|
||||
topPanel.setLayout(new FormLayout());
|
||||
// sortPanelOrder();
|
||||
|
||||
titleLabelWithAnimation = new Canvas(topPanel, SWT.DOUBLE_BUFFERED);
|
||||
titleLabelWithAnimation.addPaintListener(new PaintListener() {
|
||||
|
||||
@Override
|
||||
public void paintControl(PaintEvent e) {
|
||||
drawTitle(e);
|
||||
}
|
||||
});
|
||||
titleLabelWithAnimation.setBackground(backgroundColor);
|
||||
titleLabelWithAnimation.setForeground(foregroundColor);
|
||||
titleLabelWithAnimation.addDisposeListener(new DisposeListener() {
|
||||
|
||||
@Override
|
||||
public void widgetDisposed(DisposeEvent e) {
|
||||
if (bigTitleImg != null && !bigTitleImg.isDisposed()) {
|
||||
bigTitleImg.dispose();
|
||||
}
|
||||
if (smallTitleImg != null && !smallTitleImg.isDisposed()) {
|
||||
smallTitleImg.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
FormData fd = new FormData();
|
||||
fd.top = new FormAttachment(0, verticalPadding);
|
||||
fd.left = new FormAttachment(0, horizonMargin);
|
||||
fd.right = new FormAttachment(100);
|
||||
fd.bottom = new FormAttachment(100);
|
||||
titleLabelWithAnimation.setLayoutData(fd);
|
||||
|
||||
messagePanel = new Canvas(topPanel, SWT.DOUBLE_BUFFERED);
|
||||
messagePanel.addPaintListener(new PaintListener() {
|
||||
|
||||
@Override
|
||||
public void paintControl(PaintEvent e) {
|
||||
drawMessageBackground(e, messagePanel);
|
||||
// int len = 160;
|
||||
// int a = 10;
|
||||
// int a_Len = a + (int) (percentage * (size.x - a));
|
||||
// int b_Len = a_Len + len;
|
||||
// if (a_Len < size.x || b_Len < size.x) {
|
||||
// if (size.x <= a_Len) {
|
||||
// a_Len = size.x;
|
||||
// }
|
||||
// if (size.x <= b_Len) {
|
||||
// b_Len = size.x;
|
||||
// }
|
||||
// e.gc.setBackground(ColorConstants.WHITE_COLOR);
|
||||
// e.gc.fillPolygon(new int[] { a_Len, 0, size.x, 0, size.x, size.y, b_Len, size.y });
|
||||
// }
|
||||
}
|
||||
});
|
||||
messagePanel.setBackground(backgroundColor);
|
||||
messagePanel.setForeground(foregroundColor);
|
||||
fd = new FormData();
|
||||
tmpLabel = new Label(topPanel, SWT.NONE);
|
||||
tmpLabel.setFont(JFaceResources.getBannerFont());
|
||||
tmpLabel.setText("Test");
|
||||
tmpLabel.pack();
|
||||
size = tmpLabel.getSize();
|
||||
tmpLabel.dispose();
|
||||
messageTopY = verticalPadding + size.y + verticalPadding;
|
||||
fd.top = new FormAttachment(0, messageTopY);
|
||||
// fd.left = new FormAttachment(0, convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING));
|
||||
// fd.right = new FormAttachment(100, -convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING));
|
||||
fd.left = new FormAttachment(0, horizonMargin);
|
||||
fd.right = new FormAttachment(100, -horizonMargin);
|
||||
fd.bottom = new FormAttachment(100);
|
||||
messagePanel.setLayoutData(fd);
|
||||
messagePanel.setLayout(new FormLayout());
|
||||
|
||||
errIcon = new Label(messagePanel, SWT.NONE);
|
||||
errIcon.setBackground(msgPanelColor);
|
||||
errIcon.setForeground(foregroundColor);
|
||||
fd = new FormData();
|
||||
fd.top = new FormAttachment(0, msgMargin);
|
||||
fd.left = new FormAttachment(0, msgMargin);
|
||||
errIcon.setLayoutData(fd);
|
||||
|
||||
moreInfoLink = new Hyperlink(messagePanel, SWT.NONE);
|
||||
moreInfoLink.setText("");
|
||||
moreInfoLink.setBackground(msgPanelColor);
|
||||
moreInfoLink.setUnderlined(true);
|
||||
moreInfoLink.addHyperlinkListener(new HyperlinkAdapter() {
|
||||
|
||||
@Override
|
||||
public void linkActivated(HyperlinkEvent e) {
|
||||
onMoreInfoLinkClicked(e);
|
||||
}
|
||||
});
|
||||
|
||||
errMsgTxt = new StyledText(messagePanel, SWT.READ_ONLY | SWT.WRAP);
|
||||
errMsgTxt.setEditable(false);
|
||||
errMsgTxt.setBackground(msgPanelColor);
|
||||
errMsgTxt.setForeground(org.eclipse.draw2d.ColorConstants.black);
|
||||
|
||||
fd = new FormData();
|
||||
fd.top = new FormAttachment(errMsgTxt, 0, SWT.CENTER);
|
||||
fd.right = new FormAttachment(100, -msgMargin);
|
||||
moreInfoLink.setLayoutData(fd);
|
||||
|
||||
fd = new FormData();
|
||||
fd.top = new FormAttachment(errIcon, 0, SWT.TOP);
|
||||
fd.left = new FormAttachment(errIcon, horizonPadding, SWT.RIGHT);
|
||||
fd.right = new FormAttachment(moreInfoLink, -horizonPadding, SWT.LEFT);
|
||||
fd.bottom = new FormAttachment(100, -msgMargin);
|
||||
errMsgTxt.setLayoutData(fd);
|
||||
|
||||
parent.setBackground(backgroundColor);
|
||||
// parent.setBackground(ColorConstants.YELLOW_COLOR);
|
||||
titleImageLabel.setBackground(backgroundColor);
|
||||
titleLabel.setBackground(backgroundColor);
|
||||
titleLabel.moveBelow(null);
|
||||
messageImageLabel.setBackground(backgroundColor);
|
||||
leftFillerLabel.setBackground(backgroundColor);
|
||||
bottomFillerLabel.setBackground(backgroundColor);
|
||||
messageLabel.setBackground(backgroundColor);
|
||||
} else {
|
||||
titleCtrl = super.createTitleArea(parent);
|
||||
}
|
||||
return titleCtrl;
|
||||
}
|
||||
|
||||
private Composite createToolTipContent(Composite parent) {
|
||||
Composite result = new Composite(parent, SWT.NONE);
|
||||
final int msgMargin = getMargin();
|
||||
final int horizonPadding = getHorizonPadding();
|
||||
result.setBackground(null);
|
||||
result.setLayout(new FormLayout());
|
||||
Canvas msgPanel = new Canvas(result, SWT.DOUBLE_BUFFERED);
|
||||
FormData fd = new FormData();
|
||||
fd.top = new FormAttachment(0);
|
||||
fd.left = new FormAttachment(0);
|
||||
fd.width = messagePanel.getSize().x;
|
||||
fd.bottom = new FormAttachment(100);
|
||||
msgPanel.setLayoutData(fd);
|
||||
msgPanel.addPaintListener(new PaintListener() {
|
||||
|
||||
@Override
|
||||
public void paintControl(PaintEvent e) {
|
||||
drawMessageBackground(e, msgPanel);
|
||||
}
|
||||
});
|
||||
msgPanel.setBackground(messagePanel.getBackground());
|
||||
msgPanel.setForeground(messagePanel.getForeground());
|
||||
msgPanel.setLayout(new FormLayout());
|
||||
|
||||
Label errIconLabel = new Label(msgPanel, SWT.NONE);
|
||||
errIconLabel.setBackground(errIcon.getBackground());
|
||||
errIconLabel.setForeground(errIcon.getForeground());
|
||||
errIconLabel.setImage(errIcon.getImage());
|
||||
fd = new FormData();
|
||||
fd.top = new FormAttachment(0, msgMargin);
|
||||
fd.left = new FormAttachment(0, msgMargin);
|
||||
errIconLabel.setLayoutData(fd);
|
||||
|
||||
Hyperlink link = new Hyperlink(msgPanel, SWT.NONE);
|
||||
link.setText(moreInfoLink.getText());
|
||||
link.setBackground(moreInfoLink.getBackground());
|
||||
link.setUnderlined(moreInfoLink.isUnderlined());
|
||||
|
||||
StyledText msgTxt = new StyledText(msgPanel, SWT.READ_ONLY | SWT.WRAP);
|
||||
msgTxt.setBackground(errMsgTxt.getBackground());
|
||||
msgTxt.setForeground(errMsgTxt.getForeground());
|
||||
msgTxt.setText(errMsgTxt.getText());
|
||||
|
||||
fd = new FormData();
|
||||
fd.top = new FormAttachment(msgTxt, 0, SWT.CENTER);
|
||||
fd.right = new FormAttachment(100, -msgMargin);
|
||||
link.setLayoutData(fd);
|
||||
|
||||
fd = new FormData();
|
||||
fd.top = new FormAttachment(errIconLabel, 0, SWT.TOP);
|
||||
fd.left = new FormAttachment(errIconLabel, horizonPadding, SWT.RIGHT);
|
||||
fd.right = new FormAttachment(link, -horizonPadding, SWT.LEFT);
|
||||
msgTxt.setLayoutData(fd);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void onMoreInfoLinkClicked(HyperlinkEvent e) {
|
||||
Program.launch(moreInfoUrl);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void resetWorkAreaAttachments(Control top) {
|
||||
FormData childData = new FormData();
|
||||
childData.top = new FormAttachment(topPanel, 0, SWT.BOTTOM);
|
||||
childData.right = new FormAttachment(100, 0);
|
||||
childData.left = new FormAttachment(0, 0);
|
||||
childData.bottom = new FormAttachment(100, 0);
|
||||
workArea.setLayoutData(childData);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void layoutForNewMessage(boolean forceLayout) {
|
||||
if (!useNewStyle()) {
|
||||
super.layoutForNewMessage(forceLayout);
|
||||
return;
|
||||
}
|
||||
// if (forceLayout) {
|
||||
// return;
|
||||
// }
|
||||
if (hasMessage()) {
|
||||
messagePanel.setVisible(true);
|
||||
// Image image = messageImageLabel.getImage();
|
||||
// if (image == null) {
|
||||
// image = messageImage;
|
||||
// }
|
||||
// if (image != null && messageImageLabel.isVisible()) {
|
||||
//// this.errIcon.setVisible(true);
|
||||
// this.errIcon.setImage(image);
|
||||
// } else {
|
||||
// this.errIcon.setImage(null);
|
||||
//// this.errIcon.setVisible(false);
|
||||
// }
|
||||
updateMsgPanelColor(pageMessageType);
|
||||
// topPanel.layout();
|
||||
messagePanel.layout();
|
||||
Point messageSize = errMsgTxt.getSize();
|
||||
int messageLabelUnclippedHeight = errMsgTxt.computeSize(messageSize.x, SWT.DEFAULT, true).y;
|
||||
boolean messageLabelClipped = messageLabelUnclippedHeight > messageSize.y;
|
||||
if (errMsgTxt.getData() instanceof ToolTip) {
|
||||
ToolTip toolTip = (ToolTip) errMsgTxt.getData();
|
||||
toolTip.hide();
|
||||
toolTip.deactivate();
|
||||
errMsgTxt.setData(null);
|
||||
}
|
||||
if (messageLabelClipped) {
|
||||
ToolTip tooltip = new ToolTip(errMsgTxt, ToolTip.NO_RECREATE, false) {
|
||||
|
||||
@Override
|
||||
protected Composite createToolTipContentArea(Event event, Composite parent) {
|
||||
return createToolTipContent(parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Point getLocation(Point tipSize, Event event) {
|
||||
return errMsgTxt.getShell().toDisplay(messagePanel.getLocation());
|
||||
}
|
||||
};
|
||||
errMsgTxt.setData(tooltip);
|
||||
tooltip.setPopupDelay(0);
|
||||
tooltip.activate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setImageLabelVisible(boolean visible) {
|
||||
super.setImageLabelVisible(visible);
|
||||
if (useNewStyle()) {
|
||||
messagePanel.setVisible(visible);
|
||||
if (visible) {
|
||||
errIcon.setImage(messageImageLabel.getImage());
|
||||
} else {
|
||||
errIcon.setImage(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void sortPanelOrder() {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
if (this.topPanel == null) {
|
||||
return;
|
||||
}
|
||||
this.titleImageLabel.moveAbove(null);
|
||||
this.topPanel.moveBelow(this.titleImageLabel);
|
||||
messagePanel.moveAbove(titleLabelWithAnimation);
|
||||
if (!hasMessage()) {
|
||||
messagePanel.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setLayoutsForNormalMessage(int verticalSpacing, int horizontalSpacing) {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
super.setLayoutsForNormalMessage(verticalSpacing, horizontalSpacing);
|
||||
if (useNewStyle()) {
|
||||
if (this.topPanel != null) {
|
||||
onTitleAreaRefreshFrame(1.0, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Font getTitleBigFont() {
|
||||
if (titleBigFont != null) {
|
||||
return titleBigFont;
|
||||
}
|
||||
Font bannerFont = JFaceResources.getBannerFont();
|
||||
FontData[] fontData = bannerFont.getFontData();
|
||||
for (FontData fd : fontData) {
|
||||
fd.setHeight(fd.getHeight() + 7);
|
||||
}
|
||||
titleBigFont = new Font(Display.getDefault(), fontData);
|
||||
return titleBigFont;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateMessage(String newMessage) {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
boolean hadMsg = hasMessage();
|
||||
super.updateMessage(newMessage);
|
||||
this.errMsgTxt.setText(this.messageLabel.getText());
|
||||
boolean hasMsg = hasMessage();
|
||||
messagePanel.setVisible(hasMsg);
|
||||
if (hadMsg != hasMsg) {
|
||||
startAnimation();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setErrorMessage(String newErrorMessage) {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isNotBlank(newErrorMessage)) {
|
||||
this.pageMessageType = IMessageProvider.ERROR;
|
||||
updateMsgPanelColor(this.pageMessageType);
|
||||
}
|
||||
super.setErrorMessage(newErrorMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showMessage(String newMessage, Image newImage) {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
super.showMessage(newMessage, newImage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMessage(String newMessage, int newType) {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isNotBlank(newMessage)) {
|
||||
updateMsgPanelColor(newType);
|
||||
}
|
||||
super.setMessage(newMessage, newType);
|
||||
}
|
||||
|
||||
private void updateMsgPanelColor(int type) {
|
||||
Color foreColor = getMsgPanelForegroundColor(type);
|
||||
msgPanelColor = getMsgPanelBackgroundColor(type);
|
||||
errIcon.setBackground(msgPanelColor);
|
||||
errMsgTxt.setBackground(msgPanelColor);
|
||||
errMsgTxt.setForeground(foreColor);
|
||||
moreInfoLink.setBackground(msgPanelColor);
|
||||
// moreInfoLink.setForeground(getMoreInfoLinkForegroundColor(type));
|
||||
messagePanel.redraw();
|
||||
}
|
||||
|
||||
private Color getMsgPanelBackgroundColor(int type) {
|
||||
Color color = ColorConstants.INFO_COLOR;
|
||||
switch (type) {
|
||||
case IMessageProvider.NONE:
|
||||
case IMessageProvider.INFORMATION:
|
||||
color = ColorConstants.INFO_COLOR;
|
||||
break;
|
||||
case IMessageProvider.WARNING:
|
||||
color = ColorConstants.WARN_COLOR;
|
||||
break;
|
||||
case IMessageProvider.ERROR:
|
||||
color = ColorConstants.ERR_COLOR;
|
||||
break;
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
private Color getMsgPanelForegroundColor(int type) {
|
||||
Color color = ColorConstants.WHITE_COLOR;
|
||||
switch (type) {
|
||||
case IMessageProvider.WARNING:
|
||||
color = org.eclipse.draw2d.ColorConstants.black;
|
||||
break;
|
||||
case IMessageProvider.NONE:
|
||||
case IMessageProvider.INFORMATION:
|
||||
case IMessageProvider.ERROR:
|
||||
color = ColorConstants.WHITE_COLOR;
|
||||
break;
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
private Color getMoreInfoLinkForegroundColor(int type) {
|
||||
Color color = null;
|
||||
switch (type) {
|
||||
case IMessageProvider.NONE:
|
||||
case IMessageProvider.INFORMATION:
|
||||
case IMessageProvider.ERROR:
|
||||
color = ColorConstants.WHITE_COLOR;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
private void startAnimation() {
|
||||
boolean hasMsg = hasMessage();
|
||||
if (this.titleAnimationSchedulerThread != null) {
|
||||
if (hasMsg == threadShowingMsg) {
|
||||
return;
|
||||
} else {
|
||||
this.titleAnimationSchedulerThread.interrupt();
|
||||
}
|
||||
}
|
||||
threadShowingMsg = hasMsg;
|
||||
titleAnimationSchedulerThread = createTitleAnimationSchedulerThread(threadShowingMsg);
|
||||
titleAnimationSchedulerThread.start();
|
||||
}
|
||||
|
||||
private boolean hasMessage() {
|
||||
return StringUtils.isNotBlank(messageLabel.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitle(String newTitle) {
|
||||
super.setTitle(newTitle);
|
||||
if (StringUtils.equals(newTitle, title) && this.bigTitleImg != null) {
|
||||
return;
|
||||
}
|
||||
if (this.titleAnimationSchedulerThread != null) {
|
||||
this.titleAnimationSchedulerThread.interrupt();
|
||||
}
|
||||
this.title = newTitle;
|
||||
if (this.bigTitleImg != null) {
|
||||
this.bigTitleImg.dispose();
|
||||
}
|
||||
this.bigTitleImg = createTitleImage(getTitleBigFont(), this.title);
|
||||
if (this.smallTitleImg != null) {
|
||||
this.smallTitleImg.dispose();
|
||||
}
|
||||
this.smallTitleImg = createTitleImage(JFaceResources.getBannerFont(), this.title);
|
||||
this.titleLabelWithAnimation.redraw();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showMoreInfoLink(IDialogPage page, String name, String link) {
|
||||
if (isHideMessageArea()) {
|
||||
return;
|
||||
}
|
||||
if (getCurrentPage() != page) {
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isBlank(name)) {
|
||||
moreInfoLink.setText("");
|
||||
moreInfoLink.setEnabled(false);
|
||||
} else {
|
||||
moreInfoLink.setEnabled(true);
|
||||
moreInfoLink.setText(name);
|
||||
}
|
||||
moreInfoUrl = link;
|
||||
this.moreInfoLink.pack();
|
||||
this.moreInfoLink.redraw();
|
||||
this.messagePanel.layout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitleImage(Image newTitleImage) {
|
||||
super.setTitleImage(newTitleImage);
|
||||
if (this.titleAreaImage != null) {
|
||||
if (this.messageTopY < this.titleAreaImage.getBounds().height) {
|
||||
FormData fd = (FormData) messagePanel.getLayoutData();
|
||||
Rectangle imgBounds = this.titleAreaImage.getBounds();
|
||||
fd.right = new FormAttachment(100, -getHorizonPadding() - imgBounds.width);
|
||||
FormData panelFd = (FormData) this.topPanel.getLayoutData();
|
||||
int imageY = imgBounds.height;
|
||||
int topPanelY = panelFd.height;
|
||||
if (topPanelY < imageY) {
|
||||
panelFd.height = imageY;
|
||||
// fd.right = new FormAttachment(this.titleImageLabel, -getMargin(), SWT.LEFT);
|
||||
this.topPanel.getParent().layout();
|
||||
} else {
|
||||
}
|
||||
this.topPanel.layout();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Image createTitleImage(Font font, String title) {
|
||||
Label tmpLabel = new Label(titleLabel.getParent(), SWT.NONE);
|
||||
tmpLabel.setText(title);
|
||||
tmpLabel.setFont(font);
|
||||
tmpLabel.pack();
|
||||
Point size = tmpLabel.getSize();
|
||||
tmpLabel.dispose();
|
||||
|
||||
int width = size.x;
|
||||
if (StringUtils.isEmpty(title)) {
|
||||
width = 1;
|
||||
}
|
||||
Image tmpImg = new Image(Display.getDefault(), width, size.y);
|
||||
GC gc = new GC(tmpImg);
|
||||
gc.setAntialias(SWT.ON);
|
||||
gc.setInterpolation(SWT.HIGH);
|
||||
gc.setFont(font);
|
||||
gc.setAlpha(0);
|
||||
gc.drawRectangle(0, 0, width, size.y);
|
||||
gc.setAlpha(255);
|
||||
gc.drawText(title, 0, 0, true);
|
||||
gc.dispose();
|
||||
|
||||
ImageData imageData = tmpImg.getImageData();
|
||||
imageData.transparentPixel = imageData.getPixel(0, 0);
|
||||
tmpImg.dispose();
|
||||
|
||||
return new Image(Display.getDefault(), imageData);
|
||||
}
|
||||
|
||||
private void drawTitle(PaintEvent e) {
|
||||
double p = percentage;
|
||||
Rectangle sBounds = smallTitleImg.getBounds();
|
||||
Rectangle bBounds = bigTitleImg.getBounds();
|
||||
int width = bBounds.width - sBounds.width;
|
||||
int height = bBounds.height - sBounds.height;
|
||||
Rectangle baseBounds = sBounds;
|
||||
Image finalImg = bigTitleImg;
|
||||
finalImg = bigTitleImg;
|
||||
int totalHight = e.height;
|
||||
int middleY = (totalHight - bBounds.height) / 2;
|
||||
// int startY = getMargin();
|
||||
int startY = 0;
|
||||
int baseY = startY;
|
||||
int y = (int) (p * (middleY - startY));
|
||||
if (hasMessage()) {
|
||||
y = -y;
|
||||
width = -width;
|
||||
height = -height;
|
||||
baseBounds = bBounds;
|
||||
baseY = middleY;
|
||||
finalImg = smallTitleImg;
|
||||
}
|
||||
|
||||
Point newSize = new Point((int) (baseBounds.width + p * width), (int) (baseBounds.height + p * height));
|
||||
GC gc = e.gc;
|
||||
gc.setAntialias(SWT.ON);
|
||||
gc.setInterpolation(SWT.HIGH);
|
||||
if (p <= 1.0) {
|
||||
gc.drawImage(bigTitleImg, 0, 0, bBounds.width, bBounds.height, 0, baseY + y, newSize.x, newSize.y);
|
||||
} else {
|
||||
Rectangle bounds = finalImg.getBounds();
|
||||
gc.drawImage(finalImg, 0, 0, bounds.width, bounds.height, 0, baseY + y, bounds.width, bounds.height);
|
||||
}
|
||||
}
|
||||
|
||||
private void drawMessageBackground(PaintEvent e, Control ctrl) {
|
||||
e.gc.setBackground(msgPanelColor);
|
||||
e.gc.setAntialias(SWT.ON);
|
||||
e.gc.setInterpolation(SWT.HIGH);
|
||||
Point size = ctrl.getSize();
|
||||
e.gc.fillRoundRectangle(0, 0, size.x, size.y, 15, 15);
|
||||
}
|
||||
|
||||
private int getHorizonPadding() {
|
||||
IWizard wizard = this.getWizard();
|
||||
if (wizard instanceof ITalendWizard) {
|
||||
return ((ITalendWizard) wizard).getHorizonPadding();
|
||||
}
|
||||
return 5;
|
||||
}
|
||||
|
||||
private int getVerticalPadding() {
|
||||
IWizard wizard = this.getWizard();
|
||||
if (wizard instanceof ITalendWizard) {
|
||||
return ((ITalendWizard) wizard).getVerticalPadding();
|
||||
}
|
||||
return 5;
|
||||
}
|
||||
|
||||
private int getHorizonMargin() {
|
||||
IWizard wizard = this.getWizard();
|
||||
if (wizard instanceof ITalendWizard) {
|
||||
return ((ITalendWizard) wizard).getHorizonMargin();
|
||||
}
|
||||
return 5;
|
||||
}
|
||||
|
||||
private int getMargin() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,244 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.dialogs;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.jface.dialogs.TitleAreaDialog;
|
||||
import org.eclipse.jface.resource.JFaceColors;
|
||||
import org.eclipse.jface.wizard.IWizard;
|
||||
import org.eclipse.jface.wizard.ProgressMonitorPart;
|
||||
import org.eclipse.jface.wizard.WizardDialog;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.layout.FormAttachment;
|
||||
import org.eclipse.swt.layout.FormData;
|
||||
import org.eclipse.swt.layout.FormLayout;
|
||||
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.Display;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.ui.runtime.ColorConstants;
|
||||
|
||||
|
||||
/**
|
||||
* DOC cmeng class global comment. Detailled comment
|
||||
*/
|
||||
public class TalendWizardDialog_backup extends WizardDialog {
|
||||
|
||||
private boolean useNewErrorStyle = false;
|
||||
|
||||
/**
|
||||
* Warning color: #FCE6D9 <br/>
|
||||
* info color: #CDE3F2
|
||||
*/
|
||||
|
||||
public TalendWizardDialog_backup(Shell parentShell, IWizard newWizard) {
|
||||
super(parentShell, newWizard);
|
||||
useNewErrorStyle = true;
|
||||
this.setTitleAreaColor(new RGB(205, 227, 242));
|
||||
}
|
||||
|
||||
public void setNewErrorStyle(boolean newErrStyle) {
|
||||
this.useNewErrorStyle = newErrStyle;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createContents(Composite parent) {
|
||||
parent.setBackground(ColorConstants.WHITE_COLOR);
|
||||
Control panel = super.createContents(parent);
|
||||
Display display = parent.getDisplay();
|
||||
Color background = JFaceColors.getBannerBackground(display);
|
||||
Color foreground = JFaceColors.getBannerForeground(display);
|
||||
try {
|
||||
Field workAreaField = TitleAreaDialog.class.getDeclaredField("workArea");
|
||||
workAreaField.setAccessible(true);
|
||||
Composite workArea = (Composite) workAreaField.get(this);
|
||||
workArea.setBackground(ColorConstants.WHITE_COLOR);
|
||||
Field pageContainerField = WizardDialog.class.getDeclaredField("pageContainer");
|
||||
pageContainerField.setAccessible(true);
|
||||
Composite pageContainer = (Composite) pageContainerField.get(this);
|
||||
pageContainer.setBackground(ColorConstants.WHITE_COLOR);
|
||||
if (useNewErrorStyle()) {
|
||||
FormData formData = (FormData) workArea.getLayoutData();
|
||||
formData.top = new FormAttachment(0);
|
||||
}
|
||||
Field bottomFillerLabelField = TitleAreaDialog.class.getDeclaredField("bottomFillerLabel");
|
||||
bottomFillerLabelField.setAccessible(true);
|
||||
Composite bottomFillerLabel = (Composite) bottomFillerLabelField.get(this);
|
||||
bottomFillerLabel.setVisible(false);
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
return panel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMessage(String newMessage) {
|
||||
if (useNewErrorStyle()) {
|
||||
ExceptionHandler.log(newMessage);
|
||||
} else {
|
||||
super.setMessage(newMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMessage(String newMessage, int newType) {
|
||||
if (useNewErrorStyle()) {
|
||||
ExceptionHandler.log(newMessage);
|
||||
} else {
|
||||
super.setMessage(newMessage, newType);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setErrorMessage(String newErrorMessage) {
|
||||
if (useNewErrorStyle()) {
|
||||
ExceptionHandler.log(newErrorMessage);
|
||||
} else {
|
||||
super.setErrorMessage(newErrorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean useNewErrorStyle() {
|
||||
return this.useNewErrorStyle;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createDialogArea(Composite parent) {
|
||||
Composite panel = (Composite) super.createDialogArea(parent);
|
||||
Control[] children = panel.getChildren();
|
||||
for (Control child : children) {
|
||||
child.setBackground(ColorConstants.WHITE_COLOR);
|
||||
if (child instanceof Label) {
|
||||
int style = child.getStyle();
|
||||
if (0 < (style & SWT.HORIZONTAL) && 0 < (style & SWT.SEPARATOR)) {
|
||||
child.setVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
return panel;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ProgressMonitorPart createProgressMonitorPart(Composite composite, GridLayout pmlayout) {
|
||||
ProgressMonitorPart progMonitor = super.createProgressMonitorPart(composite, pmlayout);
|
||||
progMonitor.setBackground(ColorConstants.WHITE_COLOR);
|
||||
return progMonitor;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createButtonBar(Composite parent) {
|
||||
Composite composite = new Composite(parent, SWT.NONE);
|
||||
composite.setBackground(ColorConstants.WHITE_COLOR);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.marginWidth = 0;
|
||||
layout.marginHeight = 0;
|
||||
layout.horizontalSpacing = 0;
|
||||
composite.setLayout(layout);
|
||||
composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
|
||||
composite.setFont(parent.getFont());
|
||||
|
||||
Control helpControl = null;
|
||||
// create help control if needed
|
||||
if (isHelpAvailable()) {
|
||||
helpControl = createHelpControl(composite);
|
||||
((GridData) helpControl.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(
|
||||
IDialogConstants.HORIZONTAL_MARGIN);
|
||||
}
|
||||
createButtonsForButtonBar(composite);
|
||||
|
||||
Button helpButton = getButton(IDialogConstants.HELP_ID);
|
||||
Button finishButton = getButton(IDialogConstants.FINISH_ID);
|
||||
Button cancelButton = getButton(IDialogConstants.CANCEL_ID);
|
||||
Button backButton = getButton(IDialogConstants.BACK_ID);
|
||||
Button nextButton = getButton(IDialogConstants.NEXT_ID);
|
||||
|
||||
FormLayout formLayout = new FormLayout();
|
||||
formLayout.marginWidth = 10;
|
||||
formLayout.marginHeight = 20;
|
||||
composite.setLayout(formLayout);
|
||||
final int HORIZON_ALIGN = 5;
|
||||
|
||||
FormData cancelData = new FormData();
|
||||
cancelData.left = new FormAttachment(0);
|
||||
cancelData.top = new FormAttachment(composite, 0, SWT.CENTER);
|
||||
cancelData.width = getButtonWidth(cancelButton);
|
||||
cancelButton.setLayoutData(cancelData);
|
||||
|
||||
Control tmpCtrl = cancelButton;
|
||||
|
||||
if (helpControl != null) {
|
||||
FormData formData = new FormData();
|
||||
formData.left = new FormAttachment(tmpCtrl, HORIZON_ALIGN, SWT.RIGHT);
|
||||
formData.top = new FormAttachment(tmpCtrl, 0, SWT.CENTER);
|
||||
helpControl.setLayoutData(formData);
|
||||
tmpCtrl = helpControl;
|
||||
}
|
||||
if (helpButton != null) {
|
||||
FormData formData = new FormData();
|
||||
formData.left = new FormAttachment(tmpCtrl, HORIZON_ALIGN, SWT.RIGHT);
|
||||
formData.top = new FormAttachment(tmpCtrl, 0, SWT.CENTER);
|
||||
formData.width = getButtonWidth(helpButton);
|
||||
helpButton.setLayoutData(formData);
|
||||
tmpCtrl = helpButton;
|
||||
}
|
||||
FormData finishData = new FormData();
|
||||
finishData.right = new FormAttachment(100);
|
||||
finishData.top = new FormAttachment(composite, 0, SWT.CENTER);
|
||||
finishData.width = getButtonWidth(finishButton);
|
||||
finishButton.setLayoutData(finishData);
|
||||
tmpCtrl = finishButton;
|
||||
|
||||
if (nextButton != null) {
|
||||
FormData nextData = new FormData();
|
||||
Composite nextParentCtrl = nextButton.getParent();
|
||||
nextData.right = new FormAttachment(tmpCtrl, -HORIZON_ALIGN, SWT.LEFT);
|
||||
nextData.top = new FormAttachment(tmpCtrl, 0, SWT.CENTER);
|
||||
nextParentCtrl.setLayoutData(nextData);
|
||||
}
|
||||
if (false) {
|
||||
if (nextButton != null) {
|
||||
FormData nextData = new FormData();
|
||||
nextData.right = new FormAttachment(tmpCtrl, -HORIZON_ALIGN, SWT.LEFT);
|
||||
nextData.top = new FormAttachment(tmpCtrl, 0, SWT.CENTER);
|
||||
nextData.width = getButtonWidth(nextButton);
|
||||
nextButton.setLayoutData(nextData);
|
||||
}
|
||||
if (backButton != null) {
|
||||
FormData backData = new FormData();
|
||||
backData.right = new FormAttachment(tmpCtrl, -HORIZON_ALIGN, SWT.LEFT);
|
||||
backData.top = new FormAttachment(tmpCtrl, 0, SWT.CENTER);
|
||||
backData.width = getButtonWidth(backButton);
|
||||
backButton.setLayoutData(backData);
|
||||
}
|
||||
}
|
||||
|
||||
return composite;
|
||||
}
|
||||
|
||||
private int getButtonWidth(Button btn) {
|
||||
int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
|
||||
Point minSize = btn.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
|
||||
return Math.max(widthHint, minSize.x);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,693 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.dialogs;
|
||||
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.jface.dialogs.IMessageProvider;
|
||||
import org.eclipse.jface.dialogs.TrayDialog;
|
||||
import org.eclipse.jface.resource.JFaceColors;
|
||||
import org.eclipse.jface.resource.JFaceResources;
|
||||
import org.eclipse.jface.window.ToolTip;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.accessibility.ACC;
|
||||
import org.eclipse.swt.accessibility.AccessibleAttributeAdapter;
|
||||
import org.eclipse.swt.accessibility.AccessibleAttributeEvent;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.layout.FormAttachment;
|
||||
import org.eclipse.swt.layout.FormData;
|
||||
import org.eclipse.swt.layout.FormLayout;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
/**
|
||||
* A dialog that has a title area for displaying a title and an image as well as a common area for displaying a
|
||||
* description, a message, or an error message.
|
||||
* <p>
|
||||
* This dialog class may be subclassed.
|
||||
*/
|
||||
public class TitleAreaDialog extends TrayDialog {
|
||||
|
||||
/**
|
||||
* Image registry key for error message image.
|
||||
*/
|
||||
public static final String DLG_IMG_TITLE_ERROR = DLG_IMG_MESSAGE_ERROR;
|
||||
|
||||
/**
|
||||
* Image registry key for banner image (value <code>"dialog_title_banner_image"</code>).
|
||||
*/
|
||||
public static final String DLG_IMG_TITLE_BANNER = "dialog_title_banner_image";//$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Message type constant used to display an info icon with the message.
|
||||
*
|
||||
* @since 2.0
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String INFO_MESSAGE = "INFO_MESSAGE"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Message type constant used to display a warning icon with the message.
|
||||
*
|
||||
* @since 2.0
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String WARNING_MESSAGE = "WARNING_MESSAGE"; //$NON-NLS-1$
|
||||
|
||||
// Space between an image and a label
|
||||
private static final int H_GAP_IMAGE = 5;
|
||||
|
||||
// Minimum dialog width (in dialog units)
|
||||
private static final int MIN_DIALOG_WIDTH = 350;
|
||||
|
||||
// Minimum dialog height (in dialog units)
|
||||
private static final int MIN_DIALOG_HEIGHT = 150;
|
||||
|
||||
protected Label titleLabel;
|
||||
|
||||
protected Label titleImageLabel;
|
||||
|
||||
protected Label bottomFillerLabel;
|
||||
|
||||
protected Label leftFillerLabel;
|
||||
|
||||
private RGB titleAreaRGB;
|
||||
|
||||
Color titleAreaColor;
|
||||
|
||||
protected String message = ""; //$NON-NLS-1$
|
||||
|
||||
protected String errorMessage;
|
||||
|
||||
protected Label messageLabel;
|
||||
|
||||
protected Composite workArea;
|
||||
|
||||
protected Label messageImageLabel;
|
||||
|
||||
protected Image messageImage;
|
||||
|
||||
private boolean showingError = false;
|
||||
|
||||
private boolean titleImageLargest = true;
|
||||
|
||||
private int messageLabelHeight;
|
||||
|
||||
protected Image titleAreaImage;
|
||||
|
||||
/**
|
||||
* Instantiate a new title area dialog.
|
||||
*
|
||||
* @param parentShell the parent SWT shell
|
||||
*/
|
||||
public TitleAreaDialog(Shell parentShell) {
|
||||
super(parentShell);
|
||||
}
|
||||
|
||||
/*
|
||||
* @see Dialog.createContents(Composite)
|
||||
*/
|
||||
@Override
|
||||
protected Control createContents(Composite parent) {
|
||||
// create the overall composite
|
||||
Composite contents = new Composite(parent, SWT.NONE);
|
||||
contents.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||
// initialize the dialog units
|
||||
initializeDialogUnits(contents);
|
||||
FormLayout layout = new FormLayout();
|
||||
contents.setLayout(layout);
|
||||
// Now create a work area for the rest of the dialog
|
||||
workArea = new Composite(contents, SWT.NONE);
|
||||
// workArea.setBackground(ColorConstants.RED_COLOR);
|
||||
GridLayout childLayout = new GridLayout();
|
||||
childLayout.marginHeight = 0;
|
||||
childLayout.marginWidth = 0;
|
||||
childLayout.verticalSpacing = 0;
|
||||
workArea.setLayout(childLayout);
|
||||
Control top = createTitleArea(contents);
|
||||
resetWorkAreaAttachments(top);
|
||||
workArea.setFont(JFaceResources.getDialogFont());
|
||||
// initialize the dialog units
|
||||
initializeDialogUnits(workArea);
|
||||
// create the dialog area and button bar
|
||||
dialogArea = createDialogArea(workArea);
|
||||
buttonBar = createButtonBar(workArea);
|
||||
|
||||
// need to react to new size of title area
|
||||
getShell().addListener(SWT.Resize, event -> layoutForNewMessage(true));
|
||||
return contents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and returns the contents of the upper part of this dialog (above the button bar).
|
||||
* <p>
|
||||
* The <code>Dialog</code> implementation of this framework method creates and returns a new <code>Composite</code>
|
||||
* with no margins and spacing. Subclasses should override.
|
||||
* </p>
|
||||
*
|
||||
* @param parent The parent composite to contain the dialog area
|
||||
* @return the dialog area control
|
||||
*/
|
||||
@Override
|
||||
protected Control createDialogArea(Composite parent) {
|
||||
// create the top level composite for the dialog area
|
||||
Composite composite = new Composite(parent, SWT.NONE);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.marginHeight = 0;
|
||||
layout.marginWidth = 0;
|
||||
layout.verticalSpacing = 0;
|
||||
layout.horizontalSpacing = 0;
|
||||
composite.setLayout(layout);
|
||||
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||
composite.setFont(parent.getFont());
|
||||
// Build the separator line
|
||||
titleBarSeparator = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR);
|
||||
titleBarSeparator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||||
return composite;
|
||||
}
|
||||
|
||||
protected Label titleBarSeparator;
|
||||
|
||||
/**
|
||||
* Creates the dialog's title area.
|
||||
*
|
||||
* @param parent the SWT parent for the title area widgets
|
||||
* @return Control with the highest x axis value.
|
||||
*/
|
||||
protected Control createTitleArea(Composite parent) {
|
||||
|
||||
// Determine the background color of the title bar
|
||||
Display display = parent.getDisplay();
|
||||
Color background;
|
||||
Color foreground;
|
||||
if (titleAreaRGB != null) {
|
||||
titleAreaColor = new Color(display, titleAreaRGB);
|
||||
background = titleAreaColor;
|
||||
foreground = null;
|
||||
} else {
|
||||
background = JFaceColors.getBannerBackground(display);
|
||||
foreground = JFaceColors.getBannerForeground(display);
|
||||
}
|
||||
|
||||
parent.setBackground(background);
|
||||
int verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
|
||||
int horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
|
||||
// Dialog image @ right
|
||||
titleImageLabel = new Label(parent, SWT.CENTER);
|
||||
titleImageLabel.setBackground(background);
|
||||
if (titleAreaImage == null || titleAreaImage.isDisposed())
|
||||
titleImageLabel.setImage(JFaceResources.getImage(DLG_IMG_TITLE_BANNER));
|
||||
else
|
||||
titleImageLabel.setImage(titleAreaImage);
|
||||
|
||||
FormData imageData = new FormData();
|
||||
imageData.top = new FormAttachment(0, 0);
|
||||
// Note: do not use horizontalSpacing on the right as that would be a
|
||||
// regression from
|
||||
// the R2.x style where there was no margin on the right and images are
|
||||
// flush to the right
|
||||
// hand side. see reopened comments in 41172
|
||||
imageData.right = new FormAttachment(100, 0); // horizontalSpacing
|
||||
titleImageLabel.setLayoutData(imageData);
|
||||
// Title label @ top, left
|
||||
titleLabel = new Label(parent, SWT.LEFT);
|
||||
JFaceColors.setColors(titleLabel, foreground, background);
|
||||
titleLabel.setFont(JFaceResources.getBannerFont());
|
||||
titleLabel.setText(" ");//$NON-NLS-1$
|
||||
FormData titleData = new FormData();
|
||||
titleData.top = new FormAttachment(0, verticalSpacing);
|
||||
titleData.right = new FormAttachment(titleImageLabel);
|
||||
titleData.left = new FormAttachment(0, horizontalSpacing);
|
||||
titleLabel.setLayoutData(titleData);
|
||||
// Message image @ bottom, left
|
||||
messageImageLabel = new Label(parent, SWT.CENTER);
|
||||
messageImageLabel.setBackground(background);
|
||||
// Message label @ bottom, center
|
||||
// messageLabel = new Text(parent, SWT.WRAP | SWT.READ_ONLY);
|
||||
messageLabel = new Label(parent, SWT.WRAP);
|
||||
JFaceColors.setColors(messageLabel, foreground, background);
|
||||
messageLabel.setText(" \n "); // two lines//$NON-NLS-1$
|
||||
messageLabel.setFont(JFaceResources.getDialogFont());
|
||||
// Bug 248410 - This snippet will only work with Windows screen readers.
|
||||
messageLabel.getAccessible().addAccessibleAttributeListener(new AccessibleAttributeAdapter() {
|
||||
|
||||
@Override
|
||||
public void getAttributes(AccessibleAttributeEvent e) {
|
||||
e.attributes = new String[] { "container-live", //$NON-NLS-1$
|
||||
"polite", "live", "polite", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
|
||||
"container-live-role", "status", }; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
});
|
||||
messageLabelHeight = messageLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
|
||||
// Filler labels
|
||||
leftFillerLabel = new Label(parent, SWT.CENTER);
|
||||
leftFillerLabel.setBackground(background);
|
||||
bottomFillerLabel = new Label(parent, SWT.CENTER);
|
||||
bottomFillerLabel.setBackground(background);
|
||||
setLayoutsForNormalMessage(verticalSpacing, horizontalSpacing);
|
||||
determineTitleImageLargest();
|
||||
if (titleImageLargest)
|
||||
return titleImageLabel;
|
||||
return messageLabel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the title image is larger than the title message and message area. This is used for layout
|
||||
* decisions.
|
||||
*/
|
||||
private void determineTitleImageLargest() {
|
||||
int titleY = titleImageLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
|
||||
int verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
|
||||
int labelY = titleLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
|
||||
labelY += verticalSpacing;
|
||||
labelY += messageLabelHeight;
|
||||
labelY += verticalSpacing;
|
||||
titleImageLargest = titleY > labelY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the layout values for the messageLabel, messageImageLabel and fillerLabel for the case where there is a
|
||||
* normal message.
|
||||
*
|
||||
* @param verticalSpacing int The spacing between widgets on the vertical axis.
|
||||
* @param horizontalSpacing int The spacing between widgets on the horizontal axis.
|
||||
*/
|
||||
protected void setLayoutsForNormalMessage(int verticalSpacing, int horizontalSpacing) {
|
||||
FormData messageImageData = new FormData();
|
||||
messageImageData.top = new FormAttachment(titleLabel, verticalSpacing);
|
||||
messageImageData.left = new FormAttachment(0, H_GAP_IMAGE);
|
||||
messageImageLabel.setLayoutData(messageImageData);
|
||||
FormData messageLabelData = new FormData();
|
||||
messageLabelData.top = new FormAttachment(titleLabel, verticalSpacing);
|
||||
messageLabelData.right = new FormAttachment(titleImageLabel);
|
||||
messageLabelData.left = new FormAttachment(messageImageLabel, horizontalSpacing);
|
||||
messageLabelData.height = messageLabelHeight;
|
||||
if (titleImageLargest)
|
||||
messageLabelData.bottom = new FormAttachment(titleImageLabel, 0, SWT.BOTTOM);
|
||||
messageLabel.setLayoutData(messageLabelData);
|
||||
FormData fillerData = new FormData();
|
||||
fillerData.left = new FormAttachment(0, horizontalSpacing);
|
||||
fillerData.top = new FormAttachment(messageImageLabel, 0);
|
||||
fillerData.bottom = new FormAttachment(messageLabel, 0, SWT.BOTTOM);
|
||||
bottomFillerLabel.setLayoutData(fillerData);
|
||||
FormData data = new FormData();
|
||||
data.top = new FormAttachment(messageImageLabel, 0, SWT.TOP);
|
||||
data.left = new FormAttachment(0, 0);
|
||||
data.bottom = new FormAttachment(messageImageLabel, 0, SWT.BOTTOM);
|
||||
data.right = new FormAttachment(messageImageLabel, 0);
|
||||
leftFillerLabel.setLayoutData(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* The <code>TitleAreaDialog</code> implementation of this <code>Window</code> methods returns an initial size which
|
||||
* is at least some reasonable minimum.
|
||||
*
|
||||
* @return the initial size of the dialog
|
||||
*/
|
||||
@Override
|
||||
protected Point getInitialSize() {
|
||||
Point shellSize = super.getInitialSize();
|
||||
return new Point(Math.max(convertHorizontalDLUsToPixels(MIN_DIALOG_WIDTH), shellSize.x),
|
||||
Math.max(convertVerticalDLUsToPixels(MIN_DIALOG_HEIGHT), shellSize.y));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retained for backward compatibility.
|
||||
*
|
||||
* Returns the title area composite. There is no composite in this implementation so the shell is returned.
|
||||
*
|
||||
* @return Composite
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
protected Composite getTitleArea() {
|
||||
return getShell();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the title image label.
|
||||
*
|
||||
* @return the title image label
|
||||
*/
|
||||
protected Label getTitleImageLabel() {
|
||||
return titleImageLabel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the given error message. The currently displayed message is saved and will be redisplayed when the error
|
||||
* message is set to <code>null</code>.
|
||||
*
|
||||
* @param newErrorMessage the newErrorMessage to display or <code>null</code>
|
||||
*/
|
||||
public void setErrorMessage(String newErrorMessage) {
|
||||
// Any change?
|
||||
if (errorMessage == null ? newErrorMessage == null : errorMessage.equals(newErrorMessage))
|
||||
return;
|
||||
errorMessage = newErrorMessage;
|
||||
|
||||
// Clear or set error message.
|
||||
if (errorMessage == null) {
|
||||
if (showingError) {
|
||||
// we were previously showing an error
|
||||
showingError = false;
|
||||
}
|
||||
// show the message
|
||||
// avoid calling setMessage in case it is overridden to call
|
||||
// setErrorMessage,
|
||||
// which would result in a recursive infinite loop
|
||||
if (message == null) // this should probably never happen since
|
||||
// setMessage does this conversion....
|
||||
message = ""; //$NON-NLS-1$
|
||||
updateMessage(message);
|
||||
messageImageLabel.setImage(messageImage);
|
||||
setImageLabelVisible(messageImage != null);
|
||||
} else {
|
||||
// Add in a space for layout purposes but do not
|
||||
// change the instance variable
|
||||
String displayedErrorMessage = " " + errorMessage; //$NON-NLS-1$
|
||||
updateMessage(displayedErrorMessage);
|
||||
if (!showingError) {
|
||||
// we were not previously showing an error
|
||||
showingError = true;
|
||||
messageImageLabel.setImage(JFaceResources.getImage(DLG_IMG_TITLE_ERROR));
|
||||
setImageLabelVisible(true);
|
||||
}
|
||||
}
|
||||
layoutForNewMessage(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-layout the labels for the new message.
|
||||
*
|
||||
* @param forceLayout <code>true</code> to force a layout of the shell
|
||||
*/
|
||||
protected void layoutForNewMessage(boolean forceLayout) {
|
||||
int verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
|
||||
int horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
|
||||
// If there are no images then layout as normal
|
||||
if (errorMessage == null && messageImage == null) {
|
||||
setImageLabelVisible(false);
|
||||
setLayoutsForNormalMessage(verticalSpacing, horizontalSpacing);
|
||||
} else {
|
||||
messageImageLabel.setVisible(true);
|
||||
bottomFillerLabel.setVisible(true);
|
||||
leftFillerLabel.setVisible(true);
|
||||
/**
|
||||
* Note that we do not use horizontalSpacing here as when the background of the messages changes there will
|
||||
* be gaps between the icon label and the message that are the background color of the shell. We add a
|
||||
* leading space elsewhere to compendate for this.
|
||||
*/
|
||||
FormData data = new FormData();
|
||||
data.left = new FormAttachment(0, H_GAP_IMAGE);
|
||||
data.top = new FormAttachment(titleLabel, verticalSpacing);
|
||||
messageImageLabel.setLayoutData(data);
|
||||
data = new FormData();
|
||||
data.top = new FormAttachment(messageImageLabel, 0);
|
||||
data.left = new FormAttachment(0, 0);
|
||||
data.bottom = new FormAttachment(messageLabel, 0, SWT.BOTTOM);
|
||||
data.right = new FormAttachment(messageImageLabel, 0, SWT.RIGHT);
|
||||
bottomFillerLabel.setLayoutData(data);
|
||||
data = new FormData();
|
||||
data.top = new FormAttachment(messageImageLabel, 0, SWT.TOP);
|
||||
data.left = new FormAttachment(0, 0);
|
||||
data.bottom = new FormAttachment(messageImageLabel, 0, SWT.BOTTOM);
|
||||
data.right = new FormAttachment(messageImageLabel, 0);
|
||||
leftFillerLabel.setLayoutData(data);
|
||||
FormData messageLabelData = new FormData();
|
||||
messageLabelData.top = new FormAttachment(titleLabel, verticalSpacing);
|
||||
messageLabelData.right = new FormAttachment(titleImageLabel);
|
||||
messageLabelData.left = new FormAttachment(messageImageLabel, 0);
|
||||
messageLabelData.height = messageLabelHeight;
|
||||
if (titleImageLargest)
|
||||
messageLabelData.bottom = new FormAttachment(titleImageLabel, 0, SWT.BOTTOM);
|
||||
messageLabel.setLayoutData(messageLabelData);
|
||||
}
|
||||
|
||||
if (forceLayout) {
|
||||
getShell().layout();
|
||||
} else {
|
||||
// Do not layout before the dialog area has been created
|
||||
// to avoid incomplete calculations.
|
||||
if (dialogArea != null)
|
||||
workArea.getParent().layout(true);
|
||||
}
|
||||
|
||||
Point messageSize = messageLabel.getSize();
|
||||
int messageLabelUnclippedHeight = messageLabel.computeSize(messageSize.x, SWT.DEFAULT, true).y;
|
||||
boolean messageLabelClipped = messageLabelUnclippedHeight > messageSize.y;
|
||||
if (messageLabel.getData() instanceof ToolTip) {
|
||||
ToolTip toolTip = (ToolTip) messageLabel.getData();
|
||||
toolTip.hide();
|
||||
toolTip.deactivate();
|
||||
messageLabel.setData(null);
|
||||
}
|
||||
if (messageLabelClipped) {
|
||||
ToolTip tooltip = new ToolTip(messageLabel, ToolTip.NO_RECREATE, false) {
|
||||
|
||||
@Override
|
||||
protected Composite createToolTipContentArea(Event event, Composite parent) {
|
||||
Composite result = new Composite(parent, SWT.NONE);
|
||||
result.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
|
||||
result.setLayout(new GridLayout());
|
||||
Text text = new Text(result, SWT.WRAP);
|
||||
text.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
|
||||
text.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
|
||||
text.setText(messageLabel.getText());
|
||||
GridData gridData = new GridData();
|
||||
gridData.widthHint = messageSize.x;
|
||||
text.setLayoutData(gridData);
|
||||
Dialog.applyDialogFont(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Point getLocation(Point tipSize, Event event) {
|
||||
return messageLabel.getShell().toDisplay(messageLabel.getLocation());
|
||||
}
|
||||
};
|
||||
messageLabel.setData(tooltip);
|
||||
tooltip.setPopupDelay(0);
|
||||
tooltip.activate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the message text. If the message line currently displays an error, the message is saved and will be
|
||||
* redisplayed when the error message is set to <code>null</code>.
|
||||
* <p>
|
||||
* Shortcut for <code>setMessage(newMessage, IMessageProvider.NONE)</code>
|
||||
* </p>
|
||||
* This method should be called after the dialog has been opened as it updates the message label immediately.
|
||||
*
|
||||
* @param newMessage the message, or <code>null</code> to clear the message
|
||||
*/
|
||||
public void setMessage(String newMessage) {
|
||||
setMessage(newMessage, IMessageProvider.NONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the message for this dialog with an indication of what type of message it is.
|
||||
* <p>
|
||||
* The valid message types are one of <code>NONE</code>, <code>INFORMATION</code>,<code>WARNING</code>, or
|
||||
* <code>ERROR</code>.
|
||||
* </p>
|
||||
* <p>
|
||||
* Note that for backward compatibility, a message of type <code>ERROR</code> is different than an error message
|
||||
* (set using <code>setErrorMessage</code>). An error message overrides the current message until the error message
|
||||
* is cleared. This method replaces the current message and does not affect the error message.
|
||||
* </p>
|
||||
*
|
||||
* @param newMessage the message, or <code>null</code> to clear the message
|
||||
* @param newType the message type
|
||||
* @since 2.0
|
||||
*/
|
||||
public void setMessage(String newMessage, int newType) {
|
||||
Image newImage = null;
|
||||
if (newMessage != null) {
|
||||
switch (newType) {
|
||||
case IMessageProvider.NONE:
|
||||
break;
|
||||
case IMessageProvider.INFORMATION:
|
||||
newImage = JFaceResources.getImage(DLG_IMG_MESSAGE_INFO);
|
||||
break;
|
||||
case IMessageProvider.WARNING:
|
||||
newImage = JFaceResources.getImage(DLG_IMG_MESSAGE_WARNING);
|
||||
break;
|
||||
case IMessageProvider.ERROR:
|
||||
newImage = JFaceResources.getImage(DLG_IMG_MESSAGE_ERROR);
|
||||
break;
|
||||
}
|
||||
}
|
||||
showMessage(newMessage, newImage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the new message and image.
|
||||
*
|
||||
* @param newMessage
|
||||
* @param newImage
|
||||
*/
|
||||
protected void showMessage(String newMessage, Image newImage) {
|
||||
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=249915
|
||||
if (newMessage == null)
|
||||
newMessage = ""; //$NON-NLS-1$
|
||||
|
||||
// Any change?
|
||||
if (message.equals(newMessage) && messageImage == newImage) {
|
||||
return;
|
||||
}
|
||||
message = newMessage;
|
||||
|
||||
// Message string to be shown - if there is an image then add in
|
||||
// a space to the message for layout purposes
|
||||
String shownMessage = (newImage == null) ? message : " " + message; //$NON-NLS-1$
|
||||
messageImage = newImage;
|
||||
if (!showingError) {
|
||||
// we are not showing an error
|
||||
updateMessage(shownMessage);
|
||||
messageImageLabel.setImage(messageImage);
|
||||
setImageLabelVisible(messageImage != null);
|
||||
layoutForNewMessage(false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the contents of the messageLabel.
|
||||
*
|
||||
* @param newMessage the message to use
|
||||
*/
|
||||
protected void updateMessage(String newMessage) {
|
||||
String oldMessage = messageLabel.getText();
|
||||
messageLabel.setText(newMessage);
|
||||
// Bug 248410 - This snippet will only work with Windows screen readers.
|
||||
messageLabel.getAccessible().sendEvent(ACC.EVENT_ATTRIBUTE_CHANGED, null);
|
||||
messageLabel.getAccessible().sendEvent(ACC.EVENT_TEXT_CHANGED, new Object[] { Integer.valueOf(ACC.TEXT_DELETE),
|
||||
Integer.valueOf(0), Integer.valueOf(oldMessage.length()), oldMessage });
|
||||
messageLabel.getAccessible().sendEvent(ACC.EVENT_TEXT_CHANGED, new Object[] { Integer.valueOf(ACC.TEXT_INSERT),
|
||||
Integer.valueOf(0), Integer.valueOf(newMessage.length()), newMessage });
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the title to be shown in the title area of this dialog.
|
||||
*
|
||||
* @param newTitle the title show
|
||||
*/
|
||||
public void setTitle(String newTitle) {
|
||||
if (titleLabel == null)
|
||||
return;
|
||||
String title = newTitle;
|
||||
if (title == null)
|
||||
title = "";//$NON-NLS-1$
|
||||
titleLabel.setText(title);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the title bar color for this dialog.
|
||||
*
|
||||
* @param color the title bar color
|
||||
*/
|
||||
public void setTitleAreaColor(RGB color) {
|
||||
titleAreaRGB = color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the title image to be shown in the title area of this dialog.
|
||||
*
|
||||
* @param newTitleImage the title image to be shown
|
||||
*/
|
||||
public void setTitleImage(Image newTitleImage) {
|
||||
|
||||
titleAreaImage = newTitleImage;
|
||||
if (titleImageLabel != null) {
|
||||
titleImageLabel.setImage(newTitleImage);
|
||||
determineTitleImageLargest();
|
||||
Control top;
|
||||
if (titleImageLargest)
|
||||
top = titleImageLabel;
|
||||
else
|
||||
top = messageLabel;
|
||||
resetWorkAreaAttachments(top);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Make the label used for displaying error images visible depending on boolean.
|
||||
*
|
||||
* @param visible If <code>true</code> make the image visible, if not then make it not visible.
|
||||
*/
|
||||
protected void setImageLabelVisible(boolean visible) {
|
||||
messageImageLabel.setVisible(visible);
|
||||
bottomFillerLabel.setVisible(visible);
|
||||
leftFillerLabel.setVisible(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the attachment of the workArea to now attach to top as the top control.
|
||||
*
|
||||
* @param top
|
||||
*/
|
||||
protected void resetWorkAreaAttachments(Control top) {
|
||||
FormData childData = new FormData();
|
||||
childData.top = new FormAttachment(top);
|
||||
childData.right = new FormAttachment(100, 0);
|
||||
childData.left = new FormAttachment(0, 0);
|
||||
childData.bottom = new FormAttachment(100, 0);
|
||||
workArea.setLayoutData(childData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current message text for this dialog. This message is displayed in the message line of the dialog
|
||||
* when the error message is <code>null</code>. If there is a non-null error message, this message is not shown, but
|
||||
* is stored so that it can be shown in the message line whenever {@link #setErrorMessage(String)} is called with a
|
||||
* <code>null</code> parameter.
|
||||
*
|
||||
* @return the message text, which is never <code>null</code>.
|
||||
*
|
||||
* @see #setMessage(String)
|
||||
* @see #setErrorMessage(String)
|
||||
*
|
||||
* @since 3.6
|
||||
*/
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current error message being shown in the dialog, or <code>null</code> if there is no error message
|
||||
* being shown.
|
||||
*
|
||||
* @return the error message, which may be <code>null</code>.
|
||||
*
|
||||
* @see #setErrorMessage(String)
|
||||
* @see #setMessage(String)
|
||||
*
|
||||
* @since 3.6
|
||||
*/
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -20,14 +20,12 @@ import org.eclipse.jface.viewers.TableViewer;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.DisposeEvent;
|
||||
import org.eclipse.swt.events.DisposeListener;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.RowLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Table;
|
||||
import org.talend.commons.ui.runtime.ITalendThemeService;
|
||||
import org.talend.commons.ui.runtime.swt.tableviewer.TableViewerCreatorNotModifiable.LAYOUT_MODE;
|
||||
import org.talend.commons.ui.runtime.swt.tableviewer.selection.ILineSelectionListener;
|
||||
import org.talend.commons.ui.runtime.swt.tableviewer.selection.LineSelectionEvent;
|
||||
@@ -158,7 +156,6 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
final Table table = getTableViewerCreator().getTable();
|
||||
final ILineSelectionListener beforeLineSelectionListener = new ILineSelectionListener() {
|
||||
|
||||
@Override
|
||||
public void handle(LineSelectionEvent e) {
|
||||
if (e.selectionByMethod && !selectionHelper.isMouseSelectionning() && !forceExecuteSelectionEvent) {
|
||||
executeSelectionEvent = false;
|
||||
@@ -169,7 +166,6 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
};
|
||||
final ILineSelectionListener afterLineSelectionListener = new ILineSelectionListener() {
|
||||
|
||||
@Override
|
||||
public void handle(LineSelectionEvent e) {
|
||||
executeSelectionEvent = true;
|
||||
}
|
||||
@@ -179,7 +175,6 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
|
||||
DisposeListener disposeListener = new DisposeListener() {
|
||||
|
||||
@Override
|
||||
public void widgetDisposed(DisposeEvent e) {
|
||||
selectionHelper.removeBeforeSelectionListener(beforeLineSelectionListener);
|
||||
selectionHelper.removeAfterSelectionListener(afterLineSelectionListener);
|
||||
@@ -190,7 +185,6 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
|
||||
table.addListener(SWT.KeyUp, new Listener() {
|
||||
|
||||
@Override
|
||||
public void handleEvent(Event event) {
|
||||
|
||||
if (event.character == '\u0001') { // CTRL + A
|
||||
@@ -257,9 +251,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
newTableViewerCreator.setLazyLoad(TableViewerCreator.getRecommandLazyLoad());
|
||||
newTableViewerCreator.setFirstVisibleColumnIsSelection(false);
|
||||
newTableViewerCreator.setCheckboxInFirstColumn(false);
|
||||
Color bgColorForEmptyArea = ITalendThemeService.getColor("org.talend.commons.ui.BgColorForEmptyArea")
|
||||
.orElse(getParentComposite().getDisplay().getSystemColor(SWT.COLOR_WHITE));
|
||||
newTableViewerCreator.setBgColorForEmptyArea(bgColorForEmptyArea);
|
||||
newTableViewerCreator.setBgColorForEmptyArea(getParentComposite().getDisplay().getSystemColor(SWT.COLOR_WHITE));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -279,7 +271,6 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
|
||||
getExtendedTableModel().addBeforeOperationListListener(1, new IListenableListListener() {
|
||||
|
||||
@Override
|
||||
public void handleEvent(ListenableListEvent event) {
|
||||
handleBeforeListenableListOperationEvent(event);
|
||||
}
|
||||
@@ -288,7 +279,6 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
|
||||
getExtendedTableModel().addAfterOperationListListener(1, new IListenableListListener() {
|
||||
|
||||
@Override
|
||||
public void handleEvent(ListenableListEvent event) {
|
||||
handleAfterListenableListOperationEvent(event);
|
||||
}
|
||||
@@ -297,7 +287,6 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
|
||||
getExtendedTableModel().addAfterOperationListListener(100, new IListenableListListener<B>() {
|
||||
|
||||
@Override
|
||||
public void handleEvent(ListenableListEvent<B> event) {
|
||||
if (tableViewerCreator.getTable() != null && !tableViewerCreator.getTable().isDisposed()) {
|
||||
// tableViewerCreator.getTable().forceFocus();
|
||||
@@ -379,7 +368,6 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
|
||||
tableViewerCreator.setInputList(getBeansList());
|
||||
new AsynchronousThreading(100, true, tableViewerCreator.getTable().getDisplay(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
tableViewerCreator.layout();
|
||||
}
|
||||
|
||||
@@ -1,233 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.formtools;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.FocusListener;
|
||||
import org.eclipse.swt.events.SelectionListener;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
|
||||
/**
|
||||
* Create a Label and a Checkbox.
|
||||
*/
|
||||
public class LabelledCheckbox implements LabelledWidget{
|
||||
|
||||
private Button button;
|
||||
|
||||
private Label label;
|
||||
|
||||
/**
|
||||
* Create a Label and a Text.
|
||||
*
|
||||
* @param composite
|
||||
* @param string
|
||||
*/
|
||||
public LabelledCheckbox(Composite composite, String string) {
|
||||
createLabelledButton(composite, string, 1, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a Label and a Text.
|
||||
*
|
||||
* @param composite
|
||||
* @param string
|
||||
* @param isFill
|
||||
*/
|
||||
public LabelledCheckbox(Composite composite, String string, boolean isFill) {
|
||||
createLabelledButton(composite, string, 1, isFill);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a Label and a Button width specific styleField.
|
||||
*
|
||||
* @param composite
|
||||
* @param string
|
||||
* @param int horizontalSpan
|
||||
*/
|
||||
public LabelledCheckbox(Composite composite, String string, int horizontalSpan) {
|
||||
createLabelledButton(composite, string, horizontalSpan, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a Label and a Button width specific styleField.
|
||||
*
|
||||
* @param composite
|
||||
* @param string
|
||||
* @param int horizontalSpan
|
||||
* @param styleField
|
||||
*/
|
||||
public LabelledCheckbox(Composite composite, String string, int horizontalSpan, int styleField) {
|
||||
createLabelledButton(composite, string, horizontalSpan, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a Label and a Button width Gridata option FILL.
|
||||
*
|
||||
* @param composite
|
||||
* @param string
|
||||
* @param styleField
|
||||
* @param int horizontalSpan
|
||||
* @param isFill
|
||||
*/
|
||||
public LabelledCheckbox(Composite composite, String string, int horizontalSpan, boolean isFill) {
|
||||
createLabelledButton(composite, string, horizontalSpan, isFill);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a Label and a Button width specific styleField and Gridata option FILL.
|
||||
*
|
||||
* @param composite
|
||||
* @param string
|
||||
* @param int horizontalSpan
|
||||
* @param styleField
|
||||
* @param isFill
|
||||
*/
|
||||
public LabelledCheckbox(Composite composite, String string, int horizontalSpan, int styleField, boolean isFill) {
|
||||
createLabelledButton(composite, string, horizontalSpan, isFill);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a Label and a Button width specific styleField and Gridata option FILL.
|
||||
*
|
||||
* @param composite
|
||||
* @param string
|
||||
* @param int horizontalSpan
|
||||
* @param styleField
|
||||
* @param isFill
|
||||
*/
|
||||
private void createLabelledButton(Composite composite, String string, int horizontalSpan, boolean isFill) {
|
||||
label = new Label(composite, SWT.LEFT);
|
||||
if (string != null) {
|
||||
label.setText(string);
|
||||
}
|
||||
|
||||
button = new Button(composite, SWT.CHECK);
|
||||
int gridDataStyle = SWT.NONE;
|
||||
if (isFill) {
|
||||
gridDataStyle = SWT.FILL;
|
||||
}
|
||||
GridData gridData = new GridData(gridDataStyle, SWT.CENTER, true, false);
|
||||
gridData.horizontalSpan = horizontalSpan;
|
||||
button.setLayoutData(gridData);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* setToolTipText to Text Object.
|
||||
*
|
||||
* @param string
|
||||
*/
|
||||
public void setToolTipText(final String string) {
|
||||
button.setToolTipText(string);
|
||||
}
|
||||
|
||||
/**
|
||||
* is Checkbox Selected.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public Boolean isSelected() {
|
||||
return button.getSelection();
|
||||
}
|
||||
|
||||
/**
|
||||
* setText to Label Object.
|
||||
*
|
||||
* @param string
|
||||
*/
|
||||
public void setLabelText(final String string) {
|
||||
if (string != null) {
|
||||
label.setText(string);
|
||||
} else {
|
||||
label.setText(""); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* setEditable to Button and Label Object.
|
||||
*
|
||||
* @param boolean
|
||||
*/
|
||||
public void forceFocus() {
|
||||
setEnabled(true);
|
||||
button.forceFocus();
|
||||
}
|
||||
|
||||
/**
|
||||
* setEnabled to Button and Label Object.
|
||||
*
|
||||
* @param boolean
|
||||
*/
|
||||
public void setEnabled(final boolean visible) {
|
||||
button.setEnabled(visible);
|
||||
label.setEnabled(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* setVisible to Button and Label Object.
|
||||
*
|
||||
* @param boolean
|
||||
*/
|
||||
public void setVisible(final boolean visible) {
|
||||
button.setVisible(visible);
|
||||
label.setVisible(visible);
|
||||
}
|
||||
|
||||
public void setVisible(final boolean visible, final boolean exclude) {
|
||||
Control[] controls = new Control[] { label, button };
|
||||
for (Control control : controls) {
|
||||
control.setVisible(visible);
|
||||
if (control.getLayoutData() instanceof GridData) {
|
||||
((GridData) control.getLayoutData()).exclude = exclude;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* addListener to Button Object.
|
||||
*
|
||||
* @param eventType
|
||||
* @param listener
|
||||
*/
|
||||
public void addListener(int eventType, Listener listener) {
|
||||
button.addListener(eventType, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* addFocusListener to Button Object.
|
||||
*
|
||||
* @param listener
|
||||
*/
|
||||
public void addFocusListener(FocusListener listener) {
|
||||
button.addFocusListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(String value) {
|
||||
button.setSelection(Boolean.parseBoolean(value));
|
||||
}
|
||||
|
||||
public void addSelectionListener(SelectionListener listener) {
|
||||
button.addSelectionListener(listener);
|
||||
}
|
||||
|
||||
public boolean getSelection() {
|
||||
return button.getSelection();
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,7 @@ import org.eclipse.swt.widgets.Text;
|
||||
* $Id: LabelledText.java 7038 2007-11-15 14:05:48Z plegall $
|
||||
*
|
||||
*/
|
||||
public class LabelledText implements LabelledWidget{
|
||||
public class LabelledText {
|
||||
|
||||
private Text text;
|
||||
|
||||
@@ -297,16 +297,6 @@ public class LabelledText implements LabelledWidget{
|
||||
label.setVisible(visible);
|
||||
}
|
||||
|
||||
public void setVisible(final boolean visible, final boolean exclude) {
|
||||
Control[] controls = new Control[] { label, text };
|
||||
for (Control control : controls) {
|
||||
control.setVisible(visible);
|
||||
if (control.getLayoutData() instanceof GridData) {
|
||||
((GridData) control.getLayoutData()).exclude = exclude;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isVisiable() {
|
||||
return text.isVisible() && label.isVisible();
|
||||
}
|
||||
@@ -482,9 +472,4 @@ public class LabelledText implements LabelledWidget{
|
||||
text.getParent().layout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(String value) {
|
||||
this.setText(value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package org.talend.commons.ui.swt.formtools;
|
||||
|
||||
public interface LabelledWidget {
|
||||
|
||||
// Set the value of the widget
|
||||
public void set(String value);
|
||||
|
||||
public void setVisible(boolean visible, boolean exclude);
|
||||
}
|
||||
@@ -16,10 +16,8 @@ import org.eclipse.jface.dialogs.MessageDialog;
|
||||
import org.eclipse.jface.viewers.ICellEditorListener;
|
||||
import org.eclipse.jface.viewers.TextCellEditor;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
import org.talend.commons.ui.runtime.ColorConstants;
|
||||
import org.talend.commons.ui.runtime.i18n.Messages;
|
||||
import org.talend.commons.ui.runtime.swt.tableviewer.data.ModifiedObjectInfo;
|
||||
import org.talend.commons.ui.runtime.thread.AsynchronousThreading;
|
||||
@@ -41,8 +39,6 @@ public abstract class DialogErrorForCellEditorListener implements ICellEditorLis
|
||||
protected TableViewerCreatorColumn column;
|
||||
|
||||
protected TableViewerCreator tableViewerCreator;
|
||||
|
||||
private Color tableBackground = ColorConstants.getTableBackgroundColor();
|
||||
|
||||
/**
|
||||
* DOC amaumont CellEditorListener constructor comment.
|
||||
@@ -93,7 +89,7 @@ public abstract class DialogErrorForCellEditorListener implements ICellEditorLis
|
||||
final String errorMessage = validateValue(newValue, beanPosition);
|
||||
if (errorMessage == null) {
|
||||
newValidValueTyped(beanPosition, lastValidValue, newValue, state);
|
||||
text.setBackground(tableBackground);
|
||||
text.setBackground(text.getDisplay().getSystemColor(SWT.COLOR_WHITE));
|
||||
lastValidValue = newValue;
|
||||
} else {
|
||||
text.setBackground(text.getDisplay().getSystemColor(SWT.COLOR_RED));
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.wizard;
|
||||
|
||||
|
||||
/**
|
||||
* DOC cmeng class global comment. Detailled comment
|
||||
*/
|
||||
public class TalendWizard {
|
||||
|
||||
/**
|
||||
* DOC cmeng TalendWizard constructor comment.
|
||||
*/
|
||||
public TalendWizard() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.swt.wizard;
|
||||
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
|
||||
/**
|
||||
* DOC cmeng class global comment. Detailled comment
|
||||
*/
|
||||
public class TalendWizardDialog extends Dialog {
|
||||
|
||||
public TalendWizardDialog(Shell parentShell) {
|
||||
super(parentShell);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createContents(Composite parent) {
|
||||
return super.createContents(parent);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
int sleep = 1000 / 60;
|
||||
double time = 1.0 / 50;
|
||||
int total = 0;
|
||||
for (int i = 1; i <= 25; i++) {
|
||||
double curTime = time * i;
|
||||
double value = 1.0 - Math.sqrt(1 - curTime * curTime);
|
||||
int lengh = (int) (250 * value);
|
||||
total += lengh;
|
||||
System.out.println(i + "\t:" + lengh + ", total: " + total);
|
||||
}
|
||||
for (int i = 25; i <= 50; i++) {
|
||||
double curTime = 1 - time * i;
|
||||
double value = 1.0 - Math.sqrt(1 - curTime * curTime);
|
||||
int lengh = (int) (250 * value);
|
||||
total += lengh;
|
||||
System.out.println(i + "\t:" + lengh + ", total: " + total);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,178 +1,178 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.utils.loader;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
|
||||
|
||||
/**
|
||||
* ggu class global comment. Detailled comment
|
||||
*/
|
||||
public class MyURLClassLoader extends URLClassLoader {
|
||||
|
||||
public static interface IAssignableClassFilter {
|
||||
|
||||
public boolean filter(URL[] urls);
|
||||
|
||||
public boolean filter(Class clazz);
|
||||
|
||||
public boolean filter(String clazzName);
|
||||
}
|
||||
|
||||
private static Logger log = Logger.getLogger(MyURLClassLoader.class);
|
||||
|
||||
private Map pclasses = new HashMap();
|
||||
|
||||
public MyURLClassLoader(String fileName) throws IOException {
|
||||
this(new File(fileName).toURI().toURL());
|
||||
}
|
||||
|
||||
public MyURLClassLoader(URL url) {
|
||||
this(new URL[] { url });
|
||||
}
|
||||
|
||||
public MyURLClassLoader(URL[] urls) {
|
||||
super(urls, Class.class.getClassLoader());
|
||||
}
|
||||
|
||||
public MyURLClassLoader(URL[] urls, ClassLoader parentLoader) {
|
||||
super(urls, parentLoader);
|
||||
}
|
||||
|
||||
public Class[] getAssignableClasses(Class type) throws IOException {
|
||||
return getAssignableClasses(type, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Class[] getAssignableClasses(Class type, IAssignableClassFilter filter) throws IOException {
|
||||
List classes = new ArrayList();
|
||||
URL[] urls = getURLs();
|
||||
for (URL url : urls) {
|
||||
if (filter != null && filter.filter(new URL[] { url })) {
|
||||
continue;
|
||||
}
|
||||
File file = new File(url.getFile());
|
||||
if (!file.isDirectory() && file.exists() && file.canRead()) {
|
||||
ZipFile zipFile = null;
|
||||
try {
|
||||
zipFile = new ZipFile(file);
|
||||
} catch (IOException ex) {
|
||||
ExceptionHandler.process(ex);
|
||||
}
|
||||
Enumeration<? extends ZipEntry> entries = zipFile.entries();
|
||||
while (entries.hasMoreElements()) {
|
||||
Class cls = null;
|
||||
String entryName = entries.nextElement().getName();
|
||||
String className = changeFileNameToClassName(entryName);
|
||||
if (className != null) {
|
||||
if (filter != null && filter.filter(className)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
cls = loadClass(className);
|
||||
} catch (Throwable th) {
|
||||
log.warn(th);
|
||||
}
|
||||
if (cls != null) {
|
||||
if (filter != null && filter.filter(cls)) {
|
||||
continue;
|
||||
}
|
||||
if (isAssignableType(type, cls)) {
|
||||
classes.add(cls);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return (Class[]) classes.toArray(new Class[classes.size()]);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private boolean isAssignableType(Class type, Class current) {
|
||||
if (type == null || current == null || current.equals(Object.class)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (type.isAssignableFrom(current)) {
|
||||
return true;
|
||||
} else
|
||||
// sometimes can not assign the java generic, use the class url
|
||||
if (type.getName() != null && type.getName().equals(current.getName())) {
|
||||
return true;
|
||||
} else {
|
||||
//
|
||||
if (type.isInterface()) {//
|
||||
for (Class interfaceClazz : current.getInterfaces()) {
|
||||
if (interfaceClazz.equals(type)) {
|
||||
return true;
|
||||
} else {
|
||||
if (isAssignableType(type, interfaceClazz)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isAssignableType(type, current.getSuperclass())) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return isAssignableType(type, current.getSuperclass());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.net.URLClassLoader#findClass(java.lang.String)
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
protected synchronized Class findCslass(String className) throws ClassNotFoundException {
|
||||
Class cls = (Class) pclasses.get(className);
|
||||
if (cls == null) {
|
||||
cls = super.findClass(className);
|
||||
pclasses.put(className, cls);
|
||||
}
|
||||
return cls;
|
||||
}
|
||||
|
||||
public static String changeFileNameToClassName(String name) {
|
||||
if (name == null) {
|
||||
throw new IllegalArgumentException("File Name == null");
|
||||
}
|
||||
String className = null;
|
||||
if (name.toLowerCase().endsWith(".class")) {
|
||||
className = name.replace('/', '.');
|
||||
className = className.replace('\\', '.');
|
||||
className = className.substring(0, className.length() - 6);
|
||||
}
|
||||
return className;
|
||||
}
|
||||
|
||||
protected void classHasBeenLoaded(Class cls) {
|
||||
}
|
||||
|
||||
}
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.commons.ui.utils.loader;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
|
||||
|
||||
/**
|
||||
* ggu class global comment. Detailled comment
|
||||
*/
|
||||
public class MyURLClassLoader extends URLClassLoader {
|
||||
|
||||
public static interface IAssignableClassFilter {
|
||||
|
||||
public boolean filter(URL[] urls);
|
||||
|
||||
public boolean filter(Class clazz);
|
||||
|
||||
public boolean filter(String clazzName);
|
||||
}
|
||||
|
||||
private static Logger log = Logger.getLogger(MyURLClassLoader.class);
|
||||
|
||||
private Map pclasses = new HashMap();
|
||||
|
||||
public MyURLClassLoader(String fileName) throws IOException {
|
||||
this(new File(fileName).toURL());
|
||||
}
|
||||
|
||||
public MyURLClassLoader(URL url) {
|
||||
this(new URL[] { url });
|
||||
}
|
||||
|
||||
public MyURLClassLoader(URL[] urls) {
|
||||
super(urls, Class.class.getClassLoader());
|
||||
}
|
||||
|
||||
public MyURLClassLoader(URL[] urls, ClassLoader parentLoader) {
|
||||
super(urls, parentLoader);
|
||||
}
|
||||
|
||||
public Class[] getAssignableClasses(Class type) throws IOException {
|
||||
return getAssignableClasses(type, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Class[] getAssignableClasses(Class type, IAssignableClassFilter filter) throws IOException {
|
||||
List classes = new ArrayList();
|
||||
URL[] urls = getURLs();
|
||||
for (URL url : urls) {
|
||||
if (filter != null && filter.filter(new URL[] { url })) {
|
||||
continue;
|
||||
}
|
||||
File file = new File(url.getFile());
|
||||
if (!file.isDirectory() && file.exists() && file.canRead()) {
|
||||
ZipFile zipFile = null;
|
||||
try {
|
||||
zipFile = new ZipFile(file);
|
||||
} catch (IOException ex) {
|
||||
ExceptionHandler.process(ex);
|
||||
}
|
||||
Enumeration<? extends ZipEntry> entries = zipFile.entries();
|
||||
while (entries.hasMoreElements()) {
|
||||
Class cls = null;
|
||||
String entryName = entries.nextElement().getName();
|
||||
String className = changeFileNameToClassName(entryName);
|
||||
if (className != null) {
|
||||
if (filter != null && filter.filter(className)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
cls = loadClass(className);
|
||||
} catch (Throwable th) {
|
||||
log.warn(th);
|
||||
}
|
||||
if (cls != null) {
|
||||
if (filter != null && filter.filter(cls)) {
|
||||
continue;
|
||||
}
|
||||
if (isAssignableType(type, cls)) {
|
||||
classes.add(cls);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return (Class[]) classes.toArray(new Class[classes.size()]);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private boolean isAssignableType(Class type, Class current) {
|
||||
if (type == null || current == null || current.equals(Object.class)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (type.isAssignableFrom(current)) {
|
||||
return true;
|
||||
} else
|
||||
// sometimes can not assign the java generic, use the class url
|
||||
if (type.getName() != null && type.getName().equals(current.getName())) {
|
||||
return true;
|
||||
} else {
|
||||
//
|
||||
if (type.isInterface()) {//
|
||||
for (Class interfaceClazz : current.getInterfaces()) {
|
||||
if (interfaceClazz.equals(type)) {
|
||||
return true;
|
||||
} else {
|
||||
if (isAssignableType(type, interfaceClazz)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isAssignableType(type, current.getSuperclass())) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return isAssignableType(type, current.getSuperclass());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.net.URLClassLoader#findClass(java.lang.String)
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
protected synchronized Class findCslass(String className) throws ClassNotFoundException {
|
||||
Class cls = (Class) pclasses.get(className);
|
||||
if (cls == null) {
|
||||
cls = super.findClass(className);
|
||||
pclasses.put(className, cls);
|
||||
}
|
||||
return cls;
|
||||
}
|
||||
|
||||
public static String changeFileNameToClassName(String name) {
|
||||
if (name == null) {
|
||||
throw new IllegalArgumentException("File Name == null");
|
||||
}
|
||||
String className = null;
|
||||
if (name.toLowerCase().endsWith(".class")) {
|
||||
className = name.replace('/', '.');
|
||||
className = className.replace('\\', '.');
|
||||
className = className.substring(0, className.length() - 6);
|
||||
}
|
||||
return className;
|
||||
}
|
||||
|
||||
protected void classHasBeenLoaded(Class cls) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ import org.eclipse.swt.graphics.GC;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.talend.commons.ui.gmf.util.DisplayUtils;
|
||||
import org.talend.commons.ui.runtime.ITalendThemeService;
|
||||
|
||||
/**
|
||||
* Figure managing some simple HTML styles. <br/>
|
||||
@@ -78,8 +77,6 @@ public class SimpleHtmlFigure extends Figure {
|
||||
private static Font boldFont = null;
|
||||
|
||||
private static Font boldItalicFont = null;
|
||||
|
||||
private static final Color DEFAULT_LABEL_COLOR = ITalendThemeService.getColor("NODE_FIGURE_LABEL_FORCEGROUND").orElse(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
|
||||
|
||||
/**
|
||||
* Constructs a new SimpleHtmlFigure.
|
||||
@@ -265,8 +262,6 @@ public class SimpleHtmlFigure extends Figure {
|
||||
label.setFont(fontToUse);
|
||||
if (colorStack.size() > 0) {
|
||||
label.setForegroundColor(colorStack.get(colorStack.size() - 1));
|
||||
} else {
|
||||
label.setForegroundColor(DEFAULT_LABEL_COLOR); // Set label default foreground color
|
||||
}
|
||||
horizContainer.add(label);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ Automatic-Module-Name: org.talend.core.repository
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Core Repository Plug-in
|
||||
Bundle-SymbolicName: org.talend.core.repository;singleton:=true
|
||||
Bundle-Version: 8.0.1.qualifier
|
||||
Bundle-Version: 8.8.8.qualifier
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.ui.ide,
|
||||
org.apache.commons.collections,
|
||||
|
||||
@@ -187,10 +187,10 @@
|
||||
<RepositoryComponent
|
||||
name="GENERAL_JDBC"
|
||||
withSchema="true"
|
||||
input="JDBCInput"
|
||||
output="JDBCOutput">
|
||||
input="tJDBCInput"
|
||||
output="tJDBCOutput">
|
||||
<Item
|
||||
clazz="org.talend.core.model.properties.TacokitDatabaseConnectionItem">
|
||||
clazz="org.talend.core.model.properties.DatabaseConnectionItem">
|
||||
</Item>
|
||||
<DBType
|
||||
type="GENERAL_JDBC">
|
||||
@@ -285,30 +285,6 @@
|
||||
type="INFORMIX">
|
||||
</DBType>
|
||||
</RepositoryComponent>
|
||||
<RepositoryComponent
|
||||
name="INGRES"
|
||||
withSchema="true"
|
||||
input="tIngresInput"
|
||||
output="tIngresOutput">
|
||||
<Item
|
||||
clazz="org.talend.core.model.properties.DatabaseConnectionItem">
|
||||
</Item>
|
||||
<DBType
|
||||
type="INGRES">
|
||||
</DBType>
|
||||
</RepositoryComponent>
|
||||
<RepositoryComponent
|
||||
name="VECTORWISE"
|
||||
withSchema="true"
|
||||
input="tVectorWiseInput"
|
||||
output="tVectorWiseOutput">
|
||||
<Item
|
||||
clazz="org.talend.core.model.properties.DatabaseConnectionItem">
|
||||
</Item>
|
||||
<DBType
|
||||
type="VECTORWISE">
|
||||
</DBType>
|
||||
</RepositoryComponent>
|
||||
<RepositoryComponent
|
||||
name="JAVADB"
|
||||
withSchema="true"
|
||||
@@ -420,7 +396,18 @@
|
||||
type="ORACLESN">
|
||||
</DBType>
|
||||
</RepositoryComponent>
|
||||
|
||||
<RepositoryComponent
|
||||
name="PLUSPSQL"
|
||||
withSchema="true"
|
||||
input="tPostgresPlusInput"
|
||||
output="tPostgresPlusOutput">
|
||||
<Item
|
||||
clazz="org.talend.core.model.properties.DatabaseConnectionItem">
|
||||
</Item>
|
||||
<DBType
|
||||
type="PLUSPSQL">
|
||||
</DBType>
|
||||
</RepositoryComponent>
|
||||
<RepositoryComponent
|
||||
name="PSQL"
|
||||
withSchema="true"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<groupId>org.talend.studio</groupId>
|
||||
<artifactId>tcommon-studio-se</artifactId>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<version>8.8.8-SNAPSHOT</version>
|
||||
<relativePath>../../../</relativePath>
|
||||
</parent>
|
||||
<artifactId>org.talend.core.repository</artifactId>
|
||||
|
||||
@@ -39,19 +39,6 @@ public final class Constant {
|
||||
*/
|
||||
public static final String ITEM_EVENT_PROPERTY_KEY = "item"; //$NON-NLS-1$
|
||||
|
||||
|
||||
/**
|
||||
* key used to get/set the property of an event related to an item (REPOSITORY_ITEM_EVENT_PREFIX). The value is the
|
||||
* cloudVersion string.
|
||||
*/
|
||||
public static final String VERSION_EVENT_CLOUD_KEY = "cloudVersion"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* key used to get/set the property of an event related to an item (REPOSITORY_ITEM_EVENT_PREFIX). The value is the
|
||||
* cloudName string.
|
||||
*/
|
||||
public static final String VERSION_EVENT_CLOUD_NAME = "cloudName"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* key used to get/set the property of an event related to a list of files modified in the repository
|
||||
* (REPOSITORY_ITEM_EVENT_PREFIX). The value is the Collection of String (list of all files modified).
|
||||
@@ -69,11 +56,6 @@ public final class Constant {
|
||||
*/
|
||||
public static final String PROJECT_RELOAD_EVENT_SUFFIX = "project"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* suffix used when issuing an event on the OSGI event bus when published to cloud.
|
||||
*/
|
||||
public static final String CLOUD_PUBLISH_EVENT_SUFFIX = "cloud"; //$NON-NLS-1$
|
||||
|
||||
|
||||
/**
|
||||
* key used to get/set the property of an event related to a list of files modified in the repository
|
||||
|
||||
@@ -19,8 +19,6 @@ import org.talend.repository.model.RepositoryConstants;
|
||||
*/
|
||||
public interface FileConstants {
|
||||
|
||||
String DOT = ".";
|
||||
|
||||
String OLD_TALEND_PROJECT_FILENAME = "talendProject"; //$NON-NLS-1$
|
||||
|
||||
String LOCAL_PROJECT_FILENAME = "talend.project"; //$NON-NLS-1$
|
||||
@@ -114,4 +112,5 @@ public interface FileConstants {
|
||||
String TALEND_FOLDER_NAME = "TALEND-INF"; //$NON-NLS-1$
|
||||
|
||||
String MAVEN_FOLDER_NAME = "MAVEN-INF";
|
||||
|
||||
}
|
||||
|
||||
@@ -127,13 +127,14 @@ JobletReferenceDialog.NodeTotalsTip=The totals of node reference
|
||||
JobletReferenceDialog.project=Project
|
||||
JobletReferenceDialog.ReferenceJob=Reference Job
|
||||
JobletReferenceDialog.Title=Delete the joblet failure
|
||||
ContextReferenceDialog.DeleteContext.Title=Delete Context
|
||||
ContextReferenceDialog.Title=Delete Context Group
|
||||
ContextReferenceDialog.Recycle=in Recycle Bin
|
||||
ContextReferenceDialog.ReferenceJob=Reference Objects
|
||||
ContextReferenceDialog.Types=Type
|
||||
ContextReferenceDialog.NodeTypeTip=The type of node reference
|
||||
ContextReferenceDialog.Messages=Context({0} {1}) is referenced from\:\n
|
||||
ContextReferenceDialog.kindMessages2=The context of {0} {1} is referred by the following list, would you still like to delete it?
|
||||
ContextReferenceDialog.kindMessages=The context group of {0} {1} is referred by the following list, if you really want to delete it, the context group is used in job will be changed to built-in when job is opened again. Would you still like to delete it?
|
||||
ContextReferenceDialog.kindMessages1=The context group of {0} {1} is referred by the following list, Would you still like to delete it?
|
||||
CopyToGenericSchemaHelper.cannotGenarateItem=Cannot generate pasted item label.
|
||||
ProxyRepositoryFactory.ReplaceJobHazardDescription=\nDependence on the original connection may be lost\!
|
||||
ItemReferenceDialog.title=Items which cannot be deleted
|
||||
@@ -167,14 +168,12 @@ ProjectRepositoryNode.sapFunctions.inputSchema=Input
|
||||
ProjectRepositoryNode.sapFunctions.outputSchema=Output
|
||||
ProjectRepositoryNode.sapIDocs=SAP iDocs
|
||||
ProjectRepositoryNode.sapTables=SAP Tables
|
||||
ProjectRepositoryNode.sapBWAdvancedDataStoreObject.input=SAP ADSO (Input)
|
||||
ProjectRepositoryNode.sapBWAdvancedDataStoreObject.output=SAP ADSO (Output)
|
||||
ProjectRepositoryNode.sapBWAdvancedDataStoreObject=SAP ADSO
|
||||
ProjectRepositoryNode.sapBWDataSource=SAP DataSource
|
||||
ProjectRepositoryNode.sapBWDataStoreObject=SAP DSO
|
||||
ProjectRepositoryNode.sapBWInfoCube=SAP InfoCube
|
||||
ProjectRepositoryNode.sapBWInfoObject=SAP InfoObject
|
||||
ProjectRepositoryNode.sapContentExtractor=SAP BI Content Extractor
|
||||
ProjectRepositoryNode.sapCDSView=SAP CDS View
|
||||
RepositoryDropAdapter_copyingItems=Copying items...
|
||||
RepositoryDropAdapter_errorMsg=This directory contains the locked item,it can not be moved now
|
||||
RepositoryDropAdapter_lockedByOthers=This item is locked by other users, it can not be moved now.
|
||||
@@ -204,4 +203,3 @@ RenameFolderAction.warning.cannotFind.title=Action not available
|
||||
ConvertJobsUtil.warning.title=Warning
|
||||
ConvertJobsUtil.warning.message=The target framework is not fully supported for this release.
|
||||
SyncLibrariesLoginTask.createStatsLogAndImplicitParamter=Create stats log and implicit parameters
|
||||
WizardPageAPIDefinition_operationIdMissing=API is missing operationIds. operationIds are used to initialize tRESTRequest/cRest output flows. See tRESTRequest/cRest online help.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user