diff --git a/.tgitconfig b/.tgitconfig new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/README-pt.md b/README-pt.md index 8f5d85cd1b87bf395cdf5730c8a40a81a693abf5..b5ee7f44aee14b92f2d9ccd457a4e0148581cee7 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,4 +1,5 @@ + [![Build Status](https://travis-ci.org/dbeaver/dbeaver.svg?branch=devel)](https://travis-ci.org/dbeaver/dbeaver) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/93fcfdba7805406298b2e60c9d56f50e)](https://www.codacy.com/app/serge/dbeaver?utm_source=github.com&utm_medium=referral&utm_content=dbeaver/dbeaver&utm_campaign=Badge_Grade) diff --git a/bundles/org.jkiss.utils/META-INF/MANIFEST.MF b/bundles/org.jkiss.utils/META-INF/MANIFEST.MF index ef8ed91e89fbe0bedb2700cf95ff06085081f8cf..4883c76a3c260f579b05303693eab836d75635d1 100644 --- a/bundles/org.jkiss.utils/META-INF/MANIFEST.MF +++ b/bundles/org.jkiss.utils/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.utils -Bundle-Version: 2.1.67 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.1.68 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.jkiss.code, org.jkiss.utils, diff --git a/bundles/org.jkiss.utils/pom.xml b/bundles/org.jkiss.utils/pom.xml index 82724069508f1aed3127d2207ecd3ee3b6047875..3d2b3e59d221e78ea0d7588c16550190880c7f55 100644 --- a/bundles/org.jkiss.utils/pom.xml +++ b/bundles/org.jkiss.utils/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.utils - 2.1.67 + 2.1.68 eclipse-plugin diff --git a/bundles/org.jkiss.utils/src/org/jkiss/utils/CommonUtils.java b/bundles/org.jkiss.utils/src/org/jkiss/utils/CommonUtils.java index 8c5bb26878ca7840fbb516c4b400dea951aba713..230705a5e8058551216cb17f4ac2c9aa844995de 100644 --- a/bundles/org.jkiss.utils/src/org/jkiss/utils/CommonUtils.java +++ b/bundles/org.jkiss.utils/src/org/jkiss/utils/CommonUtils.java @@ -355,6 +355,15 @@ public class CommonUtils { return strValue; } + public static String[] splitWithDelimiter(String s, String delimiter) { + if (s == null) { + return null; + } + String delimiterReplacement = "DRDRDR"; //$NON-NLS-1$ + s = s.replace(delimiter, delimiterReplacement + delimiter); + return s.split(delimiterReplacement); + } + @NotNull public static List splitString(@Nullable String str, char delimiter) { if (CommonUtils.isEmpty(str)) { diff --git a/bundles/org.jkiss.utils/src/org/jkiss/utils/StandardConstants.java b/bundles/org.jkiss.utils/src/org/jkiss/utils/StandardConstants.java index d099fd8f99eacf8cf6a3fdbcdafa4a4e0b68d6af..161b137f3ab1b30afa47ecbd4775cd21f8768b1b 100644 --- a/bundles/org.jkiss.utils/src/org/jkiss/utils/StandardConstants.java +++ b/bundles/org.jkiss.utils/src/org/jkiss/utils/StandardConstants.java @@ -49,8 +49,11 @@ public abstract class StandardConstants { public static final String ENV_USER_HOME = "user.home"; public static final String ENV_USER_NAME = "user.name"; public static final String ENV_OS_NAME = "os.name"; + public static final String ENV_OS_VERSION = "os.version"; public static final String ENV_OS_ARCH = "os.arch"; public static final String ENV_JAVA_VERSION = "java.version"; + public static final String ENV_JAVA_VENDOR = "java.vendor"; + public static final String ENV_JAVA_ARCH = "sun.arch.data.model"; public static final String ENV_JAVA_CLASSPATH = "java.class.path"; } diff --git a/bundles/org.jkiss.wmi/META-INF/MANIFEST.MF b/bundles/org.jkiss.wmi/META-INF/MANIFEST.MF index ddf13545b9d1ebf631aa505556afb183bfd23d07..1775cca9a71f0ea47663c288f550392c0a62d5dd 100644 --- a/bundles/org.jkiss.wmi/META-INF/MANIFEST.MF +++ b/bundles/org.jkiss.wmi/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.wmi -Bundle-Version: 2.0.77 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.0.78 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: %Bundle-Vendor Export-Package: org.jkiss.wmi.service diff --git a/bundles/org.jkiss.wmi/pom.xml b/bundles/org.jkiss.wmi/pom.xml index 8ec5002fff4df4bf3de82dfba8d003ce5b23742b..1ad98e0d9e4eec60ad66e03479e4f5297a126dff 100644 --- a/bundles/org.jkiss.wmi/pom.xml +++ b/bundles/org.jkiss.wmi/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.wmi - 2.0.77 + 2.0.78 eclipse-plugin diff --git a/features/org.jkiss.dbeaver.ce.feature/feature.xml b/features/org.jkiss.dbeaver.ce.feature/feature.xml index 662b633b227c4513025bb2b58c59cbdfcc5d6b88..c070f38ab4335e0e111da9963aa9b3975c6e01df 100644 --- a/features/org.jkiss.dbeaver.ce.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ce.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ce.feature/pom.xml b/features/org.jkiss.dbeaver.ce.feature/pom.xml index f26243ee71c8a65dbe6155699331227173149644..32a7f60f14ab9a70cf7b49d0a1535cb7e3614d46 100644 --- a/features/org.jkiss.dbeaver.ce.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ce.feature/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.ce.feature - 5.0.6 + 5.1.0 eclipse-feature diff --git a/features/org.jkiss.dbeaver.ce.feature/root/Info.plist b/features/org.jkiss.dbeaver.ce.feature/root/Info.plist index e03cdb10606e9046c8f4f06e138639f8db8b5b58..308ec0b4e42ec802af28fa4fc5168f5640e7fcdb 100644 --- a/features/org.jkiss.dbeaver.ce.feature/root/Info.plist +++ b/features/org.jkiss.dbeaver.ce.feature/root/Info.plist @@ -32,6 +32,7 @@ it ru zh + ja Eclipse diff --git a/features/org.jkiss.dbeaver.core.feature/feature.xml b/features/org.jkiss.dbeaver.core.feature/feature.xml index 3204d7bf13c4ea97d210a41896dd39bf5076b430..8f5ccb896df9dade29a677a8a99640d36ee71048 100644 --- a/features/org.jkiss.dbeaver.core.feature/feature.xml +++ b/features/org.jkiss.dbeaver.core.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.core.feature/pom.xml b/features/org.jkiss.dbeaver.core.feature/pom.xml index 6b3e90cc83d38ee32d18ec88b6bc0919383ec74b..802951cde87f2c0bb991a462f9e0d7ec38332925 100644 --- a/features/org.jkiss.dbeaver.core.feature/pom.xml +++ b/features/org.jkiss.dbeaver.core.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.core.feature - 5.0.6 + 5.1.0 eclipse-feature diff --git a/features/org.jkiss.dbeaver.debug.feature/feature.xml b/features/org.jkiss.dbeaver.debug.feature/feature.xml index 30a0920a86b0395920ea7e4026c2fac00724e3c7..a1365cc6f2a5efba5ee91e18a450fb23d6a895fb 100644 --- a/features/org.jkiss.dbeaver.debug.feature/feature.xml +++ b/features/org.jkiss.dbeaver.debug.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.debug.feature/pom.xml b/features/org.jkiss.dbeaver.debug.feature/pom.xml index 273263b02d18d722d2d4bb2eaff9bb70727729fe..203f813773d0e4efb1380735a773c1e5c14d2359 100644 --- a/features/org.jkiss.dbeaver.debug.feature/pom.xml +++ b/features/org.jkiss.dbeaver.debug.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.debug.feature - 5.0.6 + 5.1.0 eclipse-feature diff --git a/features/org.jkiss.dbeaver.ext.db2.feature/feature.xml b/features/org.jkiss.dbeaver.ext.db2.feature/feature.xml index 72fc61de2d82a2c728e8e7229dea4f615edbe2d1..55e1f67b69be102e25cd21d4a4500f5d35a0f10d 100644 --- a/features/org.jkiss.dbeaver.ext.db2.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ext.db2.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ext.db2.feature/pom.xml b/features/org.jkiss.dbeaver.ext.db2.feature/pom.xml index 54a2be3d4412c55c40c1794d5843da715ee569c2..21bcc4121f7cff7a26a6baabbd6ebe018617f9d0 100644 --- a/features/org.jkiss.dbeaver.ext.db2.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ext.db2.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.db2.feature - 2.1.69 + 2.1.70 eclipse-feature diff --git a/features/org.jkiss.dbeaver.ext.exasol.feature/feature.xml b/features/org.jkiss.dbeaver.ext.exasol.feature/feature.xml index 3be182b0f0418deff17209fee9fc864e2e0f7c88..35316c5ce4e87f714da025691aa427c35dcb6d58 100644 --- a/features/org.jkiss.dbeaver.ext.exasol.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ext.exasol.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ext.exasol.feature/pom.xml b/features/org.jkiss.dbeaver.ext.exasol.feature/pom.xml index 9f9022f04f5ed1bf666a3807993a4a7de7c6dd32..e1f68fa4eece10719394933e5c591d472f4b2524 100644 --- a/features/org.jkiss.dbeaver.ext.exasol.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ext.exasol.feature/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.ext.exasol.feature - 1.0.42 + 1.0.43 eclipse-feature diff --git a/features/org.jkiss.dbeaver.ext.generic.feature/feature.xml b/features/org.jkiss.dbeaver.ext.generic.feature/feature.xml index f3a1b2e63a407c13016cc498c877de3063a11738..f535a7f32c993e26e12445f8d970c0f3581eb81c 100644 --- a/features/org.jkiss.dbeaver.ext.generic.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ext.generic.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ext.generic.feature/pom.xml b/features/org.jkiss.dbeaver.ext.generic.feature/pom.xml index 71f72abdc40c4421012cd393aa7bbdb14f2e0363..b98ab6629d86feafe1a2288312a56ca056a12890 100644 --- a/features/org.jkiss.dbeaver.ext.generic.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ext.generic.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.generic.feature - 2.1.70 + 2.1.71 eclipse-feature diff --git a/features/org.jkiss.dbeaver.ext.mysql.feature/feature.xml b/features/org.jkiss.dbeaver.ext.mysql.feature/feature.xml index f0af219f04c6a982909c1244d82daacbd362ae52..4b469e1af76f8bdc4d7af4f5912a63a4f14f2f86 100644 --- a/features/org.jkiss.dbeaver.ext.mysql.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ext.mysql.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ext.mysql.feature/pom.xml b/features/org.jkiss.dbeaver.ext.mysql.feature/pom.xml index 7a7eeb5a744dcb8423988587519c8c30ec2f41f0..107ed96a20ea3880c31fe67748529358e7700184 100644 --- a/features/org.jkiss.dbeaver.ext.mysql.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ext.mysql.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.mysql.feature - 2.1.69 + 2.1.70 eclipse-feature diff --git a/features/org.jkiss.dbeaver.ext.office.feature/feature.xml b/features/org.jkiss.dbeaver.ext.office.feature/feature.xml index 7de05eae4ff632b7cb8fca3d00424cfbce4a593d..eb557827ce46ea497a2b47a3691614c5baefc8da 100644 --- a/features/org.jkiss.dbeaver.ext.office.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ext.office.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ext.office.feature/pom.xml b/features/org.jkiss.dbeaver.ext.office.feature/pom.xml index 1240f39526799f5954025f3061d8b2aa2c332d12..2b03c3dec10e64145b07c0515f3664db408dae20 100644 --- a/features/org.jkiss.dbeaver.ext.office.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ext.office.feature/pom.xml @@ -9,7 +9,7 @@ ../../ org.jkiss.dbeaver.ext.office.feature - 1.1.21 + 1.1.22 eclipse-feature org.jkiss.dbeaver diff --git a/features/org.jkiss.dbeaver.ext.oracle.feature/feature.xml b/features/org.jkiss.dbeaver.ext.oracle.feature/feature.xml index aab400a1e6f3acbb0a4ee78db701c97ddf19e4ec..ff7f57c4f17c28aff5d1f97ef0a878e690b9af2a 100644 --- a/features/org.jkiss.dbeaver.ext.oracle.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ext.oracle.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ext.oracle.feature/pom.xml b/features/org.jkiss.dbeaver.ext.oracle.feature/pom.xml index e7e1437527254d0508b926a9114ae90340fc02a3..b534b5ef172169aac7e0d829e86aebcf5dd4e722 100644 --- a/features/org.jkiss.dbeaver.ext.oracle.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ext.oracle.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.oracle.feature - 2.1.69 + 2.1.70 eclipse-feature diff --git a/features/org.jkiss.dbeaver.ext.ui.svg.feature/feature.xml b/features/org.jkiss.dbeaver.ext.ui.svg.feature/feature.xml index 17f17932adfd2cca5ebb025b03cbd9c3060cd3e5..ca8f26cd6374f912b0fa6119abefbeaf02a11dc7 100644 --- a/features/org.jkiss.dbeaver.ext.ui.svg.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ext.ui.svg.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ext.ui.svg.feature/pom.xml b/features/org.jkiss.dbeaver.ext.ui.svg.feature/pom.xml index f5cc3fb0e09c57e943c60b3c895398c256c36a79..90a9fc223d7727636a866043b6b639bf8d7adbc9 100644 --- a/features/org.jkiss.dbeaver.ext.ui.svg.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ext.ui.svg.feature/pom.xml @@ -9,7 +9,7 @@ ../../ org.jkiss.dbeaver.ext.ui.svg.feature - 1.0.20 + 1.0.21 eclipse-feature org.jkiss.dbeaver diff --git a/features/org.jkiss.dbeaver.ext.wmi.feature/feature.xml b/features/org.jkiss.dbeaver.ext.wmi.feature/feature.xml index 0895f8441b48bce2d116d3c981afcdb0c3de2574..08af0f544621c8969478dd1edffd29a9312e15aa 100644 --- a/features/org.jkiss.dbeaver.ext.wmi.feature/feature.xml +++ b/features/org.jkiss.dbeaver.ext.wmi.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.ext.wmi.feature/pom.xml b/features/org.jkiss.dbeaver.ext.wmi.feature/pom.xml index 49a3e334d500d89ab867fca7674231a459f4d153..f7f68c4e738735e680dc778a11f462d524832670 100644 --- a/features/org.jkiss.dbeaver.ext.wmi.feature/pom.xml +++ b/features/org.jkiss.dbeaver.ext.wmi.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.wmi.feature - 2.0.86 + 2.0.87 eclipse-feature diff --git a/features/org.jkiss.dbeaver.net.sshj.feature/feature.xml b/features/org.jkiss.dbeaver.net.sshj.feature/feature.xml index 099d90546650ca515b3b69e0534d078fefd23917..37dc6676c2f645ae8ff282b46031a118f7d80e6e 100644 --- a/features/org.jkiss.dbeaver.net.sshj.feature/feature.xml +++ b/features/org.jkiss.dbeaver.net.sshj.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.net.sshj.feature/pom.xml b/features/org.jkiss.dbeaver.net.sshj.feature/pom.xml index 3efda1a6a31c7bfacdb2ead6cf642cc555e2b88d..f31dfae7f2892a4348b0c7364992e801ad90597f 100644 --- a/features/org.jkiss.dbeaver.net.sshj.feature/pom.xml +++ b/features/org.jkiss.dbeaver.net.sshj.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.net.sshj.feature - 1.0.5 + 1.0.6 eclipse-feature diff --git a/features/org.jkiss.dbeaver.rcp.feature/feature.xml b/features/org.jkiss.dbeaver.rcp.feature/feature.xml index dd82ed471afda52b6fa2b18938c1e29e0952b254..f17bb4d9c52644559aab1444b28c09bce092338e 100644 --- a/features/org.jkiss.dbeaver.rcp.feature/feature.xml +++ b/features/org.jkiss.dbeaver.rcp.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.rcp.feature/pom.xml b/features/org.jkiss.dbeaver.rcp.feature/pom.xml index d87ca58558b8491e7a3eca06d51da03e4df0806a..c2681bdb0cc33ae3a6d8d4f7eb4353f43860b2ac 100644 --- a/features/org.jkiss.dbeaver.rcp.feature/pom.xml +++ b/features/org.jkiss.dbeaver.rcp.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.rcp.feature - 2.1.59 + 2.1.60 eclipse-feature diff --git a/features/org.jkiss.dbeaver.runtime.feature/feature.xml b/features/org.jkiss.dbeaver.runtime.feature/feature.xml index 282154d7fb2abc932d758887d7885579f99a9bd8..8242f1dca9c6af7cf18fdca8c9780e8534b09665 100644 --- a/features/org.jkiss.dbeaver.runtime.feature/feature.xml +++ b/features/org.jkiss.dbeaver.runtime.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.runtime.feature/pom.xml b/features/org.jkiss.dbeaver.runtime.feature/pom.xml index ca043763364d5e1c255e054e5412c9825bb3244d..05b7802ba8d09225845150242b085d706cc58cf7 100644 --- a/features/org.jkiss.dbeaver.runtime.feature/pom.xml +++ b/features/org.jkiss.dbeaver.runtime.feature/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.runtime.feature - 5.0.6 + 5.1.0 eclipse-feature diff --git a/features/org.jkiss.dbeaver.standalone.feature/feature.xml b/features/org.jkiss.dbeaver.standalone.feature/feature.xml index 5cd408d44ec5212682e6ca217b7f252db7967cb6..06447fcbfd8cf821a7e9e5b48d2fa219d8b24f9d 100644 --- a/features/org.jkiss.dbeaver.standalone.feature/feature.xml +++ b/features/org.jkiss.dbeaver.standalone.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/features/org.jkiss.dbeaver.standalone.feature/pom.xml b/features/org.jkiss.dbeaver.standalone.feature/pom.xml index d106baab6705ce4112936a53aa71440df5695b02..00ee1e3f4a7f307691e516c58f62f20f3c4965e7 100644 --- a/features/org.jkiss.dbeaver.standalone.feature/pom.xml +++ b/features/org.jkiss.dbeaver.standalone.feature/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.standalone.feature - 5.0.6 + 5.1.0 eclipse-feature diff --git a/nls/bundles/org.jkiss.dbeaver.core.application.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.core.application.nls/META-INF/MANIFEST.MF index 7b7d112599577d056195462f0768066322471d7b..8aa42f774900b237704902ec0149b9d68441a4a6 100644 --- a/nls/bundles/org.jkiss.dbeaver.core.application.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.core.application.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.core.application.nls -Bundle-Version: 5.0.6 -Bundle-Release-Date: 20180528 +Bundle-Version: 5.1.0 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.core.application Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.core.application.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.core.application.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..4dce6dd379780d204e129fff4572cd2d93ad5574 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.core.application.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,91 @@ +Bundle-Vendor = JKISS +Bundle-Name = DBeaver Standalone + +productName = DBeaver +productTitle = DBeaver - Universal Database Manager +productCopyright = (C) 2018 JKISS project +productSubTitle = Universal Database Manager +productWebsite = https://dbeaver.io/ +productEmail = serge@jkiss.org +aboutText = DBeaver - Universal Database Manager +extension.standalone.name = DBeaver Standalone + +view.progress.title =\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30BF\u30B9\u30AF +view.search.title =\u30B5\u30FC\u30C1 +view.templates.title =\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 + +menu.edit =\u7DE8\u96C6 +menu.navigate =\u30CA\u30D3\u30B2\u30FC\u30C8\u3059\u308B +menu.navigation =\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 + +command.org.eclipse.ui.window.customizePerspective.label =\u30D1\u30FC\u30B9\u30DA\u30AF\u30C6\u30A3\u30D6\u306E\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA + +pref.page.name.binary.editor =\u30D0\u30A4\u30CA\u30EA\u30A8\u30C7\u30A3\u30BF +pref.page.name.confirmations =\u78BA\u8A8D +pref.page.name.connectionTypes =\u63A5\u7D9A\u30BF\u30A4\u30D7 +pref.page.name.connections =\u63A5\u7D9A +pref.page.name.data.formats =\u30C7\u30FC\u30BF\u5F62\u5F0F +pref.page.name.db.configuration =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +pref.page.name.db.editors =\u7DE8\u96C6\u8005 +pref.page.name.drivers =\u30C9\u30E9\u30A4\u30D0 +pref.page.name.drivers.maven =Maven +pref.page.name.entity.editor =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30A8\u30C7\u30A3\u30BF +pref.page.name.meta =\u30E1\u30BF\u30C7\u30FC\u30BF +pref.page.name.navigator =\u30CA\u30D3\u30B2\u30FC\u30BF +pref.page.name.query.manager =\u30AF\u30A8\u30EA\u30DE\u30CD\u30FC\u30B8\u30E3 +pref.page.name.resources =\u30EA\u30BD\u30FC\u30B9 +pref.page.name.errorHandle =\u30A8\u30E9\u30FC\u30CF\u30F3\u30C9\u30EB +pref.page.name.errorLogs =\u30A8\u30E9\u30FC\u30ED\u30B0 +pref.page.name.resultset =\u7D50\u679C\u30BB\u30C3\u30C8 +pref.page.name.resultset.editors =\u7DE8\u96C6\u8005 +pref.page.name.resultset.presentation =\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3 +pref.page.name.sql.completion =SQL\u306E\u5B8C\u4E86 +pref.page.name.sql.editor =SQL\u30A8\u30C7\u30A3\u30BF +pref.page.name.sql.execute =SQL\u51E6\u7406 +pref.page.name.sql.format =SQL\u66F8\u5F0F\u8A2D\u5B9A +pref.page.name.sql.templates =\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 + +activity.hideE4Activity.name =\u30E1\u30CB\u30E5\u30FC\u3068\u30C4\u30FC\u30EB\u30D0\u30FC\u306E\u975E\u8868\u793A\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 + +command.org.jkiss.dbeaver.core.edit.copy.name =\u30B3\u30D4\u30FC +command.org.jkiss.dbeaver.core.edit.copy.special.name =\u9ad8\u5ea6\u306a\u30b3\u30d4\u30fc +command.org.jkiss.dbeaver.core.edit.cut.name =\u30AB\u30C3\u30C8 +command.org.jkiss.dbeaver.core.edit.delete.name =\u524A\u9664 +command.org.jkiss.dbeaver.core.edit.findreplace.name =\u691c\u7d22\u3068\u7f6e\u63db +command.org.jkiss.dbeaver.core.edit.lowercase.name =\u5C0F\u6587\u5B57\u306B\u3059\u308B +command.org.jkiss.dbeaver.core.edit.multicomment.name =\u30D6\u30ED\u30C3\u30AF\u30B3\u30E1\u30F3\u30C8\u306E\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.core.edit.paste.name =\u30DA\u30FC\u30B9\u30C8 +command.org.jkiss.dbeaver.core.edit.redo.name =\u3084\u308A\u76F4\u3057 +command.org.jkiss.dbeaver.core.edit.singlecomment.name =\u30C8\u30B0\u30EB\u30E9\u30A4\u30F3\u30B3\u30E1\u30F3\u30C8 +command.org.jkiss.dbeaver.core.edit.togglewordwrap.name =\u30EF\u30FC\u30C9\u30E9\u30C3\u30D7\u306E\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.core.edit.undo.name =\u5143\u306B\u623B\u3059 +command.org.jkiss.dbeaver.core.edit.uppercase.name =\u5927\u6587\u5B57\u306B +command.org.jkiss.dbeaver.core.file.close.name =\u9589\u3058\u308B +command.org.jkiss.dbeaver.core.file.exit.name =\u7d42\u4e86 +command.org.jkiss.dbeaver.core.file.export.name =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +command.org.jkiss.dbeaver.core.file.import.name =\u30A4\u30F3\u30DD\u30FC\u30C8 +command.org.jkiss.dbeaver.core.file.new.name =\u65b0\u898f\u4f5c\u6210 +command.org.jkiss.dbeaver.core.file.print.name =\u5370\u5237 +command.org.jkiss.dbeaver.core.file.properties.name =\u30D7\u30ED\u30D1\u30C6\u30A3 +command.org.jkiss.dbeaver.core.file.property.name =\u30D7\u30ED\u30D1\u30C6\u30A3 +command.org.jkiss.dbeaver.core.file.refresh.name =\u66f4\u65b0\u3059\u308b +command.org.jkiss.dbeaver.core.file.rename.name =\u540D\u524D\u3092\u5909\u66F4\u3059\u308B +command.org.jkiss.dbeaver.core.file.save.name =\u4e0a\u66f8\u304d\u4fdd\u5b58 +command.org.jkiss.dbeaver.core.file.saveas.name =\u540D\u524D\u3092\u4ED8\u3051\u3066\u4FDD\u5B58 +command.org.jkiss.dbeaver.core.navigator.backwardHistory.name =\u5f8c\u65b9\u306e\u5c65\u6b74 +command.org.jkiss.dbeaver.core.navigator.bookmark.add.name =\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u8FFD\u52A0 +command.org.jkiss.dbeaver.core.navigator.forwardHistory.name =\u524D\u65B9\u306E\u5c65\u6b74 +command.org.jkiss.dbeaver.core.navigator.openResource.name =\u30ea\u30bd\u30fc\u30b9\u3092\u958b\u304f... +command.org.jkiss.dbeaver.core.object.find.description =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u691C\u7D22\u3059\u308B +command.org.jkiss.dbeaver.core.object.find.name =\u691C\u7D22\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +command.org.jkiss.dbeaver.core.window.customizePerspective.name =\u30D1\u30FC\u30B9\u30DA\u30AF\u30C6\u30A3\u30D6\u306E\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +command.org.jkiss.dbeaver.core.window.navigation.name =\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 +command.org.jkiss.dbeaver.core.window.navigation.nextEditor.name =\u6B21\u306E\u30A8\u30C7\u30A3\u30BF +command.org.jkiss.dbeaver.core.window.navigation.nextSubTab.name =\u6B21\u306E\u30B5\u30D6\u30BF\u30D6 +command.org.jkiss.dbeaver.core.window.navigation.nextTab.name =\u6B21\u306E\u30BF\u30D6 +command.org.jkiss.dbeaver.core.window.navigation.previousEditor.name =\u524D\u306E\u30A8\u30C7\u30A3\u30BF +command.org.jkiss.dbeaver.core.window.navigation.previousSubTab.name =\u524D\u306E\u30B5\u30D6\u30BF\u30D6 +command.org.jkiss.dbeaver.core.window.navigation.previousTab.name =\u524D\u306E\u30BF\u30D6 +command.org.jkiss.dbeaver.core.window.navigation.switchToEditor.name =\u30A8\u30C7\u30A3\u30BF\u306B\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.core.window.preferences.name =\u8A2D\u5B9A +command.org.jkiss.dbeaver.core.window.resetPerspective.name =\u30D1\u30FC\u30B9\u30DA\u30AF\u30C6\u30A3\u30D6\u306E\u30EA\u30BB\u30C3\u30C8 diff --git a/nls/bundles/org.jkiss.dbeaver.core.application.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.core.application.nls/pom.xml index 8276d441381bf0841b543bca547cbcab73955e15..1fb6619160562263cdb8021080f344d3b157d696 100644 --- a/nls/bundles/org.jkiss.dbeaver.core.application.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.core.application.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.core.application.nls - 5.0.6 + 5.1.0 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/META-INF/MANIFEST.MF index 39dee04c03bb2436afc265d3a89c045f40e7b4fb..5b8d9464f04dfe80db61e860f0fee2a6a014eb3d 100644 --- a/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.core.eclipse.nls -Bundle-Version: 5.0.6 -Bundle-Release-Date: 20180528 +Bundle-Version: 5.1.0 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.core.eclipse Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..dee712b988dc7c86e22fab01e2bf5ca55e81b8ef --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,39 @@ + +Bundle-Vendor = JKISS +Bundle-Name = DBeaver Eclipse Plugin + +productName=DBeaver +productTitle=Universal Database Manager +productCopyright=(C) 2018 JKISS +productSubTitle=DBeaver CE Eclipse Plugin +productWebsite=https://dbeaver.io/ +productEmail=support@jkiss.org + +menu.edit=\u7DE8\u96C6 +menu.navigate=\u30CA\u30D3\u30B2\u30FC\u30C8\u3059\u308B + +pref.page.name.db.configuration=DBeaver +pref.page.name.data.formats=\u30C7\u30FC\u30BF\u5F62\u5F0F +pref.page.name.query.manager=\u30AF\u30A8\u30EA\u30DE\u30CD\u30FC\u30B8\u30E3 +pref.page.name.db.editors=\u7DE8\u96C6\u8005 +pref.page.name.sql.execute=SQL\u51E6\u7406 +pref.page.name.sql.completion=SQL\u306E\u5B8C\u4E86 +pref.page.name.sql.format=SQL\u66F8\u5F0F\u8A2D\u5B9A +pref.page.name.sql.editor=SQL\u30A8\u30C7\u30A3\u30BF +pref.page.name.sql.templates =\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +pref.page.name.entity.editor=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30A8\u30C7\u30A3\u30BF +pref.page.name.binary.editor=\u30D0\u30A4\u30CA\u30EA\u30A8\u30C7\u30A3\u30BF +pref.page.name.db.ui=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 +pref.page.name.drivers=\u30C9\u30E9\u30A4\u30D0 +pref.page.name.drivers.maven=Maven +pref.page.name.connectionTypes=\u63A5\u7D9A\u30BF\u30A4\u30D7 +pref.page.name.navigator=\u30CA\u30D3\u30B2\u30FC\u30BF +pref.page.name.resources=\u30EA\u30BD\u30FC\u30B9 +pref.page.name.confirmations=\u78BA\u8A8D +pref.page.name.errorHandle=\u30A8\u30E9\u30FC\u30CF\u30F3\u30C9\u30EB +pref.page.name.errorLogs=\u30A8\u30E9\u30FC\u30ED\u30B0 +pref.page.name.resultset=\u7D50\u679C\u30BB\u30C3\u30C8 +pref.page.name.resultset.editors=\u7DE8\u96C6\u8005 +pref.page.name.resultset.presentation=\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3 +pref.page.name.meta=\u30E1\u30BF\u30C7\u30FC\u30BF +pref.page.name.connections=\u63A5\u7D9A diff --git a/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/pom.xml index 112c1aee3b5b63382414bb1ae3e8122749f1d083..335eecaf4290ba69776b413da4d572f359cb40fa 100644 --- a/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.core.eclipse.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.core.eclipse.nls - 5.0.6 + 5.1.0 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.core.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.core.nls/META-INF/MANIFEST.MF index e268e6783aac8d14d0266efc82901bb4ef32ece6..59787492dae0647bf8144e5dda25a3a93da72604 100644 --- a/nls/bundles/org.jkiss.dbeaver.core.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.core.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.core.nls -Bundle-Version: 5.0.6 -Bundle-Release-Date: 20180528 +Bundle-Version: 5.1.0 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.core Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.core.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.core.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..89dd4877d4ef98204c7a209e85459f0dc1bc82a2 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.core.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,644 @@ + +Bundle-Vendor =JKISS +Bundle-Name =DBeaver\u30B3\u30A2\u30D7\u30E9\u30B0\u30A4\u30F3 + +extension-point.org.jkiss.dbeaver.pluginService.name =\u30D7\u30E9\u30B0\u30A4\u30F3\u30B5\u30FC\u30D3\u30B9 +extension-point.org.jkiss.dbeaver.mavenRepository.name =Maven\u30EA\u30DD\u30B8\u30C8\u30EA\u8A2D\u5B9A +extension-point.org.jkiss.dbeaver.dataSourceProvider.name =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30D7\u30ED\u30D0\u30A4\u30C0 +extension-point.org.jkiss.dbeaver.databaseEditor.name =\u30AB\u30B9\u30BF\u30E0\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30A8\u30C7\u30A3\u30BF +extension-point.org.jkiss.dbeaver.dataTypeProvider.name =\u30C7\u30FC\u30BF\u578B\u30D7\u30ED\u30D0\u30A4\u30C0 +extension-point.org.jkiss.dbeaver.dataManager.name =\u30C7\u30FC\u30BF\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +extension-point.org.jkiss.dbeaver.dataTransfer.name =\u30C7\u30FC\u30BF\u8EE2\u9001\u30D7\u30ED\u30D0\u30A4\u30C0 +extension-point.org.jkiss.dbeaver.dataFormatter.name =\u30C7\u30FC\u30BF\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF +extension-point.org.jkiss.dbeaver.aggregateFunction.name =\u96C6\u8A08\u95A2\u6570 +extension-point.org.jkiss.dbeaver.sqlCommand.name =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u30B3\u30DE\u30F3\u30C9 +extension-point.org.jkiss.dbeaver.sqlFormatter.name =SQL\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF +extension-point.org.jkiss.dbeaver.resourceHandler.name =\u30EA\u30BD\u30FC\u30B9\u30CF\u30F3\u30C9\u30E9 +extension-point.org.jkiss.dbeaver.networkHandler.name =\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30CF\u30F3\u30C9\u30E9 +extension-point.org.jkiss.dbeaver.resources.name =\u30EA\u30BD\u30FC\u30B9 +extension-point.org.jkiss.dbeaver.resultset.presentation.name =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3 +extension-point.org.jkiss.dbeaver.resultset.panel.name =\u7D50\u679C\u30BB\u30C3\u30C8\u30D1\u30CD\u30EB +extension-point.org.jkiss.dbeaver.sql.covertname =SQL\u30C6\u30AD\u30B9\u30C8\u5909\u63DB +extension-point.org.jkiss.dbeaver.tools.name =\u30C4\u30FC\u30EB +extension-point.org.jkiss.dbeaver.product.bundles.name =\u88FD\u54C1\u30D0\u30F3\u30C9\u30EB +extension-point.org.jkiss.dbeaver.workbenchHandler.name =\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u30CF\u30F3\u30C9\u30E9 +extension-point.org.jkiss.dbeaver.language.name =\u8A00\u8A9E +extension-point.org.jkiss.dbeaver.ui.propertyConfigurator.name =UI\u30D7\u30ED\u30D1\u30C6\u30A3\u30B3\u30F3\u30D5\u30A3\u30B0\u30EC\u30FC\u30BF + +content-type.org.jkiss.dbeaver.sql.name =SQL\u30B9\u30AF\u30EA\u30D7\u30C8 +content-type.org.jkiss.dbeaver.bookmark.name =\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF + +view.database.navigator.title=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30CA\u30D3\u30B2\u30FC\u30BF +view.project.navigator.title=\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +view.project.explorer.title=\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30A8\u30AF\u30B9\u30D7\u30ED\u30FC\u30E9 +view.query.manager.title=\u30AF\u30A8\u30EA\u30DE\u30CD\u30FC\u30B8\u30E3 +view.shell.process.title=\u30D7\u30ED\u30BB\u30B9 +view.sql.results.title=\u30C7\u30FC\u30BF +view.database.output.title=\u51FA\u529B + +menu.navigate=\u30CA\u30D3\u30B2\u30FC\u30C8\u3059\u308B + +language.en.label=English +language.ja.label=Japanese +language.zh.label=Chinese +language.ru.label=Russian +language.fr.label=French +language.de.label=German +language.it.label=Italian + +editor.sql.name=SQL\u30A8\u30C7\u30A3\u30BF +editor.folder.name=\u30D5\u30A9\u30EB\u30C0\u30A8\u30C7\u30A3\u30BF +editor.entity.name=\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30A8\u30C7\u30A3\u30BF +editor.lob.name=\u30E9\u30FC\u30B8\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30A8\u30C7\u30A3\u30BF +editor.dbdata.name=\u30C7\u30FC\u30BF +editor.dbdata.description=\u30C6\u30FC\u30D6\u30EB\u30C7\u30FC\u30BF + +command.org.eclipse.ui.edit.copy.name =\u30B3\u30D4\u30FC +command.org.eclipse.ui.edit.delete.name =\u524A\u9664 +command.org.eclipse.ui.edit.paste.name =\u30DA\u30FC\u30B9\u30C8 +command.org.eclipse.ui.edit.rename.name =\u540D\u524D\u3092\u5909\u66F4\u3059\u308B +command.org.eclipse.ui.navigate.collapseAll.name =\u3059\u3079\u3066\u3092\u6298\u308A\u305F\u305F\u3080 +command.org.eclipse.ui.navigate.expandAll.name =\u3059\u3079\u3066\u5C55\u958B + +command.org.eclipse.ui.views.showView.queryManager =\u30AF\u30A8\u30EA\u30DE\u30CD\u30FC\u30B8\u30E3 +command.org.eclipse.ui.views.showView.label =\u30AF\u30A8\u30EA\u30DE\u30CD\u30FC\u30B8\u30E3 + +command.org.jkiss.dbeaver.ui.tools.menu.description =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C4\u30FC\u30EB\u3067\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30E1\u30CB\u30E5\u30FC\u3092\u8868\u793A +command.org.jkiss.dbeaver.ui.tools.menu.name =\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30C4\u30FC\u30EB +command.org.jkiss.dbeaver.ui.tools.select.schema.name =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30AD\u30FC\u30DE\u306E\u9078\u629E +command.org.jkiss.dbeaver.ui.tools.select.schema.description =\u73FE\u5728\u306E\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30AD\u30FC\u30DE\u3092\u9078\u629E\u3059\u308B +command.org.jkiss.dbeaver.ui.tools.select.connection.name =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u63A5\u7D9A\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.ui.tools.select.connection.description =\u73FE\u5728\u306E\u30A8\u30C7\u30A3\u30BF\u306E\u63A5\u7D9A\u3092\u9078\u629E + +command.org.jkiss.dbeaver.core.driver.manager.name=\u30C9\u30E9\u30A4\u30D0\u30FC\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +command.org.jkiss.dbeaver.core.driver.manager.description=\u30C9\u30E9\u30A4\u30D0\u30FC\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +command.org.jkiss.dbeaver.core.new.connection.name=\u65B0\u3057\u3044\u63A5\u7D9A +command.org.jkiss.dbeaver.core.new.connection.description=\u65B0\u3057\u3044\u63A5\u7D9A\u30A6\u30A3\u30B6\u30FC\u30C9 +command.org.jkiss.dbeaver.core.new.folder.name=\u65B0\u3057\u3044\u30D5\u30A9\u30EB\u30C0 +command.org.jkiss.dbeaver.core.new.folder.description=\u65B0\u3057\u3044\u63A5\u7D9A\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.migrate.connection.name=\u63A5\u7D9A\u3092\u5909\u66f4\u3059\u308b +command.org.jkiss.dbeaver.core.migrate.connection.description=\u5225\u306E\u30C9\u30E9\u30A4\u30D0\u306B\u63A5\u7D9A\u3092\u5909\u66f4\u3059\u308b +command.org.jkiss.dbeaver.core.navigator.linkeditor.name=\u30A8\u30C7\u30A3\u30BF\u3068\u306E\u30EA\u30F3\u30AF +command.org.jkiss.dbeaver.core.navigator.linkeditor.description=\u30A8\u30C7\u30A3\u30BF\u3068\u306E\u30EA\u30F3\u30AF +command.org.jkiss.dbeaver.core.navigator.set.active.name=\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.navigator.set.active.description=\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.navigator.bookmark.add.name=\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u8FFD\u52A0 +command.org.jkiss.dbeaver.core.navigator.bookmark.add.description=\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u8FFD\u52A0 +command.org.jkiss.dbeaver.core.navigator.view.configure.name=\u5217\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.navigator.view.configure.description=\u5217\u306E\u53EF\u8996\u6027\u3092\u69CB\u6210\u3059\u308B + +command.org.jkiss.dbeaver.core.project.create.name=\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4F5C\u6210 +command.org.jkiss.dbeaver.core.project.create.description=\u65B0\u3057\u3044\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.project.refresh.name=\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3059\u308B +command.org.jkiss.dbeaver.core.project.refresh.description=\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u5168\u4F53\u3092\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3059\u308B +command.org.jkiss.dbeaver.core.project.active.name=\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.project.active.description=\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.project.select.name=\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E +command.org.jkiss.dbeaver.core.project.select.description=\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E +command.org.jkiss.dbeaver.core.resource.create.folder.name=\u65B0\u3057\u3044\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.resource.create.folder.description=\u65B0\u3057\u3044\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.resource.link.file.name=\u30EA\u30F3\u30AF\u30D5\u30A1\u30A4\u30EB +command.org.jkiss.dbeaver.core.resource.link.file.description=\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u4E0A\u306E\u3044\u304F\u3064\u304B\u306E\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30F3\u30AF\u3092\u4F5C\u6210\u3059\u308B +commandParameter.org.jkiss.dbeaver.core.resource.link.file.contenttype.name=\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u30BF\u30A4\u30D7 +command.org.jkiss.dbeaver.core.resource.link.folder.name=\u30EA\u30F3\u30AF\u30D5\u30A9\u30EB\u30C0 +command.org.jkiss.dbeaver.core.resource.link.folder.description=\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u4E0A\u306E\u3042\u308B\u30D5\u30A9\u30EB\u30C0\u3078\u306E\u30EA\u30F3\u30AF\u3092\u4F5C\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.sql.script.associate.name=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3068\u306E\u95A2\u9023\u4ED8\u3051 +command.org.jkiss.dbeaver.core.sql.script.associate.description=\u9078\u629E\u3057\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306B\u95A2\u9023\u4ED8\u3051\u308B +command.org.jkiss.dbeaver.core.sql.editor.create.label =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u4F5C\u6210 + +command.org.jkiss.dbeaver.core.connect.name=\u63A5\u7D9A\u3059\u308B +command.org.jkiss.dbeaver.core.connect.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u63A5\u7D9A\u3059\u308B +command.org.jkiss.dbeaver.core.disconnect.name=\u5207\u65AD\u3059\u308B +command.org.jkiss.dbeaver.core.disconnect.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u5207\u65AD\u3059\u308B +command.org.jkiss.dbeaver.core.disconnectAll.name=\u3059\u3079\u3066\u3092\u5207\u65AD\u3059\u308B +command.org.jkiss.dbeaver.core.disconnectAll.description=\u3059\u3079\u3066\u306E\u958B\u3044\u3066\u3044\u308B\u63A5\u7D9A\u3092\u9589\u3058\u308B +command.org.jkiss.dbeaver.core.invalidate.name=\u7121\u52B9\u5316/\u518D\u63A5\u7D9A +command.org.jkiss.dbeaver.core.invalidate.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A\u306E\u7121\u52B9\u5316/\u518D\u63A5\u7D9A +command.org.jkiss.dbeaver.core.commit.label =\u30B3\u30DF\u30C3\u30C8 +command.org.jkiss.dbeaver.core.commit.name=\u30B3\u30DF\u30C3\u30C8 +command.org.jkiss.dbeaver.core.commit.description=\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u5909\u66F4\u3092\u30B3\u30DF\u30C3\u30C8\u3059\u308B +command.org.jkiss.dbeaver.core.rollbacklabel =\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF +command.org.jkiss.dbeaver.core.rollback.name=\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF +command.org.jkiss.dbeaver.core.rollback.description=\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u5909\u66F4\u3092\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF\u3059\u308B +command.org.jkiss.dbeaver.core.txn.autocommit.name=\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8 +command.org.jkiss.dbeaver.core.txn.autocommit.description=\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u30E2\u30FC\u30C9\u3092\u5909\u66F4\u3059\u308B +command.org.jkiss.dbeaver.core.txn.log.name=\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u30ED\u30B0 +command.org.jkiss.dbeaver.core.txn.log.description=\u73FE\u5728\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u30ED\u30B0\uFF08\u5B9F\u884C\u3055\u308C\u305F\u30AF\u30A8\u30EA\uFF09 +command.org.jkiss.dbeaver.core.txn.pending.name=\u4FDD\u7559\u4E2D\u306E\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3 +command.org.jkiss.dbeaver.core.txn.pending.description=\u4FDD\u7559\u4E2D\u306E\u3059\u3079\u3066\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306E\u30EA\u30B9\u30C8 +command.org.jkiss.dbeaver.core.transaction_mode.name=\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u30E2\u30FC\u30C9 + +command.org.jkiss.dbeaver.core.procedure.execute.name=\u30B9\u30C8\u30A2\u30C9\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.core.procedure.execute.description=\u30B9\u30C8\u30A2\u30C9\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u306E\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3057\u3066\u65B0\u3057\u3044SQL\u30B3\u30F3\u30BD\u30FC\u30EB\u3092\u958B\u304F + +command.org.jkiss.dbeaver.core.sql.editor.open.name=SQL\u30A8\u30C7\u30A3\u30BF +command.org.jkiss.dbeaver.core.sql.editor.open.description=SQL\u30A8\u30C7\u30A3\u30BF\u3092\u958B\u304F\uFF08\u65E2\u5B58\u307E\u305F\u306F\u65B0\u898F\uFF09 +command.org.jkiss.dbeaver.core.sql.editor.recent.name=\u6700\u8FD1\u306ESQL\u30A8\u30C7\u30A3\u30BF +command.org.jkiss.dbeaver.core.sql.editor.recent.description=\u6700\u65B0\u306ESQL\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u958B\u304F +command.org.jkiss.dbeaver.core.sql.editor.create.name=\u65B0\u3057\u3044SQL\u30A8\u30C7\u30A3\u30BF +command.org.jkiss.dbeaver.core.sql.editor.create.description=\u65B0\u3057\u3044SQL\u30A8\u30C7\u30A3\u30BF\u3092\u958B\u304F\uFF08\u65B0\u3057\u3044\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u4F5C\u6210\u3059\u308B\uFF09 +command.org.jkiss.dbeaver.core.sql.editor.forSelection.name=SQL\u30B3\u30F3\u30BD\u30FC\u30EB\u3067\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u8FBC\u3080 +command.org.jkiss.dbeaver.core.sql.editor.forSelection.description=\u30C7\u30FC\u30BF\u8AAD\u307F\u8FBC\u307F\u30AF\u30A8\u30EA\u3067\u65B0\u3057\u3044SQL\u30B3\u30F3\u30BD\u30FC\u30EB\u3092\u958B\u304F +command.org.jkiss.dbeaver.core.object.open.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u7DE8\u96C6 +command.org.jkiss.dbeaver.core.object.open.description=\u30AA\u30FC\u30D7\u30F3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30A8\u30C7\u30A3\u30BF +command.org.jkiss.dbeaver.core.object.create.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u4F5C\u6210 +command.org.jkiss.dbeaver.core.object.create.description=\u65B0\u3057\u3044\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.object.delete.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u524A\u9664 +command.org.jkiss.dbeaver.core.object.delete.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u524A\u9664 +command.org.jkiss.dbeaver.core.object.filter.config.name=\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u69CB\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.object.filter.config.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30D5\u30A3\u30EB\u30BF\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.object.filter.clear.name=\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u30AF\u30EA\u30A2 +command.org.jkiss.dbeaver.core.object.filter.clear.description=\u30D5\u30A3\u30EB\u30BF\u8A2D\u5B9A\u3092\u30AF\u30EA\u30A2\u3059\u308B +command.org.jkiss.dbeaver.core.object.filter.toggle.name=\u30C8\u30B0\u30EB\u30D5\u30A3\u30EB\u30BF +command.org.jkiss.dbeaver.core.object.filter.toggle.description=\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u3092\u30C8\u30B0\u30EB\uFF08\u6709\u52B9/\u7121\u52B9\uFF09 +command.org.jkiss.dbeaver.core.object.filter.add.exclude.name=\u9078\u629E\u3057\u305F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u975E\u8868\u793A\u306B\u3059\u308B +command.org.jkiss.dbeaver.core.object.filter.add.exclude.description=\u9078\u629E\u3057\u305F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u975E\u8868\u793A\u306B\u3059\u308B +command.org.jkiss.dbeaver.core.object.filter.add.include.name=\u9078\u629E\u3057\u305F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u307F\u3092\u8868\u793A\u3059\u308B +command.org.jkiss.dbeaver.core.object.filter.add.include.description=\u9078\u629E\u3057\u305F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u307F\u3092\u8868\u793A\u3059\u308B +command.org.jkiss.dbeaver.core.object.goto.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u958B\u304F... +command.org.jkiss.dbeaver.core.object.goto.description=\u30AA\u30FC\u30D7\u30F3\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30E1\u30BF\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +command.org.jkiss.dbeaver.core.object.move.up.name=\u4E0A\u304C\u308B +command.org.jkiss.dbeaver.core.object.move.up.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u4E0A\u306B\u79FB\u52D5 +command.org.jkiss.dbeaver.core.object.move.down.name=\u4E0B\u306B\u79FB\u52D5 +command.org.jkiss.dbeaver.core.object.move.down.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u4E0B\u306B\u79FB\u52D5\u3059\u308B + +command.org.jkiss.dbeaver.ui.editors.sql.run.statement.name=SQL\u6587\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.statement.description=SQL\u6587\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.statementNew.name=\u65B0\u3057\u3044\u30BF\u30D6\u3067SQL\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.statementNew.description=\u65B0\u3057\u3044\u30BF\u30D6\u3067SQL\u6587\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.script.name=SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.script.description=\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.scriptNew.name=\u500B\u5225\u306E\u30BF\u30D6\u3067\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.scriptNew.description=\u5225\u306E\u7D50\u679C\u30BF\u30D6\u3067\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3092\u5B9F\u884C\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.count.name=\u884C\u6570\u306E\u9078\u629E +command.org.jkiss.dbeaver.ui.editors.sql.run.count.description=\u30AB\u30FC\u30BD\u30EB\u4E0B\u306E\u30AF\u30A8\u30EA\u306E\u884C\u6570\u3092\u9078\u629E +command.org.jkiss.dbeaver.ui.editors.sql.run.all.rows.name=\u3059\u3079\u3066\u306E\u884C\u3092\u9078\u629E +command.org.jkiss.dbeaver.ui.editors.sql.run.all.rows.description=\u3059\u3079\u3066\u306E\u884C\u3092\u9078\u629E\u3057\u3066\u8868\u793A\u3059\u308B\uFF08\u30D5\u30A7\u30C3\u30C1\u30B5\u30A4\u30BA\u5236\u9650\u306A\u3057\uFF09 +command.org.jkiss.dbeaver.ui.editors.sql.run.expression.name=SQL\u5F0F\u306E\u8A55\u4FA1 +command.org.jkiss.dbeaver.ui.editors.sql.run.expression.description=\u9078\u629E\u3057\u305FSQL\u5F0F\u306E\u5024\u306E\u9078\u629E +command.org.jkiss.dbeaver.ui.editors.sql.run.explain.name=\u5B9F\u884C\u8A08\u753B\u3092\u8AAC\u660E\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.run.explain.description=\u5B9F\u884C\u8A08\u753B\u3092\u8AAC\u660E\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.query.next.name=\u6B21\u306E\u30AF\u30A8\u30EA +command.org.jkiss.dbeaver.ui.editors.sql.query.next.description=\u6B21\u306E\u30AF\u30A8\u30EA\u306B\u5207\u308A\u66FF\u3048\u307E\u3059 +command.org.jkiss.dbeaver.ui.editors.sql.query.prev.name=\u4EE5\u524D\u306E\u30AF\u30A8\u30EA +command.org.jkiss.dbeaver.ui.editors.sql.query.prev.description=\u524D\u306E\u30AF\u30A8\u30EA\u306B\u5207\u308A\u66FF\u3048\u308B +command.org.jkiss.dbeaver.ui.editors.sql.show.output.name=\u30B5\u30FC\u30D0\u30FC\u306E\u51FA\u529B\u3092\u8868\u793A\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.show.output.description=\u30B5\u30FC\u30D0\u30FC\u306E\u51FA\u529B\u30B3\u30F3\u30BD\u30FC\u30EB\u3092\u8868\u793A\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.show.log.name=\u5B9F\u884C\u30ED\u30B0\u3092\u8868\u793A\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.show.log.description=SQL\u5B9F\u884C\u30ED\u30B0\u3092\u8868\u793A\u3059\u308B + +command.org.jkiss.dbeaver.ui.editors.sql.toggle.result.panel.name=\u7D50\u679C\u30D1\u30CD\u30EB\u306E\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.ui.editors.sql.toggle.result.panel.description=\u7D50\u679C\u30D1\u30CD\u30EB\u306E\u8868\u793A/\u975E\u8868\u793A +command.org.jkiss.dbeaver.ui.editors.sql.maximize.result.panel.name=\u7D50\u679C\u30D1\u30CD\u30EB\u3092\u6700\u5927\u5316\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.maximize.result.panel.description=\u7D50\u679C\u30D1\u30CD\u30EB\u3092\u6700\u5927\u5316/\u6B63\u898F\u5316\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.switch.panel.name=\u30A2\u30AF\u30C6\u30A3\u30D6\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048\u308B +command.org.jkiss.dbeaver.ui.editors.sql.switch.panel.description=\u30A2\u30AF\u30C6\u30A3\u30D6\u306ASQL\u30A8\u30C7\u30A3\u30BF\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048\u308B +command.org.jkiss.dbeaver.ui.editors.sql.export.data.name=\u30AF\u30A8\u30EA\u304B\u3089\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +command.org.jkiss.dbeaver.ui.editors.sql.export.data.description=\u73FE\u5728\u306E\u30AF\u30A8\u30EA\u306B\u3088\u3063\u3066\u8FD4\u3055\u308C\u305F\u30C7\u30FC\u30BF\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.navigate.object.name=\u516C\u958B\u5BA3\u8A00 +command.org.jkiss.dbeaver.ui.editors.sql.navigate.object.description=\u73FE\u5728\u306E\uFF08\u5F37\u8ABF\u8868\u793A\u3055\u308C\u3066\u3044\u308B\uFF09\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AA\u30FC\u30D7\u30F3\u30A8\u30C7\u30A3\u30BF +command.org.jkiss.dbeaver.ui.editors.sql.open.file.name=SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u30ED\u30FC\u30C9\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.open.file.description=\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30ED\u30FC\u30C9\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.save.file.name=SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u4FDD\u5B58\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.save.file.description=\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58 +command.org.jkiss.dbeaver.ui.editors.sql.morph.delimited.list.name=\u30E2\u30FC\u30D5\u3092\u533A\u5207\u308A\u30EA\u30B9\u30C8\u306B +command.org.jkiss.dbeaver.ui.editors.sql.morph.delimited.list.description=\u30E2\u30FC\u30D5\u3092\u533A\u5207\u308A\u30EA\u30B9\u30C8\u306B +command.org.jkiss.dbeaver.ui.editors.sql.comment.single.name=\u30C8\u30B0\u30EB\u30E9\u30A4\u30F3\u30B3\u30E1\u30F3\u30C8 +command.org.jkiss.dbeaver.ui.editors.sql.comment.single.description=\u4E00\u884C\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u307E\u305F\u306F\u524A\u9664\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.comment.multi.name=\u30D6\u30ED\u30C3\u30AF\u30B3\u30E1\u30F3\u30C8\u306E\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.ui.editors.sql.comment.multi.description=\u8907\u6570\u884C\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u307E\u305F\u306F\u524A\u9664\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.word.wrap.name=\u30EF\u30FC\u30C9\u30E9\u30C3\u30D7\u306E\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.ui.editors.sql.word.wrap.description=\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF\u306E\u30BD\u30D5\u30C8\u30EF\u30FC\u30C9\u30E9\u30C3\u30D4\u30F3\u30B0\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\u3002 +command.org.jkiss.dbeaver.ui.editors.sql.assist.templates.name=\u5B8C\u5168\u306A\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u540D +command.org.jkiss.dbeaver.ui.editors.sql.assist.templates.description=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u540D\u306E\u81EA\u52D5\u5B8C\u6210 +command.org.jkiss.dbeaver.ui.editors.sql.sync.connection.name=\u30CA\u30D3\u30B2\u30FC\u30BF\u304B\u3089\u63A5\u7D9A\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.sync.connection.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30CA\u30D3\u30B2\u30FC\u30BF\u9078\u629E\u304B\u3089\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u63A5\u7D9A\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.sync.auto.name=\u30CA\u30D3\u30B2\u30FC\u30BF\u3068\u306E\u81EA\u52D5\u540C\u671F\u63A5\u7D9A +command.org.jkiss.dbeaver.ui.editors.sql.sync.auto.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30CA\u30D3\u30B2\u30FC\u30BF\u9078\u629E\u3068\u306E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u63A5\u7D9A\u306E\u81EA\u52D5\u540C\u671F +command.org.jkiss.dbeaver.ui.editors.sql.rename.name=SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u540D\u524D\u3092\u5909\u66F4\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.rename.description=\u73FE\u5728\u306ESQL\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u540D\u524D\u3092\u5909\u66F4\u3059\u308B +command.org.jkiss.dbeaver.ui.editors.sql.close.tab.name=\u30BF\u30D6\u3092\u9589\u3058\u308B +command.org.jkiss.dbeaver.ui.editors.sql.close.tab.description=\u7D50\u679C\u30BF\u30D6\u3092\u9589\u3058\u308B + +command.org.jkiss.dbeaver.core.export.data.name=\u30C7\u30FC\u30BF\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +command.org.jkiss.dbeaver.core.export.data.description=\u30C7\u30FC\u30BF\u3092\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C6\u30FC\u30D6\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +command.org.jkiss.dbeaver.core.import.data.name=\u30C7\u30FC\u30BF\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 +command.org.jkiss.dbeaver.core.import.data.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u30C7\u30FC\u30BF\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B +command.org.jkiss.dbeaver.core.compare.objects.name=\u6BD4\u8F03 +command.org.jkiss.dbeaver.core.compare.objects.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u6BD4\u8F03 + +command.org.jkiss.dbeaver.core.resultset.toggleMode.name=\u30B0\u30EA\u30C3\u30C9/\u30EC\u30B3\u30FC\u30C9\u30D3\u30E5\u30FC\u306E\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.core.resultset.toggleMode.description=\u7D50\u679C\u3092\u5207\u308A\u66FF\u3048\u308B\u30B0\u30EA\u30C3\u30C9/\u30EC\u30B3\u30FC\u30C9\u30D3\u30E5\u30FC +command.org.jkiss.dbeaver.core.resultset.focus.filter.name=\u30D5\u30A3\u30EB\u30BF/\u30C7\u30FC\u30BF\u30A8\u30C7\u30A3\u30BF\u306E\u6709\u52B9\u5316 +command.org.jkiss.dbeaver.core.resultset.focus.filter.description=\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u30D5\u30A3\u30EB\u30BF\u30A8\u30C7\u30A3\u30BF/\u30C7\u30FC\u30BF\u30A8\u30C7\u30A3\u30BF\u306B\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.switchPresentation.name=\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3\u306E\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.core.resultset.switchPresentation.description=\u7D50\u679C\u306E\u8868\u793A\u3092\u5207\u308A\u66FF\u3048\u308B +command.org.jkiss.dbeaver.core.resultset.navigateLink.name=\u30EA\u30F3\u30AF\u3092\u30CA\u30D3\u30B2\u30FC\u30C8\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.navigateLink.description=\u5916\u90E8\u30AD\u30FC\u30EA\u30F3\u30AF\u306B\u5F93\u3046 +command.org.jkiss.dbeaver.core.resultset.grid.togglePreview.name=\u7D50\u679C\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048\u308B +command.org.jkiss.dbeaver.core.resultset.grid.togglePreview.description=\u4F59\u5206\u306A\u7D50\u679C\u30D1\u30CD\u30EB\u306E\u5207\u308A\u66FF\u3048 +command.org.jkiss.dbeaver.core.resultset.grid.copyColumnNames.name=\u5217\u540D\u3092\u30B3\u30D4\u30FC\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.grid.copyColumnNames.description=\u9078\u629E\u3057\u305F\u5217\u540D\u3092\u30B3\u30D4\u30FC +command.org.jkiss.dbeaver.core.resultset.grid.copyRowNames.name=\u884C\u756A\u53F7\u3092\u30B3\u30D4\u30FC\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.grid.copyRowNames.description=\u9078\u629E\u3057\u305F\u884C\u756A\u53F7\u3092\u30B3\u30D4\u30FC +command.org.jkiss.dbeaver.core.resultset.export.name=\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8... +command.org.jkiss.dbeaver.core.resultset.export.description=\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u5225\u306E\u30C6\u30FC\u30D6\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.first.name=\u6700\u521D\u306E\u884C +command.org.jkiss.dbeaver.core.resultset.row.first.description=\u6700\u521D\u306E\u884C\u306B\u79FB\u52D5\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.previous.name=\u524D\u306E\u884C +command.org.jkiss.dbeaver.core.resultset.row.previous.description=\u524D\u306E\u884C\u306B\u79FB\u52D5\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.next.name=\u6B21\u306E\u884C +command.org.jkiss.dbeaver.core.resultset.row.next.description=\u6B21\u306E\u884C\u306B\u79FB\u52D5\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.last.name=\u6700\u5F8C\u306E\u884C +command.org.jkiss.dbeaver.core.resultset.row.last.description=\u6700\u5F8C\u306E\u884C\u306B\u79FB\u52D5\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.fetch.page.name=\u6B21\u306E\u30DA\u30FC\u30B8\u3092\u53D6\u5F97\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.fetch.page.description=\u7D50\u679C\u306E\u6B21\u306E\u30DA\u30FC\u30B8\u3092\u53D6\u5F97\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.fetch.all.name=\u3059\u3079\u3066\u306E\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.fetch.all.description=\u3059\u3079\u3066\u306E\u884C\u3092\u30D5\u30A7\u30C3\u30C1\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.count.name=\u884C\u6570 +command.org.jkiss.dbeaver.core.resultset.count.description=\u5408\u8A08\u884C\u6570\u3092\u53D6\u5F97\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.edit.name=\u30BB\u30EB\u3092\u7DE8\u96C6\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.edit.description=\u5225\u306E\u30C0\u30A4\u30A2\u30ED\u30B0/\u30A8\u30C7\u30A3\u30BF\u3067\u30BB\u30EB\u5024\u3092\u7DE8\u96C6\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.edit.inline.name=\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6 +command.org.jkiss.dbeaver.core.resultset.row.edit.inline.description=\u30A4\u30F3\u30E9\u30A4\u30F3\u30A8\u30C7\u30A3\u30BF\u3067\u30BB\u30EB\u5024\u3092\u7DE8\u96C6\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.add.name=\u884C\u3092\u8FFD\u52A0\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.row.add.description=\u65B0\u3057\u3044\u884C\u3092\u8FFD\u52A0 +command.org.jkiss.dbeaver.core.resultset.row.copy.name=\u91CD\u8907\u3059\u308B\u884C +command.org.jkiss.dbeaver.core.resultset.row.copy.description=\u73FE\u5728\u306E\u884C\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059 +command.org.jkiss.dbeaver.core.resultset.row.delete.name=\u73FE\u5728\u306E\u884C\u3092\u524A\u9664 +command.org.jkiss.dbeaver.core.resultset.row.delete.description=\u73FE\u5728\u306E\u884C\u3092\u524A\u9664 +command.org.jkiss.dbeaver.core.resultset.cell.setNull.name=NULL\u306B\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.cell.setNull.description=\u30BB\u30EB\u306E\u5024\u3092NULL\u306B\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.cell.reset.name=\u30BB\u30EB\u306E\u5909\u66F4\u3092\u30EA\u30BB\u30C3\u30C8\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.cell.reset.description=\u30BB\u30EB\u3092\u5143\u306E\u5024\u306B\u30EA\u30BB\u30C3\u30C8\u3059\u308B + +command.org.jkiss.dbeaver.core.resultset.applyChanges.name=\u5909\u66F4\u3092\u9069\u7528\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.applyChanges.description=\u30C7\u30FC\u30BF\u5909\u66F4\u3092\u9069\u7528\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.rejectChanges.name=\u5909\u66F4\u3092\u62D2\u5426\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.rejectChanges.description=\u30C7\u30FC\u30BF\u5909\u66F4\u3092\u62D2\u5426\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.generateScript.name=\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u751F\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.generateScript.description=\u5909\u66F4\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u751F\u6210\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.cell.save.name=\u30BB\u30EB\u5024\u3092\u9069\u7528\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.cell.save.description=\u30BB\u30EB\u5024\u3092\u9069\u7528\u3059\u308B +command.org.jkiss.dbeaver.core.resultset.filterMenu.name=\u30D5\u30A3\u30EB\u30BF\u30E1\u30CB\u30E5\u30FC +command.org.jkiss.dbeaver.core.resultset.filterMenu.description=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30E1\u30CB\u30E5\u30FC\u306E\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0 +command.org.jkiss.dbeaver.core.resultset.filterMenu.distinct.name=\u5024\u3067\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0 +command.org.jkiss.dbeaver.core.resultset.filterMenu.distinct.description=\u4E00\u610F\u306E\u5C5E\u6027\u5024\u306B\u3088\u308B\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0 +command.org.jkiss.dbeaver.core.resultset.referencesMenu.name=\u30C6\u30FC\u30D6\u30EB\u306E\u53C2\u7167 +command.org.jkiss.dbeaver.core.resultset.referencesMenu.description=\u73FE\u5728\u306E\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3059\u308B\u30C6\u30FC\u30D6\u30EB\uFF08\u5916\u90E8\u30AD\u30FC\u4ED8\u304D\uFF09 +command.org.jkiss.dbeaver.core.resultset.toggleOrder.name=\u7D50\u679C\u306E\u30BD\u30D5\u30C8\u30AA\u30FC\u30C0\u30FC\u3092\u5207\u308A\u66FF\u3048\u307E\u3059 +command.org.jkiss.dbeaver.core.resultset.toggleOrder.description=\u7D50\u679C\u306E\u30BD\u30D5\u30C8\u30AA\u30FC\u30C0\u30FC\u3092\u5207\u308A\u66FF\u3048\u308B\uFF08\u6607\u9806/\u964D\u9806/\u30C7\u30D5\u30A9\u30EB\u30C8\uFF09 + + +command.org.jkiss.dbeaver.core.edit.copy.adv_info=\u9AD8\u5EA6\u306A\u60C5\u5831\u3092\u30B3\u30D4\u30FC\u3059\u308B +command.org.jkiss.dbeaver.core.edit.copy.special.label =\u9AD8\u5EA6\u306A\u30B3\u30D4\u30FC +command.org.jkiss.dbeaver.core.edit.copy.special.name=\u30A2\u30C9\u30D0\u30F3\u30B9\u30C8\u30FB\u30B3\u30D4\u30FC +command.org.jkiss.dbeaver.core.edit.copy.special.description=\u7279\u5225\u306A\u30B3\u30D4\u30FC + +command.org.jkiss.dbeaver.core.edit.paste.special.name=\u9AD8\u5EA6\u306A\u30DA\u30FC\u30B9\u30C8 +command.org.jkiss.dbeaver.core.edit.paste.special.description=\u7279\u5225\u306A\u8A2D\u5B9A\u3067\u8CBC\u308A\u4ED8\u3051\u308B + +command.org.jkiss.dbeaver.core.qm.filter.name=\u30D5\u30A3\u30EB\u30BF... +command.org.jkiss.dbeaver.core.qm.filter.description=\u30AF\u30A8\u30EA\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC\u30D5\u30A3\u30EB\u30BF\u3092\u8A2D\u5B9A\u3059\u308B +command.org.jkiss.dbeaver.core.qm.clear.name=\u30ED\u30B0\u3092\u30AF\u30EA\u30A2\u3059\u308B +command.org.jkiss.dbeaver.core.qm.clear.description=\u30AF\u30A8\u30EA\u30DE\u30CD\u30FC\u30B8\u30E3\u306E\u30ED\u30B0\u3092\u6D88\u53BB\u3059\u308B +command.org.jkiss.dbeaver.core.qm.refresh.name=\u30AF\u30A8\u30EA\u5C65\u6B74\u3092\u66F4\u65B0\u3059\u308B +command.org.jkiss.dbeaver.core.qm.refresh.description=\u30AF\u30A8\u30EA\u5C65\u6B74\u3092\u66F4\u65B0\u3059\u308B + +command.org.jkiss.dbeaver.core.process.stop.name=\u30D7\u30ED\u30BB\u30B9\u3092\u7D42\u4E86\u3059\u308B +command.org.jkiss.dbeaver.core.process.stop.description=\u5B9F\u884C\u30D7\u30ED\u30BB\u30B9\u3092\u7D42\u4E86\u3059\u308B + +command.org.jkiss.dbeaver.ui.editors.text.content.format.name=\u30B3\u30F3\u30C6\u30F3\u30C4\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +command.org.jkiss.dbeaver.ui.editors.text.content.format.description=\u30C6\u30AD\u30B9\u30C8\u306E\u66F8\u5F0F\u8A2D\u5B9A + +DateFormatter.date.label=\u65E5\u4ED8 +DateFormatter.date.general.label=\u4E00\u822C +DateFormatter.date.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 +DateFormatter.date.general.pattern.description=\u65E5\u4ED8\u30D1\u30BF\u30FC\u30F3 + +DateFormatter.time.label=\u6642\u9593 +DateFormatter.time.general.label=\u4E00\u822C +DateFormatter.time.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 +DateFormatter.time.general.pattern.description=\u6642\u9593\u30D1\u30BF\u30FC\u30F3 + +DateFormatter.timestamp.label=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7 +DateFormatter.timestamp.general.label=\u4E00\u822C +DateFormatter.timestamp.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 +DateFormatter.timestamp.general.pattern.description=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u30D1\u30BF\u30FC\u30F3 + +DateFormatter.number.label=\u6570\u5B57 +DateFormatter.number.general.label=\u4E00\u822C +DateFormatter.number.general.grouping.label=\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u4F7F\u7528 +DateFormatter.number.general.grouping.description=\u30B0\u30EB\u30FC\u30D7\u5316\u304C\u3053\u306E\u5F62\u5F0F\u3067\u4F7F\u7528\u3055\u308C\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B +DateFormatter.number.general.maxIntDigits.label=\u6700\u5927\u6574\u6570\u6841 +DateFormatter.number.general.maxIntDigits.description=\u6700\u5927\u6574\u6570\u6841 +DateFormatter.number.general.minIntDigits.label=\u6700\u5C0F\u6574\u6570\u6841 +DateFormatter.number.general.minIntDigits.description=\u6700\u5C0F\u6574\u6570\u6841 +DateFormatter.number.general.maxFractDigits.label=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 +DateFormatter.number.general.maxFractDigits.description=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 +DateFormatter.number.general.minFractDigits.label=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 +DateFormatter.number.general.minFractDigits.description=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 +DateFormatter.number.general.useTypeScale.label=\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u306B\u306F\u30C7\u30FC\u30BF\u578B\u5C3A\u5EA6\u3092\u4F7F\u7528\u3059\u308B +DateFormatter.number.general.useTypeScale.description=\u5217/\u5C5E\u6027\u306E\u30C7\u30FC\u30BF\u578B\u306E\u30B9\u30B1\u30FC\u30EB\u3092\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B +DateFormatter.number.general.roundingMode.label=\u4E38\u3081\u30E2\u30FC\u30C9 +DateFormatter.number.general.roundingMode.description=\u4E38\u3081\u30E2\u30FC\u30C9 + +menu.database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +menu.database.tools=\u30C4\u30FC\u30EB +menu.database.sql.generate=SQL\u306E\u751F\u6210 +menu.sqleditor=SQL\u30A8\u30C7\u30A3\u30BF + +category.sqleditor.name=SQL\u30A8\u30C7\u30A3\u30BF +category.sqleditor.description=SQL\u30A8\u30C7\u30A3\u30BF\u30B3\u30DE\u30F3\u30C9 +category.dbnavigator.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30CA\u30D3\u30B2\u30FC\u30BF +category.dbnavigator.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30FB\u30CA\u30D3\u30B2\u30FC\u30BF\u30FB\u30B3\u30DE\u30F3\u30C9 +category.dbconnection.name=\u63A5\u7D9A +category.dbconnection.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A\u30B3\u30DE\u30F3\u30C9 +category.utility.name=\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3 +category.utility.description=\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3\u30B3\u30DE\u30F3\u30C9 +category.rs.name=\u7D50\u679C\u30BB\u30C3\u30C8 +category.rs.description=\u7D50\u679C\u30BB\u30C3\u30C8\u30B3\u30DE\u30F3\u30C9 + +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.name.name=\u540D +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.propertyDriverType.name=\u30C9\u30E9\u30A4\u30D0\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.propertyAddress.name=\u4F4F\u6240 +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.propertyDatabase.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.propertyURL.name=URL +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.propertyServerName.name=\u30B5\u30FC\u30D0 +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.propertyDriver.name=\u30C9\u30E9\u30A4\u30D0 +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.propertyConnectTime.name=\u63A5\u7D9A\u6642\u9593 +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor.propertyConnectType.name=\u63A5\u7D9A\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.registry.DataSourceDescriptor$ContextInfo.name.name=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u540D +meta.org.jkiss.dbeaver.registry.DriverDescriptor.category.name=\u30C9\u30E9\u30A4\u30D0\u30AB\u30C6\u30B4\u30EA +meta.org.jkiss.dbeaver.registry.DriverDescriptor.name.name=\u30C9\u30E9\u30A4\u30D0\u540D +meta.org.jkiss.dbeaver.registry.DriverDescriptor.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.registry.DriverDescriptor.driverClassName.name=\u30C9\u30E9\u30A4\u30D0\u30FC\u30AF\u30E9\u30B9 +meta.org.jkiss.dbeaver.registry.DriverDescriptor.sampleURL.name=URL +meta.org.jkiss.dbeaver.ui.dialogs.ColumnInfoPanel$CellKeyInfo.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ui.dialogs.ColumnInfoPanel$CellKeyInfo.name.name=\u540D +meta.org.jkiss.dbeaver.ui.dialogs.ColumnInfoPanel$CellKeyInfo.columns.name=\u5217 +meta.org.jkiss.dbeaver.ui.search.data.SearchDataObject.name.name=\u540D +meta.org.jkiss.dbeaver.ui.search.data.SearchDataObject.foundRows.name=\u898B\u3064\u304B\u3063\u305F\u884C\uFF08>\uFF09 + +dataTransfer.producer.database.name=\u8868 +dataTransfer.producer.database.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C6\u30FC\u30D6\u30EB +dataTransfer.consumer.stream.name=\u30D5\u30A1\u30A4\u30EB +dataTransfer.consumer.stream.description=\u30D5\u30E9\u30C3\u30C8\u30D5\u30A1\u30A4\u30EB +dataTransfer.consumer.database.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +dataTransfer.consumer.database.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C6\u30FC\u30D6\u30EB + +dataTransfer.processor.html.name=HTML +dataTransfer.processor.html.description=HTML\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dataTransfer.processor.html.propertyGroup.general.label =\u4E00\u822C +dataTransfer.processor.html.property.extension.label =\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50 +dataTransfer.processor.html.property.images.name=\u30A4\u30E1\u30FC\u30B8 +dataTransfer.processor.html.property.images.description=\u753B\u50CF\u3092\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30D5\u30A1\u30A4\u30EB\u306B\u62BD\u51FA\u3059\u308B +dataTransfer.processor.csv.name=CSV +dataTransfer.processor.csv.description=CSV\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dataTransfer.processor.csv.propertyGroup.general.label =\u4E00\u822C +dataTransfer.processor.csv.property.delimiter.name=\u30C7\u30EA\u30DF\u30BF +dataTransfer.processor.csv.property.delimiter.description=\u5217\u533A\u5207\u308A\u8A18\u53F7 +dataTransfer.processor.csv.property.extension.label =\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50 +dataTransfer.processor.csv.property.header.name=\u30D8\u30C3\u30C0 +dataTransfer.processor.csv.property.header.description=CSV\u30D8\u30C3\u30C0\u30FC\u8A2D\u5B9A +dataTransfer.processor.csv.property.escape.name=\u6587\u5B57\u304C\u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B +dataTransfer.processor.csv.property.escape.description=\u30E2\u30C7\u30EB\u304C\u30A8\u30B9\u30B1\u30FC\u30D7\u3057\u3066\u3044\u308B\u4E0D\u6B63\u306A\u6587\u5B57\uFF08\u5F15\u7528\u7B26\u3067\u56F2\u307E\u308C\u3066\u3044\u308B\u304B '\'\u6587\u5B57\u3067\u30A8\u30B9\u30B1\u30FC\u30D7\u3055\u308C\u3066\u3044\u308B\uFF09 +dataTransfer.processor.csv.property.quoteChar.name=\u898B\u7A4D\u3082\u308A\u6587\u5B57 +dataTransfer.processor.csv.property.quoteChar.description=\u6587\u5B57\u5217\u3092\u5F15\u7528\u3059\u308B\u306E\u306B\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\uFF08\u30B9\u30DA\u30FC\u30B9\u306F\u5F15\u7528\u7B26\u3092\u610F\u5473\u3057\u306A\u3044\uFF09 +dataTransfer.processor.csv.property.quoteAlways.name=\u5E38\u306B\u5F15\u7528\u7B26 +dataTransfer.processor.csv.property.quoteAlways.description=\u3059\u3079\u3066\u306E\u30BB\u30EB\u5024\u3092\u5F15\u7528\u3057\u307E\u3059\u3002 "quoteNever"\u3068\u4E00\u7DD2\u306B\u4F7F\u3046\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +dataTransfer.processor.csv.property.quoteNever.name=\u898B\u7A4D\u3082\u308A\u306F\u3042\u308A\u307E\u305B\u3093 +dataTransfer.processor.csv.property.quoteNever.description=\u30BB\u30EB\u306E\u5024\u3092\u5F15\u7528\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002 "quoteAlways"\u3068\u4E00\u7DD2\u306B\u4F7F\u3046\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +dataTransfer.processor.csv.property.nullString.name=NULL\u6587\u5B57\u5217 +dataTransfer.processor.csv.property.nullString.description=NULL\u5024\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u5217 +dataTransfer.processor.csv.property.formatNumbers.name=\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u756A\u53F7 +dataTransfer.processor.csv.property.formatNumbers.description=\u30ED\u30B1\u30FC\u30EB\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u6570\u5024\u306E\u66F8\u5F0F\u3092\u8A2D\u5B9A\u3059\u308B + +dataTransfer.processor.markdownTable.name=\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3 +dataTransfer.processor.markdownTable.description=\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dataTransfer.processor.markdownTable.propertyGroup.general.label =\u4E00\u822C +dataTransfer.processor.markdownTable.property.extension.label =\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50 +dataTransfer.processor.markdownTable.property.nullString.name=NULL\u6587\u5B57\u5217 +dataTransfer.processor.markdownTable.property.nullString.description=NULL\u5024\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u5217 +dataTransfer.processor.markdownTable.property.formatNumbers.name=\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u756A\u53F7 +dataTransfer.processor.markdownTable.property.formatNumbers.description=\u30ED\u30B1\u30FC\u30EB\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u6570\u5024\u306E\u66F8\u5F0F\u3092\u8A2D\u5B9A\u3059\u308B +dataTransfer.processor.markdownTable.property.showHeaderSeparator.name=\u30D8\u30C3\u30C0\u30FC\u30BB\u30D1\u30EC\u30FC\u30BF\u3092\u8868\u793A\u3059\u308B +dataTransfer.processor.markdownTable.property.showHeaderSeparator.description=\u30D8\u30C3\u30C0\u30FC\u533A\u5207\u308A\u8A18\u53F7\uFF08---\uFF09\u3092\u51FA\u529B\u3057\u307E\u3059\u3002 GitHub\u306E\u5024\u4E0B\u3052\u306B\u5FC5\u8981\u3067\u3059\u3002 +dataTransfer.processor.markdownTable.property.confluenceFormat.name=\u30B3\u30F3\u30D5\u30EB\u30A8\u30F3\u30B9\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +dataTransfer.processor.markdownTable.property.confluenceFormat.description=Confluence\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u4F7F\u7528\u3059\u308B\uFF08\u30D8\u30C3\u30C0\u306E\u7279\u5225\u306A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u30BB\u30D1\u30EC\u30FC\u30BF\u30E9\u30A4\u30F3\u306A\u3057\uFF09 + + +dataTransfer.processor.sql.name=SQL +dataTransfer.processor.sql.description=SQL INSERT\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dataTransfer.processor.sql.propertyGroup.general.label =\u4E00\u822C +dataTransfer.processor.sql.property.includeAutoGenerated.label=\u751F\u6210\u3055\u308C\u305F\u5217\u3092\u542B\u3081\u308B +dataTransfer.processor.sql.property.includeAutoGenerated.description=SQL INSERT\u306B\u81EA\u52D5\u751F\u6210\u3055\u308C\u305F\u5217\uFF08\u81EA\u52D5\u30A4\u30F3\u30AF\u30EA\u30E1\u30F3\u30C8\u306A\u3069\uFF09\u3092\u542B\u3081\u308B +dataTransfer.processor.sql.property.escape.name=\u30A8\u30B9\u30B1\u30FC\u30D7\u6587\u5B57 +dataTransfer.processor.sql.property.escape.description=\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C8\u6587\u5B57\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B\u6587\u5B57 +dataTransfer.processor.sql.property.extension.label =\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50 +dataTransfer.processor.sql.property.omitSchema.name=\u30B9\u30AD\u30FC\u30DE\u540D\u3092\u7701\u7565\u3059\u308B +dataTransfer.processor.sql.property.omitSchema.description=INSERT\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3067\u30B9\u30AD\u30FC\u30DE/\u30AB\u30BF\u30ED\u30B0\u540D\u3092\u7701\u7565 +dataTransfer.processor.sql.property.rowsInStatement.name=\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3054\u3068\u306E\u30C7\u30FC\u30BF\u884C +dataTransfer.processor.sql.property.rowsInStatement.description=1\u3064\u306Einsert\u6587\u3042\u305F\u308A\u306E\u30C7\u30FC\u30BF\u884C\u6570 +dataTransfer.processor.xml.name=XML +dataTransfer.processor.xml.description=XML\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dataTransfer.processor.xml.propertyGroup.general.label =\u4E00\u822C +dataTransfer.processor.xml.property.extension.label =\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50 +dataTransfer.processor.xml.property.format.label =\u65E5\u4ED8/\u6570\u5024\u5F62\u5F0F +dataTransfer.processor.dbunit.name=DbUnit +dataTransfer.processor.dbunit.description=DbUnit XML\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +dataTransfer.processor.dbunit.propertyGroup.general.label =\u4E00\u822C +dataTransfer.processor.dbunit.property.extension.label =\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50 +dataTransfer.processor.dbunit.property.uppercase.table.name.label =\u5F37\u5236\u5927\u6587\u5B57\u8868\u540D +dataTransfer.processor.dbunit.property.uppercase.column.names.label =\u5927\u6587\u5B57\u306E\u5217\u540D\u3092\u5F37\u5236\u3059\u308B +dataTransfer.processor.dbunit.property.include.null.values.label=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u306BNULL\u5024\u3092\u542B\u3081\u308B +dataTransfer.processor.dbunit.property.null.value.string.label=NULL\u5024\u3092 +dataTransfer.processor.json.name=JSON +dataTransfer.processor.json.description=JSON\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +dataTransfer.processor.json.propertyGroup.general.label =\u4E00\u822C +dataTransfer.processor.json.property.extension.label =\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50 +dataTransfer.processor.json.property.formatDateISO.label =\u65E5\u4ED8\u3092ISO 8601\u3067\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B +dataTransfer.processor.json.property.printTableName.label =\u30C6\u30FC\u30D6\u30EB\u540D\u3092\u5370\u5237\u3059\u308B + +search.page.label.db.metadata =DB\u30E1\u30BF\u30C7\u30FC\u30BF +search.page.label.db.fulltext =DB\u30D5\u30EB\u30C6\u30AD\u30B9\u30C8 + +category.org.jkiss.dbeaver.core.category.name =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 + +toolbar.dbeaver-general.label =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C4\u30FC\u30EB\u30D0\u30FC +toolbar.dbeaver-transactions.label =\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3 +toolbar.dbeaver-transaction-monitor.label =\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u30E2\u30CB\u30BF +toolbar.dbeaver-datasource-selector.label =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30BB\u30EC\u30AF\u30BF +toolbar.dbeaver-edit.label =\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u7DE8\u96C6 + +menu.org.jkiss.dbeaver.core.project.select.label =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +menu.filter.label =\u30D5\u30A3\u30EB\u30BF +menu.org.jkiss.dbeaver.ui.editors.sql.SQLEditor.execute.label =\u5B9F\u884C\u3059\u308B +menu.org.jkiss.dbeaver.ui.editors.sql.SQLEditor.file.label =\u30D5\u30A1\u30A4\u30EB +menu.org.jkiss.dbeaver.ui.editors.sql.SQLEditor.layout.label =\u30EC\u30A4\u30A2\u30A6\u30C8 + +context.org.jkiss.dbeaver.ui.context.navigator.description =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30CA\u30D3\u30B2\u30FC\u30BF\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +context.org.jkiss.dbeaver.ui.context.navigator.name =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30CA\u30D3\u30B2\u30FC\u30BF\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +context.org.jkiss.dbeaver.ui.context.resultset.description =\u7D50\u679C\u30D3\u30E5\u30FC\u30A2\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +context.org.jkiss.dbeaver.ui.context.resultset.name =\u7D50\u679C\u30D3\u30E5\u30FC\u30A2\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +context.org.jkiss.dbeaver.ui.context.resultset.edit.description =\u7D50\u679C\u306E\u7DE8\u96C6\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +context.org.jkiss.dbeaver.ui.context.resultset.edit.name =\u7D50\u679C\u306E\u7DE8\u96C6\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +context.org.jkiss.dbeaver.ui.editors.sql.name =SQL\u30A8\u30C7\u30A3\u30BF\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +context.org.jkiss.dbeaver.ui.editors.sql.scriptname =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u30A8\u30C7\u30A3\u30BF\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 + +column.org.jkiss.dbeaver.ui.editors.columns.script.position.name =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u4F4D\u7F6E + +page.org.jkiss.dbeaver.preferences.main.errorHandle.name =\u30A8\u30E9\u30FC\u30CF\u30F3\u30C9\u30EB + +page.org.jkiss.dbeaver.preferences.main.resultset.name =\u7D50\u679C\u30BB\u30C3\u30C8 +page.org.jkiss.dbeaver.preferences.main.resultset.editors.name =\u7DE8\u96C6\u8005 +page.org.jkiss.dbeaver.preferences.main.resultset.presentation.name =\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3 +page.org.jkiss.dbeaver.preferences.main.dataformat.name =\u30C7\u30FC\u30BF\u5F62\u5F0F +page.org.jkiss.dbeaver.preferences.main.connections.name =\u63A5\u7D9A +page.org.jkiss.dbeaver.preferences.main.meta.name =\u30E1\u30BF\u30C7\u30FC\u30BF +page.org.jkiss.dbeaver.preferences.main.entityeditor.name =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30A8\u30C7\u30A3\u30BF +page.org.jkiss.dbeaver.preferences.main.sqleditor.name =SQL\u30A8\u30C7\u30A3\u30BF +page.org.jkiss.dbeaver.preferences.main.sql.completion.name =SQL\u306E\u5B8C\u4E86/\u6298\u308A\u305F\u305F\u307F +page.org.jkiss.dbeaver.preferences.main.sql.format.name =SQL\u66F8\u5F0F\u8A2D\u5B9A +page.org.jkiss.dbeaver.preferences.main.sqlexecute.name =SQL\u51E6\u7406 +page.org.jkiss.dbeaver.preferences.main.sql.templates.name =\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +page.org.jkiss.dbeaver.preferences.main.qm.name =\u30AF\u30A8\u30EA\u30DE\u30CD\u30FC\u30B8\u30E3 +page.org.jkiss.dbeaver.preferences.connectionTypes.name =\u63A5\u7D9A\u30BF\u30A4\u30D7 +page.org.jkiss.dbeaver.preferences.projectSettings.name =DBeaver\u306E\u8A2D\u5B9A + +themeElementCategory.org.jkiss.dbeaver.ui.presentation.sql.label =SQL\u30A8\u30C7\u30A3\u30BF +themeElementCategory.org.jkiss.dbeaver.ui.presentation.sql.description =SQL\u30A8\u30C7\u30A3\u30BF +themeElementCategory.org.jkiss.dbeaver.ui.presentation.results.label =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AF\u30A8\u30EA\u7D50\u679C +themeElementCategory.org.jkiss.dbeaver.ui.presentation.datatypes.label =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u30C7\u30FC\u30BF\u578B +themeElementCategory.org.jkiss.dbeaver.ui.presentation.results.description =SQL\u30A8\u30C7\u30A3\u30BF +themeElementCategory.org.jkiss.dbeaver.ui.presentation.txn.label =\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3 +themeElementCategory.org.jkiss.dbeaver.ui.presentation.txn.description =\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306E\u8272 + +fontDefinition.org.jkiss.dbeaver.sql.resultset.font.label =\u7D50\u679C\u30B0\u30EA\u30C3\u30C9\u30D5\u30A9\u30F3\u30C8 +fontDefinition.org.jkiss.dbeaver.sql.resultset.font.description =\u30B0\u30EA\u30C3\u30C9\u30D5\u30A9\u30F3\u30C8\u306F\u3001\u7D50\u679C\u30BB\u30C3\u30C8\u30BB\u30EB\u3001\u30D8\u30C3\u30C0\u30FC\u3001\u304A\u3088\u3073\u884C\u756A\u53F7\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 +fontDefinition.org.jkiss.dbeaver.sql.editor.font.output.label =SQL\u51FA\u529B\u30D5\u30A9\u30F3\u30C8 +fontDefinition.org.jkiss.dbeaver.sql.editor.font.output.description =SQL\u51FA\u529B\u3092\u8868\u793A\u3059\u308B\u30D5\u30A9\u30F3\u30C8\u3002\u30E2\u30CE\u30B9\u30DA\u30FC\u30B9\u30D5\u30A9\u30F3\u30C8\u3067\u3042\u308B\u3053\u3068\u304C\u671B\u307E\u3057\u3044 + +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.selection.background.label =\u9078\u629E\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.selection.background.description =\u9078\u629E\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.selection.foreground.label =\u30BB\u30EC\u30AF\u30B7\u30E7\u30F3\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.selection.foreground.description =\u30BB\u30EC\u30AF\u30B7\u30E7\u30F3\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.odd.background.label =\u5947\u6570\u884C\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.odd.background.description =\u5947\u6570\u884C\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.preview.background.label =\u30D0\u30EA\u30E5\u30FC\u30A8\u30C7\u30A3\u30BF\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.preview.background.description =\u30D0\u30EA\u30E5\u30FC\u30A8\u30C7\u30A3\u30BF\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.modified.background.label =\u5909\u66F4\u3055\u308C\u305F\u30BB\u30EB\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.modified.background.description =\u5909\u66F4\u3055\u308C\u305F\u30BB\u30EB\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.new.background.label =\u65B0\u3057\u3044\u884C\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.new.background.description =\u65B0\u3057\u3044\u884C\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.deleted.background.label =\u524A\u9664\u3055\u308C\u305F\u884C\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.deleted.background.description =\u524A\u9664\u3055\u308C\u305F\u884C\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.readonly.background.label =\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u30BB\u30EB\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.readonly.background.description =\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u30BB\u30EB\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.matched.background.label =\u884C\u306E\u80CC\u666F\u3068\u4E00\u81F4\u3059\u308B\uFF08\u691C\u7D22/\u7F6E\u63DB\uFF09 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.cell.matched.background.description =\u65B0\u3057\u3044\u884C\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.lines.normal.label =\u30B0\u30EA\u30C3\u30C9\u7DDA\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.lines.normal.description =\u7DDA\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.lines.selected.label =\u30B0\u30EA\u30C3\u30C9\u306E\u9078\u629E\u3055\u308C\u305F\u7DDA\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.lines.selected.description =\u9078\u629E\u3055\u308C\u305F\u7DDA\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.header.background.label =\u30B0\u30EA\u30C3\u30C9\u30D8\u30C3\u30C0\u30FC\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.header.background.description =\u30B0\u30EA\u30C3\u30C9\u30D8\u30C3\u30C0\u30FC\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.header.foreground.label =\u30B0\u30EA\u30C3\u30C9\u30D8\u30C3\u30C0\u30FC\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.header.foreground.description =\u30B0\u30EA\u30C3\u30C9\u30D8\u30C3\u30C0\u30FC\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.header.selected.background.label =\u30B0\u30EA\u30C3\u30C9\u9078\u629E\u3055\u308C\u305F\u30D8\u30C3\u30C0\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.header.selected.background.description =\u30B0\u30EA\u30C3\u30C9\u30D8\u30C3\u30C0\u30FC\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.null.foreground.label =\u30B0\u30EA\u30C3\u30C9NULL\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.null.foreground.description =\u30B0\u30EA\u30C3\u30C9NULL\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.binary.foreground.label =\u30B0\u30EA\u30C3\u30C9\u30D0\u30A4\u30CA\u30EA\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.binary.foreground.description =\u30B0\u30EA\u30C3\u30C9\u30D0\u30A4\u30CA\u30EA\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.boolean.foreground.label =\u30B0\u30EA\u30C3\u30C9\u30D6\u30FC\u30EB\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.boolean.foreground.description =\u30B0\u30EA\u30C3\u30C9\u30D6\u30FC\u30EB\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.datetime.foreground.label =\u30B0\u30EA\u30C3\u30C9\u65E5\u4ED8/\u6642\u523B\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.datetime.foreground.description =\u30B0\u30EA\u30C3\u30C9\u65E5\u4ED8/\u6642\u523B\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.numeric.foreground.label =\u30B0\u30EA\u30C3\u30C9\u6570\u5024\u306E\u524D\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.numeric.foreground.description =\u30B0\u30EA\u30C3\u30C9\u6570\u5024\u306E\u524D\u666F +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.string.foreground.label =\u30B0\u30EA\u30C3\u30C9\u6587\u5B57\u5217\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.resultset.color.string.foreground.description =\u30B0\u30EA\u30C3\u30C9\u6587\u5B57\u5217\u5024\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.keyword.foreground.label =SQL\u30AD\u30FC\u30EF\u30FC\u30C9\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.keyword.foreground.description =SQL\u30AD\u30FC\u30EF\u30FC\u30C9\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.datatype.foreground.label =SQL\u30C7\u30FC\u30BF\u578B\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.datatype.foreground.description =SQL\u30C7\u30FC\u30BF\u578B\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.string.foreground.label =SQL\u6587\u5B57\u5217\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.string.foreground.description =SQL\u6587\u5B57\u5217\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.number.foreground.label =SQL\u756A\u53F7\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.number.foreground.description =SQL\u756A\u53F7\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.comment.foreground.label =SQL\u30B3\u30E1\u30F3\u30C8\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.comment.foreground.description =SQL\u30B3\u30E1\u30F3\u30C8\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.delimiter.foreground.label =SQL\u30C7\u30EA\u30DF\u30BF\u306E\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.delimiter.foreground.description =SQL\u6587\u306E\u533A\u5207\u308A\u6587\u5B57\u306E\u524D\u666F +colorDefinition.org.jkiss.dbeaver.sql.editor.color.command.foreground.label =SQL\u30B3\u30DE\u30F3\u30C9\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.command.foreground.description =\u5236\u5FA1\u30B3\u30DE\u30F3\u30C9\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.parameter.foreground.label =SQL\u30D1\u30E9\u30E1\u30FC\u30BF\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.parameter.foreground.description =SQL\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08\uFF1F\u3001\uFF1Aparam\u306A\u3069\uFF09\u306E\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.text.foreground.label =SQL\u30C6\u30AD\u30B9\u30C8\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.text.foreground.description =SQL\u30C6\u30AD\u30B9\u30C8\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9 +colorDefinition.org.jkiss.dbeaver.sql.editor.color.text.background.label =SQL\u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.editor.color.text.background.description =SQL\u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.editor.color.disabled.background.label =SQL\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.sql.editor.color.disabled.background.description =SQL\u30C6\u30AD\u30B9\u30C8\u306E\u80CC\u666F + +colorDefinition.org.jkiss.dbeaver.txn.color.committed.background.label =\u30B3\u30DF\u30C3\u30C8\u3055\u308C\u305F\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3 +colorDefinition.org.jkiss.dbeaver.txn.color.committed.background.description =\u30B3\u30DF\u30C3\u30C8\u3055\u308C\u305F\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.txn.color.reverted.background.label =\u623B\u3063\u305F\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3 +colorDefinition.org.jkiss.dbeaver.txn.color.reverted.background.description =\u623B\u3055\u308C\u305F\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306E\u80CC\u666F +colorDefinition.org.jkiss.dbeaver.txn.color.transaction.background.label =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3 +colorDefinition.org.jkiss.dbeaver.txn.color.transaction.background.description =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306E\u80CC\u666F + +category.org.jkiss.dbeaver.core.export.resources.name =DBeaver +wizard.org.jkiss.dbeaver.core.wizard.export.project.name =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +wizard.org.jkiss.dbeaver.core.wizard.export.project.description =DBeaver\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +wizard.org.jkiss.dbeaver.core.wizard.export.scripts.name =\u30B9\u30AF\u30EA\u30D7\u30C8 +wizard.org.jkiss.dbeaver.core.wizard.export.scripts.description =SQL\u30B9\u30AF\u30EA\u30D7\u30C8 + +category.org.jkiss.dbeaver.core.import.resources.name =DBeaver +wizard.org.jkiss.dbeaver.core.wizard.import.project.name =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +wizard.org.jkiss.dbeaver.core.wizard.import.project.description =DBeaver\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +wizard.org.jkiss.dbeaver.core.wizard.import.scripts.name =\u30B9\u30AF\u30EA\u30D7\u30C8 +wizard.org.jkiss.dbeaver.core.wizard.import.scripts.description =SQL\u30B9\u30AF\u30EA\u30D7\u30C8 + +category.org.jkiss.dbeaver.core.new.general.name =DBeaver +wizard.org.jkiss.dbeaver.core.wizard.new.project.name =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +wizard.org.jkiss.dbeaver.core.wizard.new.project.description =DBeaver\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +wizard.org.jkiss.dbeaver.core.wizard.new.connection.name =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A +wizard.org.jkiss.dbeaver.core.wizard.new.connection.description =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A + +keyword.org.jkiss.dbeaver.core.keyword.pref.db.general.label =\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8\u30AB\u30FC\u30BD\u30EB\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF\u7D50\u679C\u30BB\u30C3\u30C8\u30B9\u30AF\u30EA\u30D7\u30C8 +keyword.org.jkiss.dbeaver.core.keyword.pref.db.dataformat.label =\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u65E5\u4ED8\u756A\u53F7\u6587\u5B57\u5217\u30ED\u30B1\u30FC\u30EB\u8A00\u8A9E +keyword.org.jkiss.dbeaver.core.keyword.pref.db.qm.label =\u30AF\u30A8\u30EA\u30ED\u30B0\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8ddl +keyword.org.jkiss.dbeaver.core.keyword.pref.editor.binary.label =\u30D0\u30A4\u30CA\u30EA\u30D8\u30AD\u30B5\u30D6\u30ED\u30D6 +keyword.org.jkiss.dbeaver.core.keyword.pref.editor.content.label =\u30ED\u30D6\u30D6\u30ED\u30D6\u30AF\u30ED\u30FC\u30D6 +keyword.org.jkiss.dbeaver.core.keyword.pref.editor.erd.label =\u30A8\u30E9\u30FC\u56F3 +keyword.org.jkiss.dbeaver.core.keyword.pref.editor.sql.label =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u30B3\u30DF\u30C3\u30C8\u30D5\u30A7\u30C3\u30C1\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 +keyword.org.jkiss.dbeaver.core.keyword.pref.editor.entity.label =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30B9\u30AD\u30FC\u30DE\u30AB\u30BF\u30ED\u30B0\u30C6\u30FC\u30D6\u30EB\u30D1\u30C3\u30B1\u30FC\u30B8\u5217 +keyword.org.jkiss.dbeaver.core.keyword.pref.ui.general.label =http\u30D7\u30ED\u30AD\u30B7\u3092\u66F4\u65B0\u3059\u308B + +extension.org.jkiss.dbeaver.DBeaverNature.name =DBeaver Nature + +handler.socks_proxy.description =SOCKS4 / SOCKS5\u30D7\u30ED\u30AD\u30B7 +handler.socks_proxy.label =SOCKS\u30D7\u30ED\u30AD\u30B7 + +presentation.spreadsheet.label =\u30B0\u30EA\u30C3\u30C9 +presentation.plaintext.label =\u30C6\u30AD\u30B9\u30C8 + +panel.value-view.label =\u5024\u30D3\u30E5\u30FC\u30A2 +panel.column-aggregate.label =\u5217\u306E\u96C6\u8A08 +panel.results-metadata.label =\u30E1\u30BF\u30C7\u30FC\u30BF + + +search.result.view.page.metadata.result.name =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30E1\u30BF\u30C7\u30FC\u30BF\u691C\u7D22\u7D50\u679C +search.result.view.page.data.result.name =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u5168\u6587\u691C\u7D22\u7D50\u679C + +sql.convert.unformatted.text.description =SQL\u30C6\u30AD\u30B9\u30C8\u3092\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u5358\u4E00\u884C\u306E\u30D7\u30EC\u30FC\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u5909\u63DB\u3057\u307E\u3059\u3002 +sql.convert.unformatted.text.name =\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30C6\u30AD\u30B9\u30C8 + +maven.respository.central =\u4E2D\u592E\u30EA\u30DD\u30B8\u30C8\u30EA +maven.respository.central.unsecure =\u4E2D\u592E\u30EA\u30DD\u30B8\u30C8\u30EA\uFF08\u5B89\u5168\u3067\u306A\u3044\uFF09 + +perspective.name=DBeaver + diff --git a/nls/bundles/org.jkiss.dbeaver.core.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.core.nls/pom.xml index a1f2010859ac58cd75328c1b455599dd9909a424..8d674039f7885a07acbe5a67fec77d18bbd20df9 100644 --- a/nls/bundles/org.jkiss.dbeaver.core.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.core.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.core.nls - 5.0.6 + 5.1.0 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.core.nls/src/org/jkiss/dbeaver/core/CoreResources_ja.properties b/nls/bundles/org.jkiss.dbeaver.core.nls/src/org/jkiss/dbeaver/core/CoreResources_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..5d8c3a59e44ee9236bdf7d2fe979785b842c1500 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.core.nls/src/org/jkiss/dbeaver/core/CoreResources_ja.properties @@ -0,0 +1,1314 @@ + +## Menu items ## +actions_menu_database =&\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +actions_menu_edit =&\u7DE8\u96C6 +actions_menu_exit_emergency =\u5F37\u5236\u7D42\u4E86 +actions_menu_file =&\u30D5\u30A1\u30A4\u30EB +actions_menu_help =&\u30D8\u30EB\u30D7 +actions_menu_navigate =&\u30CA\u30D3\u30B2\u30FC\u30C8 +actions_menu_window =&\u30A6\u30A3\u30F3\u30C9\u30A6 +actions_menu_window_showView =\u8868\u793A\u5207\u308A\u66FF\u3048 +actions_menu_about =\u3053\u306E\u30BD\u30D5\u30C8\u306B\u3064\u3044\u3066 +actions_menu_check_update =\u66F4\u65B0\u3092\u78BA\u8A8D ... + +actions_menu_edit_ContentFormat =\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 + +## Errors ## +DBeaverCore_error_can_create_temp_dir =\u4E00\u6642\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA "{0}"\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +DBeaverCore_error_can_create_temp_file ={1}\u306B\u4E00\u6642\u30D5\u30A1\u30A4\u30EB "{0}"\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 + +## Actions ## +actions_ContentAssistProposal_label =SQL\u30A2\u30B7\u30B9\u30C8 +actions_ContentAssistProposal_tooltip =SQL\u30A2\u30B7\u30B9\u30C8 +actions_ContentAssistProposal_description =SQL\u30A2\u30B7\u30B9\u30C8 + +actions_ContentAssistTip_label =SQL\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +actions_ContentAssistTip_tooltip =SQL\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8 +actions_ContentAssistTip_description =SQL\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u540D\u3092\u5B8C\u6210\u3059\u308B + +actions_ContentAssistInfo_label =SQL\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u60C5\u5831 +actions_ContentAssistInfo_tooltip =SQL\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u8A18\u8FF0\u3092\u8868\u793A\u3059\u308B +actions_ContentAssistInfo_description =\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u8AAC\u660E\u3068\u3068\u3082\u306B\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u3092\u8868\u793A\u3059\u308B + +actions_ContentFormatProposal_description =\u30B3\u30F3\u30C6\u30F3\u30C4\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +actions_ContentFormatProposal_label =SQL\u306E\u66F8\u5F0F\u8A2D\u5B9A +actions_ContentFormatProposal_tooltip =SQL\u306E\u66F8\u5F0F\u8A2D\u5B9A + +actions_navigator__objects =\\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +actions_navigator_bookmark_error_message =\u65B0\u3057\u3044\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +actions_navigator_bookmark_error_title =\u65B0\u3057\u3044\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF +actions_navigator_bookmark_title =\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u540D +actions_navigator_copy_fqn_title =\u5B8C\u5168\u4FEE\u98FE\u540D\u3092\u30B3\u30D4\u30FC +actions_navigator_copy_fqn_titles =\u5B8C\u5168\u4FEE\u98FE\u540D\u3092\u30B3\u30D4\u30FC\u3059\u308B +actions_navigator_copy_object_copy_node ={0}\u3092\u30B3\u30D4\u30FC +actions_navigator_copy_object_copy_objects =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30D4\u30FC +actions_navigator_create_folder_error_message =\u65B0\u3057\u3044\u30D5\u30A9\u30EB\u30C0 "{0}"\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +actions_navigator_create_folder_error_title =\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u4F5C\u308B +actions_navigator_create_folder_folder_name =\u30D5\u30A9\u30EB\u30C0\u540D +actions_navigator_create_new =\u65B0\u3057\u304F\u4F5C\u308B +actions_navigator_delete_ =\u524A\u9664 +actions_navigator_delete_objects =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u524A\u9664 +actions_navigator_delete_script =\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u524A\u9664\u3059\u308B +actions_navigator_edit =\u7DE8\u96C6 +actions_navigator_error_dialog_delete_object_title =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u524A\u9664\u3059\u308B +actions_navigator_error_dialog_open_entity_title =\u30AA\u30FC\u30D7\u30F3\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3 +actions_navigator_error_dialog_open_resource_title =\u30ea\u30bd\u30fc\u30b9\u3092\u958b\u304f +actions_navigator_open =\u958B\u3044\u305F +actions_navigator_view =\u30D3\u30E5\u30FC +actions_navigator_view_script_button =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u8868\u793A\uFF08\uFF06V\uFF09 +actions_navigator_filter_objects ={0}\u30D5\u30A3\u30EB\u30BF\u3092\u8A2D\u5B9A... +actions_spreadsheet_copy_special =\u9AD8\u5EA6\u306A\u30B3\u30D4\u30FC... + +common_error_sql =SQL\u30A8\u30E9\u30FC + +action_menu_marketplace_extensions =DBeaver\u62E1\u5F35\u6A5F\u80FD\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B +action_menu_enterpriseEdition =\u30A8\u30F3\u30BF\u30FC\u30D7\u30E9\u30A4\u30BA\u7248 +action_menu_installInfo =\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306E\u8A73\u7D30 +action_menu_installNewSoftware =\u65B0\u3057\u3044\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B +action_menu_showKeyAssist =\u30AD\u30FC\u30A2\u30B7\u30B9\u30C8 +action_menu_sqleditor_maximizeResultsPanel =\u7D50\u679C\u30D1\u30CD\u30EB\u3092\u6700\u5927\u5316\u3059\u308B +action_menu_sqleditor_restoreResultsPanel =\u30EA\u30B9\u30C8\u30A2\u7D50\u679C\u30D1\u30CD\u30EB +action_menu_transactionMonitor_autocommitMode =\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8\u30E2\u30FC\u30C9 +action_menu_transactionMonitor_modifyStatement ={0}\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u306E\u5909\u66F4 +action_menu_transactionMonitor_notConnected =\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +action_menu_transactionMonitor_totalStatement =\u5408\u8A08\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8{0} +action_menu_transactionMonitor_uptime ={0}\u79D2\u306E\u30A2\u30C3\u30D7\u30BF\u30A4\u30E0 +action_menu_transaction_autocommit_description =\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8 +action_menu_transaction_autocommit_name =\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8\u306B\u5207\u308A\u66FF\u3048\u308B +action_menu_transaction_manualcommit_description =\u624B\u52D5\u30B3\u30DF\u30C3\u30C8\uFF08{0}\uFF09 +action_menu_transaction_manualcommit_name =\u624B\u52D5\u30B3\u30DF\u30C3\u30C8\uFF08{0}\uFF09\u306B\u5207\u308A\u66FF\u3048\u308B +action_popup_sqleditor_layout_detached =\u5206\u96E2\u3055\u308C\u305F +action_popup_sqleditor_layout_horizontal =\u6C34\u5E73 +action_popup_sqleditor_layout_vertical =\u5782\u76F4 + +## Confirmations ## +confirm_exit_title =DBeaver\u3092\u7D42\u4E86\u3059\u308B +confirm_exit_message =\u672c\u5f53\u306b\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +confirm_exit_toggleMessage =\u4eca\u5f8c\u306f\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u306f\u8868\u793a\u3057\u306a\u3044 + +confirm_close_resultset_edit_message =\u7D50\u679C\u30BB\u30C3\u30C8\u304C\u7DE8\u96C6\u3055\u308C\u307E\u3057\u305F\u3002\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u5909\u66F4\u3092\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F +confirm_close_resultset_edit_title =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u7DE8\u96C6\u3092\u4FDD\u5B58 +confirm_close_resultset_edit_toggleMessage =\u9078\u629E\u80A2\u3092\u601D\u3044\u51FA\u3057\u3066 + +confirm_close_editor_edit_message ={0}\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\u3002\u3053\u308C\u3089\u306E\u5909\u66F4\u3092\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F +confirm_close_editor_edit_title =\u30A8\u30C7\u30A3\u30BF\u306E\u5909\u66F4\u3092\u4FDD\u5B58 +confirm_close_editor_edit_toggleMessage =\u9078\u629E\u80A2\u3092\u601D\u3044\u51FA\u3057\u3066 + +confirm_close_entity_edit_message =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 "{0}"\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\u3002\u3053\u308C\u3089\u306E\u5909\u66F4\u3092\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F +confirm_close_entity_edit_title =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u5909\u66F4\u3092\u6C38\u7D9A\u5316\u3059\u308B +confirm_close_entity_edit_toggleMessage =\u9078\u629E\u80A2\u3092\u601D\u3044\u51FA\u3057\u3066 + +confirm_dangerous_sql_message ={1}\u306BWHERE\u53E5\u3092\u4ED8\u3051\u305A\u306B{0}\u6587\u3092\u5B9F\u884C\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059\u3002\ n\u30C7\u30FC\u30BF\u306E\u640D\u5931\u304C\u8003\u3048\u3089\u308C\u307E\u3059\u3002\u672c\u5f53\u306b\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +confirm_dangerous_sql_title =\u5371\u967A\u306A\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u3092\u78BA\u8A8D\u3059\u308B +confirm_dangerous_sql_toggleMessage =\u9078\u629E\u80A2\u3092\u601D\u3044\u51FA\u3057\u3066 + +confirm_mass_parallel_sql_message =\ n \ t-\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8UI\u306E\u30D5\u30EA\u30FC\u30BA\ n \ t-\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30B5\u30FC\u30D0\u30FC\u306E\u8CA0\u8377\u304C\u9AD8\u3044\ n \ t-\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306E\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u3002\ n\u672C\u5F53\u3067\u3059\u304B\uFF1F +confirm_mass_parallel_sql_title =\u5927\u91CF\u306E\u4E26\u5217\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u3092\u78BA\u8A8D\u3059\u308B +confirm_mass_parallel_sql_toggleMessage =\u9078\u629E\u80A2\u3092\u601D\u3044\u51FA\u3057\u3066 + +confirm_disconnect_txn_message =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 "{0}"\u304B\u3089\u5207\u65AD\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059\u3002\ n\u73FE\u5728\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u3092\u30B3\u30DF\u30C3\u30C8\u3057\u307E\u3059\u304B\uFF1F +confirm_disconnect_txn_title =\u5909\u66F4\u3092\u30B3\u30DF\u30C3\u30C8\u3059\u308B +confirm_disconnect_txn_toggleMessage =\u9078\u629E\u80A2\u3092\u601D\u3044\u51FA\u3057\u3066 + +confirm_driver_download_message =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 "{0}"\u306E\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\uFF08{1}\uFF09\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u3053\u308C\u3089\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u307E\u3059\u304B\uFF1F +confirm_driver_download_title =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C9\u30E9\u30A4\u30D0\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B +confirm_driver_download_toggleMessage =\u4eca\u5f8c\u306f\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u306f\u8868\u793a\u3057\u306a\u3044 + +confirm_driver_download_manual_message =JDBC\u30C9\u30E9\u30A4\u30D0\u30FC\u300C{0}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u3053\u306E\u30C9\u30E9\u30A4\u30D0\u30FC\u306F\u516C\u958B\u3055\u308C\u3066\u304A\u3089\u305A\u3001\u30D9\u30F3\u30C0\u30FC\u306EWeb\u30B5\u30A4\u30C8\u304B\u3089\u624B\u52D5\u3067\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\ n \ n\u30C9\u30E9\u30A4\u30D0\u30FC\u304C\u6B63\u5E38\u306B\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3055\u308C\u305F\u3089\u3001DBeaver\u30E9\u30A4\u30D6\u30E9\u30EA\u30FC\u306E\u30EA\u30B9\u30C8\u306BJAR\u30D5\u30A1\u30A4\u30EB\u3092\u624B\u52D5\u3067\u8FFD\u52A0\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\ n\u30C9\u30E9\u30A4\u30D0\u30FC\u30D5\u30A1\u30A4\u30EB\uFF1A{1} \u3002\ n \ n\u30D9\u30F3\u30C0\u30FC\u306EWeb\u30B5\u30A4\u30C8\u306B\u9032\u307F\u307E\u3059\u304B\uFF1F +confirm_driver_download_manual_title =\u30DE\u30CB\u30E5\u30A2\u30EB\u30C9\u30E9\u30A4\u30D0\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 +confirm_driver_download_manual_toggleMessage =\u4eca\u5f8c\u306f\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u306f\u8868\u793a\u3057\u306a\u3044 + +confirm_entity_delete_message ={0} "{1}"\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +confirm_entity_delete_title =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u524A\u9664\u3059\u308B + +confirm_entity_reject_message =\u3053\u306E\u64CD\u4F5C\u306F\u3001\u300C{0}\u300D\u306E\u3059\u3079\u3066\u306E\u5909\u66F4\u3092\u62D2\u5426\u3057\u3066\u30A8\u30C7\u30A3\u30BF\u3092\u9589\u3058\u307E\u3059\u306E\u3067\u3001\u3059\u3079\u3066\u306E\u5909\u66F4\u304C\u5931\u308F\u308C\u307E\u3059\u3002\ n\u5909\u66F4\u3092\u62D2\u5426\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +confirm_entity_reject_title =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u62D2\u5426\u3059\u308B +confirm_entity_reject_toggleMessage =\u4eca\u5f8c\u306f\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u306f\u8868\u793a\u3057\u306a\u3044 + +confirm_entity_revert_message =\u300C{0}\u300D\u306E\u3059\u3079\u3066\u306E\u5909\u66F4\u3092\u5143\u306B\u623B\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +confirm_entity_revert_title =\u5909\u66F4\u3092\u5143\u306B\u623B\u3059 +confirm_entity_revert_toggleMessage =\u4eca\u5f8c\u306f\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u306f\u8868\u793a\u3057\u306a\u3044 + +confirm_fetch_all_rows_message =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u3059\u3079\u3066\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3080\u306B\u306F\u3001\u6642\u9593\u3068\u30E1\u30E2\u30EA\u304C\u975E\u5E38\u306B\u304B\u304B\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\ n \ n\u3059\u3079\u3066\u306E\u884C\u3092\u30D5\u30A7\u30C3\u30C1\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +confirm_fetch_all_rows_title =\u3059\u3079\u3066\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3080 +confirm_fetch_all_rows_toggleMessage =\u9078\u629E\u80A2\u3092\u601D\u3044\u51FA\u3057\u3066 + +confirm_keep_statement_open_message =\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001DBeaver\u306F\u9078\u629E\u5F8C\u306B\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u9589\u3058\u307E\u3059\u3002\u30AB\u30FC\u30BD\u30EB\u5217\u306E\u5024\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3001\u300C\u74B0\u5883\u8A2D\u5B9A\u300D\u3067\u300CSQL\u30A8\u30C7\u30A3\u30BF\u3067\u30AB\u30FC\u30BD\u30EB\u3092\u958B\u3044\u305F\u307E\u307E\u306B\u3059\u308B\u300D\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30AB\u30FC\u30BD\u30EB\u3092\u4FDD\u6301\u3059\u308B\u3068\u3001\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30FB\u30EA\u30BD\u30FC\u30B9\u304C\u9577\u671F\u9593\u30ED\u30C3\u30AF\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308B\u3053\u3068\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u306E\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u304B\uFF1F \uFF08\u7D50\u679C\u30BB\u30C3\u30C8\u304C\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3055\u308C\u307E\u3059\uFF09 +confirm_keep_statement_open_title =\u958B\u3044\u305F\u307E\u307E\u306B\u3059\u308B +confirm_keep_statement_open_toggleMessage =\u9078\u629E\u80A2\u3092\u601D\u3044\u51FA\u3057\u3066 + +confirm_local_folder_delete_message ={0} "{1}"\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F\ n \ n\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u5185\u306E\u63A5\u7D9A\u306F\u524A\u9664\u3055\u308C\u307E\u305B\u3093\u3002 +confirm_local_folder_delete_title =\u30D5\u30A9\u30EB\u30C0\u3092\u524A\u9664\u3059\u308B + +confirm_order_resultset_message =\u3053\u306E\u5217\u306B\u9069\u5207\u306A\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u306A\u3044\u5834\u5408\u3001\u5927\u304D\u306A\u8868\u306E\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u9806\u5E8F\u4ED8\u3051\u306B\u6642\u9593\u304C\u304B\u304B\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\ n \ n\u3053\u306E\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u5217{0}\u3067\u9806\u5E8F\u4ED8\u3051\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +confirm_order_resultset_title =\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u6CE8\u6587\u3059\u308B +confirm_order_resultset_toggleMessage =\u4eca\u5f8c\u306f\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u306f\u8868\u793a\u3057\u306a\u3044 + +confirm_version_check_message =\u65B0\u3057\u3044{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1}\u304C{2}\u3067\u30EA\u30EA\u30FC\u30B9\u3055\u308C\u307E\u3057\u305F\u3002\ n\u73FE\u5728\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u66F4\u65B0\u3057\u307E\u3059\u304B\uFF1F +confirm_version_check_title =\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 +confirm_version_check_toggleMessage =\u4eca\u5f8c\u306f\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u306f\u8868\u793a\u3057\u306a\u3044 + + +controls_client_home_selector_browse =\u30D6\u30E9\u30A6\u30BA... +controls_client_homes_panel_button_add_home =\u30DB\u30FC\u30E0\u3092\u8FFD\u52A0 +controls_client_homes_panel_button_remove_home =\u30DB\u30FC\u30E0\u3092\u524A\u9664 +controls_client_homes_panel_confirm_remove_home_text =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30DB\u30FC\u30E0 "{0}"\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +controls_client_homes_panel_confirm_remove_home_title =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30DB\u30FC\u30E0\u3092\u524A\u9664\u3059\u308B +controls_client_homes_panel_dialog_title =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306E\u30DB\u30FC\u30E0 +controls_client_homes_panel_group_information =\u60C5\u5831 +controls_client_homes_panel_label_id =ID +controls_client_homes_panel_label_name =\u540D +controls_client_homes_panel_label_path =\u30D1\u30B9 +controls_client_homes_panel_label_product_name =\u5546\u54C1\u540D +controls_client_homes_panel_label_product_version =\u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3 +controls_column_info_panel_property_key =\u30AD\u30FC +controls_connection_properties_action_add_property =\u65B0\u3057\u3044\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8FFD\u52A0\u3059\u308B +controls_connection_properties_action_remove_property =\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u524A\u9664 +controls_connection_properties_category_user_properties =\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D1\u30C6\u30A3 +controls_connection_properties_dialog_new_property_title =\u30D7\u30ED\u30D1\u30C6\u30A3\u540D +controls_driver_tree_column_connections =\u63A5\u7D9A +controls_driver_tree_column_name =\u540D +controls_imageview_fit_window =\u7A93\u306B\u30D5\u30A3\u30C3\u30C8 +controls_imageview_original_size =\u30AA\u30EA\u30B8\u30CA\u30EB\u30B5\u30A4\u30BA +controls_imageview_rotate =\u56DE\u8EE2\u3059\u308B +controls_imageview_zoom_in =\u30BA\u30FC\u30E0\u30A4\u30F3 +controls_imageview_zoom_out =\u30BA\u30FC\u30E0\u30A2\u30A6\u30C8\u3059\u308B +controls_itemlist_action_copy =\u30B3\u30D4\u30FC +controls_locale_selector_group_locale =\u30ED\u30B1\u30FC\u30EB +controls_locale_selector_label_country =\u56FD +controls_locale_selector_label_language =\u8A00\u8A9E +controls_locale_selector_label_locale =\u30ED\u30B1\u30FC\u30EB +controls_locale_selector_label_variant =\u30D0\u30EA\u30A2\u30F3\u30C8 +controls_object_list_job_props_read =\u30EC\u30A4\u30B8\u30FC\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u8AAD\u307F\u8FBC\u307F +controls_object_list_message_items ={0}\u500B\u306E\u30A2\u30A4\u30C6\u30E0 +controls_object_list_message_no_items =\u30A2\u30A4\u30C6\u30E0\u306F\u3042\u308A\u307E\u305B\u3093 +controls_object_list_monitor_load_lazy_props =\u6020\u60F0\u306A\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8AAD\u307F\u8FBC\u3080 +controls_object_list_monitor_load_props ={0}\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u30ED\u30FC\u30C9\u3059\u308B +controls_object_list_status_objects ={0}\u500B\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +controls_progress_page_action_close =\u691C\u7D22\u30D1\u30CD\u30EB\u3092\u9589\u3058\u308B +controls_progress_page_job_search =\u30B5\u30FC\u30C1 +controls_progress_page_progress_bar_cancel_tooltip =\u73FE\u5728\u306E\u64CD\u4F5C\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B +controls_progress_page_progress_bar_loading_tooltip =\u9032\u884C\u72B6\u6CC1\u3092\u8AAD\u307F\u8FBC\u3080 +controls_progress_page_toolbar_title =\u691C\u7D22\u9805\u76EE +controls_querylog__ms =\ \u30DF\u30BA +controls_querylog_action_clear_log =\u30ED\u30B0\u3092\u30AF\u30EA\u30A2\u3059\u308B +controls_querylog_action_copy =\u30B3\u30D4\u30FC +controls_querylog_action_copy_all_fields =\u3059\u3079\u3066\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30B3\u30D4\u30FC +controls_querylog_action_select_all =\u3059\u3079\u3066\u9078\u629E +controls_querylog_column_connection_name =\u60C5\u5831\u5143 +controls_querylog_column_connection_tooltip =\u3053\u306E\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30A4\u30D9\u30F3\u30C8\u304C\u5C5E\u3059\u308B\u63A5\u7D9A +controls_querylog_column_context_name =\u63A5\u7D9A +controls_querylog_column_context_tooltip =\u3053\u306E\u30A4\u30D9\u30F3\u30C8\u306E\u5F71\u97FF\u3092\u53D7\u3051\u308B\u5B9F\u969B\u306E\u7269\u7406\u63A5\u7D9A +controls_querylog_column_duration_name =\u671F\u9593 +controls_querylog_column_duration_tooltip =\u64CD\u4F5C\u5B9F\u884C\u6642\u9593 +controls_querylog_column_result_name =\u7D50\u679C +controls_querylog_column_result_tooltip =\u5B9F\u884C\u7D50\u679C +controls_querylog_column_rows_name =\u884C +controls_querylog_column_rows_tooltip =\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u306B\u3088\u3063\u3066\u51E6\u7406\u3055\u308C\u305F\u884C\u306E\u6570 +controls_querylog_column_text_name =\u30C6\u30AD\u30B9\u30C8 +controls_querylog_column_text_tooltip =SQL\u6587\u306E\u30C6\u30AD\u30B9\u30C8/\u8AAC\u660E +controls_querylog_column_time_name =\u6642\u9593 +controls_querylog_column_time_tooltip =\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u304C\u5B9F\u884C\u3055\u308C\u305F\u6642\u523B +controls_querylog_column_type_name =\u30BF\u30A4\u30D7 +controls_querylog_column_type_tooltip =\u30A4\u30D9\u30F3\u30C8\u30BF\u30A4\u30D7 +controls_querylog_commit =\u30B3\u30DF\u30C3\u30C8 +controls_querylog_connected_to =\u306B\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u3059 " +controls_querylog_disconnected_from =\u304B\u3089\u5207\u65AD\u3055\u308C\u305F " +controls_querylog_error =\u30A8\u30E9\u30FC[ +controls_querylog_format_minutes ={0}\u5206{1}\u79D2 +controls_querylog_job_refresh =\u30EA\u30ED\u30FC\u30C9QM\u30A4\u30D9\u30F3\u30C8\u30ED\u30B0 +controls_querylog_label_result =\u7D50\u679C +controls_querylog_label_text =\u30C6\u30AD\u30B9\u30C8 +controls_querylog_label_time =\u6642\u9593 +controls_querylog_label_type =\u30BF\u30A4\u30D7 +controls_querylog_rollback =\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF +controls_querylog_savepoint =\u30BB\u30FC\u30D6\u30DD\u30A4\u30F3\u30C8 +controls_querylog_script =\u30B9\u30AF\u30EA\u30D7\u30C8 +controls_querylog_shell_text =\u30D3\u30E5\u30FC +controls_querylog_success =\u6210\u529F +controls_querylog_transaction =\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3 +controls_resultset_check_autocommit_state =\u63A5\u7D9A\u306E\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8\u72B6\u614B\u3092\u30C1\u30A7\u30C3\u30AF\u3059\u308B +controls_resultset_config_panels =\u30D1\u30CD\u30EB +controls_resultset_config_record =\u8A18\u9332 +controls_resultset_edit_cancel =Cancle +controls_resultset_edit_save =\u30BB\u30FC\u30D6 +controls_resultset_edit_script =\u30B9\u30AF\u30EA\u30D7\u30C8 +controls_resultset_filter_button_reset =\u30EA\u30BB\u30C3\u30C8 +controls_resultset_filter_column_criteria =\u57FA\u6E96 +controls_resultset_filter_column_name =\u540D +controls_resultset_filter_column_order =\u6CE8\u6587 +controls_resultset_filter_group_columns =\u5217 +controls_resultset_filter_group_custom =\u30AB\u30B9\u30BF\u30E0 +controls_resultset_filter_label_orderby =\u6CE8\u6587\u3059\u308B +controls_resultset_filter_label_where =\u3069\u3053\u3067 +controls_resultset_filter_title =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u9806\u5E8F/\u30D5\u30A3\u30EB\u30BF\u8A2D\u5B9A +controls_resultset_filter_warning_custom_order_disabled =\u30AB\u30B9\u30BF\u30E0\u30AF\u30A8\u30EA\u3067\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF\u3068\u30AB\u30B9\u30BF\u30E0\u6CE8\u6587\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u308B +controls_resultset_viewer_action_custom_filter =\u9AD8\u5EA6\u306A... +controls_resultset_viewer_action_edit =\u7DE8\u96C6... +#controls_resultset_viewer_action_export =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8... +controls_resultset_viewer_action_options =\u8A2D\u5B9A +controls_resultset_viewer_action_order_filter =\u30AA\u30FC\u30C0\u30FC/\u30D5\u30A3\u30EB\u30BF\u30FC +controls_resultset_viewer_action_panels =\u30D1\u30CD\u30EB\u306E\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA +controls_resultset_viewer_action_refresh =\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3059\u308B +controls_resultset_viewer_add_new_row_context_name =\u884C\u306E\u5024\u3092\u30B3\u30D4\u30FC\u3059\u308B +controls_resultset_viewer_dialog_status_title =\u72B6\u614B +controls_resultset_viewer_job_update =\u30C7\u30FC\u30BF\u306E\u66F4\u65B0 +controls_resultset_viewer_monitor_aply_changes =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u5909\u66F4\u3092\u9069\u7528\u3059\u308B +controls_resultset_viewer_status_empty =\u7A7A\u306E +controls_resultset_viewer_status_inserted_ =\u633F\u5165\u6E08\u307F\uFF1A{0} /\u524A\u9664\u6E08\u307F\uFF1A{1} /\u66F4\u65B0\u6E08\u307F\uFF1A{2} +controls_resultset_viewer_status_no_data =\u30C7\u30FC\u30BF\u306A\u3057 +controls_resultset_viewer_status_row =\u884C +controls_resultset_viewer_status_rows =\ row\uFF08s\uFF09 +controls_resultset_viewer_status_rows_fetched =\ row\uFF08s\uFF09\u304C\u53D6\u5F97\u3055\u308C\u307E\u3057\u305F +controls_resultset_viewer_status_rows_size ={0}\u884C\uFF08+ {1}\uFF09 +controls_resultset_viewer_value =\u5024 +controls_rs_pump_job_context_name ={0}\u304B\u3089\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u8FBC\u3080 +controls_rs_pump_job_name =\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u8FBC\u3080 +controls_time_ms =\u30DF\u30BA + + +data_transfer_wizard_final_column_source =\u30BD\u30FC\u30B9 +data_transfer_wizard_final_column_target =\u30BF\u30FC\u30B2\u30C3\u30C8 +data_transfer_wizard_final_description =\u7D50\u679C\u3092\u78BA\u8A8D\u3059\u308B +data_transfer_wizard_final_group_tables =\u30C6\u30FC\u30D6\u30EB +data_transfer_wizard_final_name =\u78BA\u8A8D +data_transfer_wizard_final_title =\u78BA\u8A8D +data_transfer_wizard_init_column_description =\u8AAC\u660E +data_transfer_wizard_init_column_exported =\u8F38\u51FA\u696D\u8005 +data_transfer_wizard_init_description =\u30C7\u30FC\u30BF\u8EE2\u9001\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30BF\u30A4\u30D7\u3068\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u8A2D\u5B9A\u3059\u308B +data_transfer_wizard_init_name =\u8EE2\u9001\u30BF\u30FC\u30B2\u30C3\u30C8 +data_transfer_wizard_init_title =\u30C7\u30FC\u30BF\u8EE2\u9001\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30BF\u30A4\u30D7\u3068\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +data_transfer_wizard_job_container_name =\u300C{0}\u300D\u304B\u3089\u30C7\u30FC\u30BF\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +data_transfer_wizard_job_name =\u30C7\u30FC\u30BF\u8EE2\u9001 +data_transfer_wizard_job_task_export =\u30C7\u30FC\u30BF\u8EE2\u9001 +data_transfer_wizard_job_task_export_table_data =\u30C6\u30FC\u30D6\u30EB\u30C7\u30FC\u30BF\u306E\u8EE2\u9001 +data_transfer_wizard_job_task_retrieve =\u884C\u6570\u3092\u53D6\u5F97\u3059\u308B +data_transfer_wizard_name =\u30C7\u30FC\u30BF\u8EE2\u9001 +data_transfer_wizard_output_checkbox_compress =\u5727\u7E2E\u3059\u308B +data_transfer_wizard_output_checkbox_new_connection =\u65B0\u3057\u3044\u63A5\u7D9A\u3092\u958B\u304F +data_transfer_wizard_output_checkbox_open_folder =\u6700\u5F8C\u306B\u51FA\u529B\u30D5\u30A9\u30EB\u30C0\u3092\u958B\u304F +data_transfer_wizard_output_checkbox_select_row_count =\u884C\u6570\u306E\u9078\u629E +data_transfer_wizard_output_checkbox_selected_columns_only =\u9078\u629E\u3057\u305F\u5217\u306E\u307F +data_transfer_wizard_output_checkbox_selected_rows_only =\u9078\u629E\u3055\u308C\u305F\u884C\u306E\u307F +data_transfer_wizard_output_combo_extract_type_item_by_segments =\u30BB\u30B0\u30E1\u30F3\u30C8\u5225 +data_transfer_wizard_output_combo_extract_type_item_single_query =\u5358\u4E00\u306E\u30AF\u30A8\u30EA +data_transfer_wizard_output_description =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u51FA\u529B\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u8A2D\u5B9A\u3059\u308B +data_transfer_wizard_output_dialog_directory_message =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9078\u629E\u3059\u308B +data_transfer_wizard_output_dialog_directory_text =\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +data_transfer_wizard_output_group_general =\u4E00\u822C +data_transfer_wizard_output_group_progress =\u9032\u6357 +data_transfer_wizard_output_label_directory =\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +data_transfer_wizard_output_label_encoding =\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +data_transfer_wizard_output_label_extract_type =\u62BD\u51FA\u30BF\u30A4\u30D7 +data_transfer_wizard_output_label_file_name_pattern =\u30D5\u30A1\u30A4\u30EB\u540D\u30D1\u30BF\u30FC\u30F3 +data_transfer_wizard_output_label_insert_bom =BOM\u3092\u633F\u5165 +data_transfer_wizard_output_label_insert_bom_tooltip =Unicode\u6587\u5B57\u30BB\u30C3\u30C8\u306B\u4F7F\u7528\u3055\u308C\u3001MS Excel\u306A\u3069\u306E\u4E00\u90E8\u306E\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2\u3067\u5FC5\u8981\u3068\u3055\u308C\u308BBOM\uFF08Byte-Order-Mark\uFF09\u3002\u540C\u6642\u306B\u3001\u4ED6\u306E\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +data_transfer_wizard_output_label_max_threads =\u6700\u5927\u30B9\u30EC\u30C3\u30C9\u6570 +data_transfer_wizard_output_label_segment_size =\u30BB\u30B0\u30E1\u30F3\u30C8\u30B5\u30A4\u30BA +data_transfer_wizard_output_name =\u51FA\u529B +data_transfer_wizard_output_title =\u51FA\u529B +data_transfer_wizard_settings_binaries_item_inline =\u5217\u3092\u306A\u3057\u3066 +data_transfer_wizard_settings_binaries_item_save_to_file =\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58 +data_transfer_wizard_settings_binaries_item_set_to_null =NULL\u306B\u8A2D\u5B9A\u3059\u308B +data_transfer_wizard_settings_button_edit =\u7DE8\u96C6... +data_transfer_wizard_settings_description =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u8A2D\u5B9A\u3092\u8A2D\u5B9A\u3059\u308B +data_transfer_wizard_settings_group_exporter =\u30A8\u30AF\u30B9\u30DD\u30FC\u30BF\u8A2D\u5B9A +data_transfer_wizard_settings_group_general =\u4E00\u822C +data_transfer_wizard_settings_label_binaries =\u30D0\u30A4\u30CA\u30EA +data_transfer_wizard_settings_label_encoding =\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +data_transfer_wizard_settings_label_formatting =\u66F8\u5F0F\u8A2D\u5B9A +data_transfer_wizard_settings_listbox_formatting_item_default =<\u63A5\u7D9A\u306E\u65E2\u5B9A\u5024> +data_transfer_wizard_settings_name =\u8A2D\u5B9A +data_transfer_wizard_settings_title =\u8A2D\u5B9A + + +dialog_about_font =\u30B5\u30F3\u30BB\u30EA\u30D5 +dialog_about_label_version =\u30D0\u30FC\u30B8\u30E7\u30F3 +dialog_about_title =\u7D04 +dialog_connection_auth_checkbox_save_password =\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u4FDD\u5B58\u3059\u308B +dialog_connection_auth_group_user_cridentials =\u30E6\u30FC\u30B6\u30FC\u8CC7\u683C\u60C5\u5831\uFF1A +dialog_connection_auth_label_password =\u30D1\u30B9\u30EF\u30FC\u30C9\uFF1A +dialog_connection_auth_label_username =\u30E6\u30FC\u30B6\u30FC\u540D\uFF1A +dialog_connection_auth_title ='\u8A8D\u8A3C +dialog_connection_auth_title_for_handler ={0}\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u6307\u5B9A\u3059\u308B +dialog_connection_button_test =\u30C6\u30B9\u30C8\u63A5\u7D9A\uFF08\uFF06T\uFF09... +#page conn setting +dialog_connection_description =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3002 +dialog_connection_driver =\u30C9\u30E9\u30A4\u30D0\u540D\uFF1A +dialog_connection_driver_project =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +dialog_connection_driver_treecontrol_initialText =\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3059\u308B\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9/\u30C9\u30E9\u30A4\u30D0\u540D\u306E\u4E00\u90E8\u3092\u5165\u529B\u3057\u307E\u3059 +dialog_connection_edit_driver_button =\u30C9\u30E9\u30A4\u30D0\u8A2D\u5B9A\u306E\u7DE8\u96C6 +dialog_connection_events_checkbox_show_process =\u30D7\u30ED\u30BB\u30B9\u30D1\u30CD\u30EB\u3092\u8868\u793A +dialog_connection_events_checkbox_terminate_at_disconnect =\u5207\u65AD\u6642\u306B\u7D42\u4E86\u3059\u308B +dialog_connection_events_checkbox_wait_finish =\u30D7\u30ED\u30BB\u30B9\u304C\u7D42\u4E86\u3059\u308B\u306E\u3092\u5F85\u3064 +dialog_connection_events_checkbox_wait_finish_timeout =\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08\u30DF\u30EA\u79D2\uFF09 +dialog_connection_events_label_command =\u30B3\u30DE\u30F3\u30C9 +dialog_connection_events_label_event =\u30A4\u30D9\u30F3\u30C8 +dialog_connection_events_title =\u63A5\u7D9A\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u7DE8\u96C6\u3059\u308B +dialog_connection_message ={0}\u63A5\u7D9A\u8A2D\u5B9A +#page conn network +dialog_connection_network_title =\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF +dialog_connection_wizard_configure =\u8A2D\u5B9A... +dialog_connection_wizard_description =\u8AAC\u660E +dialog_connection_wizard_final_button_events =\u30A4\u30D9\u30F3\u30C8... +dialog_connection_wizard_final_button_test =\u63A5\u7D9A\u306E\u30C6\u30B9\u30C8... +dialog_connection_wizard_final_button_tunneling =\u30C8\u30F3\u30CD\u30EA\u30F3\u30B0... +dialog_connection_wizard_final_checkbox_auto_commit =\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8 +#dialog_connection_wizard_final_checkbox_auto_commit_tooltip =\u3059\u3079\u3066\u306E\u63A5\u7D9A\u306B\u5BFE\u3057\u3066\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3059\u308B +dialog_connection_wizard_final_checkbox_connection_readonly =\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u63A5\u7D9A +dialog_connection_wizard_final_checkbox_filter_catalogs =\u30AB\u30BF\u30ED\u30B0\u306E\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0 +dialog_connection_wizard_final_checkbox_filter_schemas =\u30D5\u30A3\u30EB\u30BF\u30B9\u30AD\u30FC\u30DE +dialog_connection_wizard_final_checkbox_save_password_locally =\u30ED\u30FC\u30AB\u30EB\u306B\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u4FDD\u5B58\u3059\u308B +dialog_connection_wizard_final_checkbox_show_system_objects =\u30B7\u30B9\u30C6\u30E0\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8868\u793A\u3059\u308B +dialog_connection_wizard_final_checkbox_show_util_objects =\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8868\u793A\u3059\u308B +dialog_connection_wizard_final_default_new_connection_name =\u65B0\u3057\u3044\u63A5\u7D9A +dialog_connection_wizard_final_description =\u4E00\u822C\u7684\u306A\u63A5\u7D9A\u8A2D\u5B9A\u3002 +dialog_connection_wizard_final_filter_catalogs =\u30AB\u30BF\u30ED\u30B0 +dialog_connection_wizard_final_filter_link_not_supported_text = {0}\uFF08\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF09 +dialog_connection_wizard_final_filter_link_not_supported_tooltip ={0}\u306F{1}\u30C9\u30E9\u30A4\u30D0\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +dialog_connection_wizard_final_filter_link_tooltip ={0}\u306E\u30D5\u30A3\u30EB\u30BF\u3092\u69CB\u6210\u3059\u308B +dialog_connection_wizard_final_filter_schemas_users =\u30B9\u30AD\u30FC\u30DE/\u30E6\u30FC\u30B6\u30FC +dialog_connection_wizard_final_filter_tables =\u30C6\u30FC\u30D6\u30EB +dialog_connection_wizard_final_filter_attributes =\u5217 +dialog_connection_wizard_final_group_filters =\u30D5\u30A3\u30EB\u30BF +dialog_connection_wizard_final_group_misc =\u96D1 +dialog_connection_wizard_final_group_security =\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3 +dialog_connection_wizard_final_header =\u63A5\u7D9A\u306E\u4F5C\u6210\u3092\u7D42\u4E86\u3059\u308B +dialog_connection_wizard_final_label_bootstrap_query =\u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u306E\u30AF\u30A8\u30EA +dialog_connection_wizard_final_label_bootstrap_tooltip =\u63A5\u7D9A\u78BA\u7ACB\u76F4\u5F8C\u306B\u5B9F\u884C\u3059\u308BSQL\u30AF\u30A8\u30EA +dialog_connection_wizard_final_label_connection =\u63A5\u7D9A +dialog_connection_wizard_final_label_connection_folder =\u63A5\u7D9A\u30D5\u30A9\u30EB\u30C0 +dialog_connection_wizard_final_label_connection_name =\u63A5\u7D9A\u540D +dialog_connection_wizard_final_label_connection_type =\u63A5\u7D9A\u30BF\u30A4\u30D7 +dialog_connection_wizard_final_label_default_schema =\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30AD\u30FC\u30DE +dialog_connection_wizard_final_label_default_schema_tooltip =\u30C7\u30D5\u30A9\u30EB\u30C8\u3068\u3057\u3066\u8A2D\u5B9A\u3055\u308C\u308B\u30B9\u30AD\u30FC\u30DE\u307E\u305F\u306F\u30AB\u30BF\u30ED\u30B0\u306E\u540D\u524D\u3002 +dialog_connection_wizard_final_label_edit =\u7DE8\u96C6 +dialog_connection_wizard_final_label_isolation_level =\u5206\u96E2\u30EC\u30D9\u30EB +dialog_connection_wizard_final_label_isolation_level_tooltip =\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u5206\u96E2\u30EC\u30D9\u30EB\u3002 +dialog_connection_wizard_final_label_keepalive =\u751F\u304D\u7D9A\u3051\u308B +dialog_connection_wizard_final_label_keepalive_tooltip =\u30AD\u30FC\u30D7\u30A2\u30E9\u30A4\u30D6\u9593\u9694\uFF08\u79D2\uFF09\u3002\u30BC\u30ED\u306F\u30AD\u30FC\u30D7\u30A2\u30E9\u30A4\u30D6\u3092\u30AA\u30D5\u306B\u3057\u307E\u3059 +dialog_connection_wizard_final_label_shell_command =\u30B7\u30A7\u30EB\u30B3\u30DE\u30F3\u30C9 +dialog_connection_wizard_socksproxy_host =\u30DB\u30B9\u30C8 +dialog_connection_wizard_socksproxy_password =\u30D1\u30B9\u30EF\u30FC\u30C9 +dialog_connection_wizard_socksproxy_port =\u30DD\u30FC\u30C8 +dialog_connection_wizard_socksproxy_username =\u30E6\u30FC\u30B6\u30FC\u540D +dialog_connection_wizard_start_connection_monitor_close =\u63A5\u7D9A\u3092\u9589\u3058\u308B +dialog_connection_wizard_start_connection_monitor_connected =\u63A5\u7D9A\u6E08\u307F\uFF08{0} ms\uFF09 +dialog_connection_wizard_start_connection_monitor_start =\u63A5\u7D9A\u3092\u53D6\u5F97\u3059\u308B +dialog_connection_wizard_start_connection_monitor_subtask_test =\u63A5\u7D9A\u306E\u30C6\u30B9\u30C8 +dialog_connection_wizard_start_connection_monitor_success =\u6210\u529F +dialog_connection_wizard_start_connection_monitor_thread =\u30C6\u30B9\u30C8\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u63A5\u7D9A +dialog_connection_wizard_start_dialog_error_message =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u63A5\u7D9A\u30A8\u30E9\u30FC +dialog_connection_wizard_start_dialog_error_title =\u63A5\u7D9A\u30A8\u30E9\u30FC +dialog_connection_wizard_start_dialog_interrupted_message =\u30C6\u30B9\u30C8\u4E2D\u65AD +dialog_connection_wizard_start_dialog_interrupted_title =\u4E2D\u65AD\u3055\u308C\u305F +dialog_connection_wizard_title =\u63A5\u7D9A\u3092\u7DE8\u96C6\u3059\u308B +dialog_cursor_view_monitor_rows_fetched =\ rows fetched +dialog_data_format_profiles_button_delete_profile =\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u524A\u9664 +dialog_data_format_profiles_button_new_profile =\u65B0\u3057\u3044\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB +dialog_data_format_profiles_confirm_delete_message =\u672c\u5f53\u306b\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +dialog_data_format_profiles_confirm_delete_title =\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u524A\u9664 +dialog_data_format_profiles_dialog_name_chooser_title =\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u540D +dialog_data_format_profiles_error_message =\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB "{0}"\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059 +dialog_data_format_profiles_error_title =\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u4F5C\u6210 +dialog_data_format_profiles_title =\u30C7\u30FC\u30BF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u7BA1\u7406\u3059\u308B +dialog_data_label_value =\u5024\uFF1A +dialog_text_view_open_editor =\u30AA\u30FC\u30D7\u30F3\u30A8\u30C7\u30A3\u30BF +dialog_text_view_open_editor_tip =\u30BB\u30EB\u5024\u306E\u305F\u3081\u306E\u5225\u306E\u30A8\u30C7\u30A3\u30BF\u3092\u958B\u304D\u307E\u3059\u3002\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u74B0\u5883\u8A2D\u5B9A\u3067\u3053\u306E\u52D5\u4F5C\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002 +dialog_driver_manager_button_delete =\u524A\u9664\uFF08\uFF06D\uFF09 +dialog_driver_manager_button_edit =\u7DE8\u96C6\uFF08\uFF06E\uFF09... +dialog_driver_manager_button_new =\uFF06\u65B0\u3057\u3044 +dialog_driver_manager_button_copy =\u30B3\u30D4\u30FC\uFF08\uFF06C\uFF09 +dialog_driver_manager_label_unavailable = - \u5229\u7528\u3067\u304D\u307E\u305B\u3093 +dialog_driver_manager_label_user_defined =#NAME? +dialog_driver_manager_message_cant_delete_text =\u30C9\u30E9\u30A4\u30D0 "{0}"\u306F\u3001\u6B21\u306E\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3067\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u524A\u9664\u3067\u304D\u307E\u305B\u3093\uFF1A +dialog_driver_manager_message_cant_delete_title =\u30C9\u30E9\u30A4\u30D0\u3092\u524A\u9664\u3067\u304D\u307E\u305B\u3093 +dialog_driver_manager_message_delete_driver_text =\u3042\u306A\u305F\u306F\u30C9\u30E9\u30A4\u30D0\u30FC\u306E\u540D\u524D\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F +dialog_driver_manager_message_delete_driver_title =\u30C9\u30E9\u30A4\u30D0\u3092\u524A\u9664\u3059\u308B +dialog_driver_manager_title =\u30C9\u30E9\u30A4\u30D0\u30FC\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +dialog_edit_driver_button_add_artifact =\uFF06\u30A2\u30FC\u30C6\u30A3\u30D5\u30A1\u30AF\u30C8\u3092\u8FFD\u52A0 +dialog_edit_driver_button_add_file =\u30D5\u30A1\u30A4\u30EB\u3092\u8FFD\u52A0\uFF08\uFF06F\uFF09 +dialog_edit_driver_button_add_folder =\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8FFD\u52A0 +dialog_edit_driver_button_bind_class =\u30AF\u30E9\u30B9\u3092\u898B\u3064\u3051\u308B +dialog_edit_driver_button_classpath =\u30AF\u30E9\u30B9\u30D1\u30B9 +dialog_edit_driver_button_delete =D\uFF06\u30A8\u30EC\u30C6 +dialog_edit_driver_button_details =\uFF06\u60C5\u5831 +dialog_edit_driver_button_down =\u30C0\u30A6\u30F3 +dialog_edit_driver_button_reset_to_defaults =\u65E2\u5B9A\u5024\u306B\u30EA\u30BB\u30C3\u30C8 +dialog_edit_driver_button_up =\uFF06\u30A2\u30C3\u30D7 +dialog_edit_driver_button_update_version =\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3068\u66F4\u65B0 +dialog_edit_driver_dialog_driver_error_message =\u30C9\u30E9\u30A4\u30D0\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093 +dialog_edit_driver_dialog_driver_error_title =\u30C9\u30E9\u30A4\u30D0\u30A8\u30E9\u30FC +dialog_edit_driver_dialog_open_driver_directory =\u30C9\u30E9\u30A4\u30D0\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u958B\u304F +dialog_edit_driver_dialog_open_driver_library =\u30C9\u30E9\u30A4\u30D0\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u958B\u304F +dialog_edit_driver_label_category =\u30AB\u30C6\u30B4\u30EA\u30FC +dialog_edit_driver_label_class_name =\u30AF\u30E9\u30B9\u540D +dialog_edit_driver_label_default_port =\u30C7\u30D5\u30A9\u30EB\u30C8\u30DD\u30FC\u30C8 +dialog_edit_driver_label_description =\u8AAC\u660E +dialog_edit_driver_label_driver_class =\u30C9\u30E9\u30A4\u30D0\u30AF\u30E9\u30B9 +dialog_edit_driver_label_driver_name =\u30C9\u30E9\u30A4\u30D0\u540D +dialog_edit_driver_label_sample_url =URL\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +dialog_edit_driver_label_website =\u30A6\u30A7\u30D6\u30B5\u30A4\u30C8 +dialog_edit_driver_tab_name_advanced_parameters =Adv\u3002\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +dialog_edit_driver_tab_name_client_homes =\u30CD\u30A4\u30C6\u30A3\u30D6\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8 +dialog_edit_driver_tab_name_connection_properties =\u63A5\u7D9A\u30D7\u30ED\u30D1\u30C6\u30A3 +dialog_edit_driver_tab_name_driver_libraries =\u56F3\u66F8\u9928 +dialog_edit_driver_tab_name_license =\u30E9\u30A4\u30BB\u30F3\u30B9 +dialog_edit_driver_tab_tooltip_advanced_parameters =\u9AD8\u5EA6\u306A\u30C9\u30E9\u30A4\u30D0\u30D1\u30E9\u30E1\u30FC\u30BF +dialog_edit_driver_tab_tooltip_connection_properties =\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u63A5\u7D9A\u30D7\u30ED\u30D1\u30C6\u30A3 +dialog_edit_driver_tab_tooltip_driver_libraries =\u8FFD\u52A0\u30C9\u30E9\u30A4\u30D0\u30E9\u30A4\u30D6\u30E9\u30EA +dialog_edit_driver_tab_tooltip_license =\u904B\u8EE2\u514D\u8A31\u8A3C +dialog_edit_driver_text_driver_license =\u904B\u8EE2\u514D\u8A31\u8A3C +dialog_edit_driver_title_create_driver =\u65B0\u3057\u3044\u30C9\u30E9\u30A4\u30D0\u3092\u4F5C\u6210\u3059\u308B +dialog_edit_driver_title_edit_driver =\u30C9\u30E9\u30A4\u30D0\u30FC\u306E\u7DE8\u96C6 +dialog_filter_button_add =\u8FFD\u52A0 +dialog_filter_button_clear =\u30AF\u30EA\u30A2 +dialog_filter_button_enable =\u6709\u52B9\u306B\u3059\u308B +dialog_filter_button_remove =\u524A\u9664\u3059\u308B +dialog_filter_global_link =\u30B0\u30ED\u30FC\u30D0\u30EB\u30D5\u30A3\u30EB\u30BF\u3092\u8868\u793A +dialog_filter_list_exclude =\u9664\u5916 +dialog_filter_list_include =\u542B\u3081\u308B +dialog_filter_table_column_value =\u5024 +dialog_filter_title =\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\uFF1A{0} +dialog_find_replace_1_replacement =1\u4EA4\u63DB +dialog_find_replace_backward =\u30D0\u30C3\u30AF\u30EF\u30FC\u30C9 +dialog_find_replace_cancel =\u30AD\u30E3\u30F3\u30BB\u30EB +dialog_find_replace_close =\u9589\u3058\u308B +dialog_find_replace_copy =\u30B3\u30D4\u30FC +dialog_find_replace_direction =\u65B9\u5411 +dialog_find_replace_error_ =\u30A8\u30E9\u30FC\uFF1A +dialog_find_replace_find =Fi\uFF06nd +dialog_find_replace_find_literal =\u30EA\u30C6\u30E9\u30EB\u3092\u898B\u3064\u3051\u308B +dialog_find_replace_find_replace =\u691C\u7D22/\u7F6E\u63DB +dialog_find_replace_forward =F\uFF06orward +dialog_find_replace_found_literal =\u6587\u5B57\u901A\u308A\u898B\u3064\u304B\u3063\u305F +dialog_find_replace_goto_line =\u884C\u306B\u884C\u304F +dialog_find_replace_ignore_case =\u7121\u8996\u3059\u308B +dialog_find_replace_literal_not_found =\u30EA\u30C6\u30E9\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +dialog_find_replace_new_find =\u65B0\u3057\u3044\u691C\u7D22 +dialog_find_replace_paste =\u30DA\u30FC\u30B9\u30C8 +dialog_find_replace_redo =\u3084\u308A\u76F4\u3057 +dialog_find_replace_replace =\u7F6E\u63DB\uFF08\uFF06R\uFF09 +dialog_find_replace_replace_all =\u3059\u3079\u3066\u3092\u7F6E\u63DB +dialog_find_replace_replace_find =\u30D5\u30A3\u30F3\u3092\u4EA4\u63DB\u3057\u3066\u304F\u3060\u3055\u3044 +dialog_find_replace_replace_with =\u3068\u7F6E\u63DB\u3059\u308B +dialog_find_replace_replacements =\\u7F6E\u63DB +dialog_find_replace_searching =\u691C\u7D22 +dialog_find_replace_stop =\u3084\u3081\u308B +dialog_find_replace_text =\u30C6\u30AD\u30B9\u30C8 +dialog_find_replace_undo =\u5143\u306B\u623B\u3059 +dialog_go_to_button_close =\u9589\u3058\u308B +dialog_go_to_button_go_to_location =\u5834\u6240\u306B\u79FB\u52D5\u3059\u308B +dialog_go_to_button_show_location =\u5834\u6240\u3092\u8868\u793A\u3059\u308B +dialog_go_to_label_enter_location_number =\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u756A\u53F7\u30010\u301C{0}\uFF080x0\u301C0x {1}\uFF09\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +dialog_go_to_label_not_number =\u756A\u53F7\u3067\u306F\u306A\u3044 +dialog_go_to_label_out_of_range =\u5834\u6240\u304C\u7BC4\u56F2\u5916\u3067\u3059 +dialog_go_to_title =\u5834\u6240\u306B\u79FB\u52D5\u3059\u308B +dialog_migrate_wizard_choose_driver_description =\u9078\u629E\u3057\u305F\u63A5\u7D9A\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30C9\u30E9\u30A4\u30D0\u3092\u9078\u629E\u3057\u307E\u3059\u3002 +dialog_migrate_wizard_choose_driver_title =\u30BF\u30FC\u30B2\u30C3\u30C8\u30C9\u30E9\u30A4\u30D0\u3092\u9078\u629E +dialog_migrate_wizard_name =\u63A5\u7D9A +dialog_migrate_wizard_start_description =\u5225\u306E\u30C9\u30E9\u30A4\u30D0\u306B\u5909\u66f4\u3059\u308b\u63A5\u7D9A\u3092\u9078\u629E\u3057\u307E\u3059\u3002 +dialog_migrate_wizard_start_title =\u5909\u66f4\u3059\u308b\u63A5\u7D9A\u3092\u9078\u629E\u3059\u308B +dialog_migrate_wizard_window_title =\u5225\u306E\u30C9\u30E9\u30A4\u30D0\u306B\u63A5\u7D9A\u3092\u5909\u66f4\u3059\u308b +dialog_connection_network_socket_label_host =\u30DB\u30B9\u30C8 +dialog_connection_network_socket_label_port =\u30DD\u30FC\u30C8 +dialog_connection_network_socket_label_username =\u30E6\u30FC\u30B6\u30FC\u540D +dialog_connection_network_socket_label_password =\u30D1\u30B9\u30EF\u30FC\u30C9 +#page select conn +dialog_new_connection_wizard_monitor_load_data_sources =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3092\u30ED\u30FC\u30C9\u3059\u308B +dialog_new_connection_wizard_start_description =\u65B0\u3057\u3044\u63A5\u7D9A\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002\u30EA\u30B9\u30C8\u306B\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304C\u8868\u793A\u3055\u308C\u306A\u3044\u5834\u5408\u306F\u3001\u30C9\u30E9\u30A4\u30D0\u30DE\u30CD\u30FC\u30B8\u30E3\u3067\u65B0\u3057\u3044\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C9\u30E9\u30A4\u30D0\u3092\u4F5C\u6210\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002 +dialog_new_connection_wizard_start_title =\u65B0\u3057\u3044\u63A5\u7D9A\u30BF\u30A4\u30D7\u3092\u9078\u629E\u3059\u308B +dialog_new_connection_wizard_title =\u65B0\u3057\u3044\u63A5\u7D9A\u3092\u4F5C\u6210\u3059\u308B +dialog_project_create_wizard_error_already_exists =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 "{0}"\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059 +dialog_project_create_wizard_error_cannot_create =\u30A8\u30E9\u30FC\u3092\u4F5C\u6210\u3059\u308B +dialog_project_create_wizard_error_cannot_create_message =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +dialog_project_create_wizard_title =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4F5C\u6210\u30A6\u30A3\u30B6\u30FC\u30C9 +dialog_project_export_wizard_main_page =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_project_export_wizard_monitor_collect_info =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u60C5\u5831\u3092\u53CE\u96C6\u3059\u308B +dialog_project_export_wizard_monitor_export_driver_info =\u30C9\u30E9\u30A4\u30D0\u60C5\u5831\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_project_export_wizard_monitor_export_libraries =\u30C9\u30E9\u30A4\u30D0\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_project_export_wizard_monitor_export_project =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 "{0}"\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_project_export_wizard_page_checkbox_overwrite_files =\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B +dialog_project_export_wizard_page_dialog_choose_export_dir_message =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9078\u629E\u3059\u308B +dialog_project_export_wizard_page_dialog_choose_export_dir_text =\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +dialog_project_export_wizard_page_label_directory =\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +dialog_project_export_wizard_page_message_check_script =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +dialog_project_export_wizard_page_message_configure_settings =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002 +dialog_project_export_wizard_page_message_no_output_dir =\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +dialog_project_export_wizard_page_title =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_project_export_wizard_start_archive_name_prefix =\u3059\u3079\u3066 +dialog_project_export_wizard_start_checkbox_libraries =\u30C9\u30E9\u30A4\u30D0\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_project_export_wizard_start_dialog_directory_message =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9078\u629E\u3059\u308B +dialog_project_export_wizard_start_dialog_directory_text =\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +dialog_project_export_wizard_start_label_directory =\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +dialog_project_export_wizard_start_label_output_file =\u51FA\u529B\u30D5\u30A1\u30A4\u30EB +dialog_project_export_wizard_start_message_choose_project =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u307E\u3059\u3002 +dialog_project_export_wizard_start_message_configure_settings =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002 +dialog_project_export_wizard_start_message_empty_output_directory =\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +dialog_project_export_wizard_start_title =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +dialog_project_export_wizard_window_title =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u30A6\u30A3\u30B6\u30FC\u30C9 +dialog_project_import_wizard_file_checkbox_import_libraries =\u30C9\u30E9\u30A4\u30D0\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 +dialog_project_import_wizard_file_column_source_name =\u30AA\u30EA\u30B8\u30CA\u30EB\u540D +dialog_project_import_wizard_file_column_target_name =\u30BF\u30FC\u30B2\u30C3\u30C8\u540D +dialog_project_import_wizard_file_description =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002 +dialog_project_import_wizard_file_dialog_export_archive_text =\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u958B\u304F +dialog_project_import_wizard_file_group_input =\u5165\u529B +dialog_project_import_wizard_file_group_projects =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +dialog_project_import_wizard_file_label_file =\u30D5\u30A1\u30A4\u30EB +dialog_project_import_wizard_file_message_cannt_find_projects =\u30E1\u30BF\u30D5\u30A1\u30A4\u30EB\u3067\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u898B\u3064\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +dialog_project_import_wizard_file_message_choose_project =\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3059\u308B +dialog_project_import_wizard_file_message_project_exists =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 "{0}"\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059 +dialog_project_import_wizard_file_message_ready =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F +dialog_project_import_wizard_file_name =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B +dialog_project_import_wizard_file_title =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B +dialog_project_import_wizard_message_success_import_message =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u6210\u529F\u3057\u307E\u3057\u305F +dialog_project_import_wizard_message_success_import_title =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 +dialog_project_import_wizard_monitor_import_drivers =\u30C9\u30E9\u30A4\u30D0\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 +dialog_project_import_wizard_monitor_import_project =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B +dialog_project_import_wizard_monitor_import_projects =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 +dialog_project_import_wizard_monitor_load_driver =\u30C9\u30E9\u30A4\u30D0\u3092\u30ED\u30FC\u30C9\u3059\u308B +dialog_project_import_wizard_monitor_load_libraries =\u30C9\u30E9\u30A4\u30D0\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u30ED\u30FC\u30C9\u3059\u308B +dialog_project_import_wizard_title =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u30A6\u30A3\u30B6\u30FC\u30C9 +dialog_scripts_export_wizard_page_name =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_scripts_export_wizard_window_title =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u30A6\u30A3\u30B6\u30FC\u30C9 +dialog_scripts_import_wizard_description =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002 +dialog_scripts_import_wizard_dialog_choose_dir_message =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30BD\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9078\u629E\u3059\u308B +dialog_scripts_import_wizard_dialog_choose_dir_text =\u30BD\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +dialog_scripts_import_wizard_dialog_error_text =\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3067\u304D\u307E\u305B\u3093 +dialog_scripts_import_wizard_dialog_error_title =\u30A4\u30F3\u30DD\u30FC\u30C8\u30A8\u30E9\u30FC +dialog_scripts_import_wizard_dialog_message_no_scripts =\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F +dialog_scripts_import_wizard_dialog_message_success_imported =\ script\uFF08s\uFF09\u3092\u6B63\u5E38\u306B\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3057\u305F +dialog_scripts_import_wizard_dialog_message_title =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 +dialog_scripts_import_wizard_label_default_connection =\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u63A5\u7D9A +dialog_scripts_import_wizard_label_file_mask =\u30D5\u30A1\u30A4\u30EB\u30DE\u30B9\u30AF +dialog_scripts_import_wizard_label_input_directory =\u5165\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +dialog_scripts_import_wizard_label_root_folder =\u30EB\u30FC\u30C8\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A9\u30EB\u30C0 +dialog_scripts_import_wizard_monitor_import_scripts =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 +dialog_scripts_import_wizard_name =\u30A4\u30F3\u30DD\u30FC\u30C8\u30B9\u30AF\u30EA\u30D7\u30C8 +dialog_scripts_import_wizard_title =\u30A4\u30F3\u30DD\u30FC\u30C8\u30B9\u30AF\u30EA\u30D7\u30C8 +dialog_scripts_import_wizard_window_title =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u30A6\u30A3\u30B6\u30FC\u30C9 +dialog_search_objects_button_close =\u9589\u3058\u308B +dialog_search_objects_button_search =\u30B5\u30FC\u30C1 +dialog_search_objects_case_sensitive =\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57\u3092\u533A\u5225 +dialog_search_objects_column_description =\u8AAC\u660E +dialog_search_objects_column_type =\u30BF\u30A4\u30D7 +dialog_search_objects_combo_contains =\u542B\u6709 +dialog_search_objects_combo_like =\u597D\u304D +dialog_search_objects_combo_starts_with =\u3067\u59CB\u307E\u308B +dialog_search_objects_group_object_types =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u578B +dialog_search_objects_group_objects_source =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30BD\u30FC\u30B9 +dialog_search_objects_item_list_info =\u3042\u306A\u305F\u306F\u691C\u7D22\u30AF\u30A8\u30EA\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +dialog_search_objects_label_name_match =\u540D\u524D\u306E\u4E00\u81F4 +dialog_search_objects_label_object_name =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D +dialog_search_objects_message_no_objects_like_ =\u300C{1}\u300D\u306E\u300C{0}\u300D\u306E\u3088\u3046\u306A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3042\u308A\u307E\u305B\u3093 +dialog_search_objects_message_objects_found =\\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F +dialog_search_objects_spinner_max_results =\u6700\u5927\u7D50\u679C +dialog_search_objects_title =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u691C\u7D22\u3059\u308B +dialog_select_datasource_error_message =\u65B0\u3057\u3044\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3092\u6700\u521D\u306B\u4F5C\u6210\u3057\u307E\u3059\u3002 +dialog_select_datasource_error_title =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u304C\u3042\u308A\u307E\u305B\u3093 +dialog_select_datasource_title =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306E\u9078\u629E +dialog_setting_connection_driver_properties_description =JDBC\u30C9\u30E9\u30A4\u30D0\u306E\u30D7\u30ED\u30D1\u30C6\u30A3 +dialog_setting_connection_driver_properties_title =\u30C9\u30E9\u30A4\u30D0\u306E\u30D7\u30ED\u30D1\u30C6\u30A3 +dialog_setting_connection_general =\u4E00\u822C +#page conn setting +dialog_setting_connection_wizard_title =\u63A5\u7D9A\u8A2D\u5B9A +dialog_struct_columns_select_column =\u30AB\u30E9\u30E0 +dialog_struct_columns_select_error_load_columns_message =\u30C6\u30FC\u30D6\u30EB\u306E\u5217\u3092\u8AAD\u307F\u8FBC\u3080\u969B\u306E\u30A8\u30E9\u30FC +dialog_struct_columns_select_error_load_columns_title =\u5217\u3092\u8AAD\u307F\u8FBC\u3080 +dialog_struct_columns_select_group_columns =\u5217 +dialog_struct_columns_select_label_table =\u8868 +dialog_struct_columns_select_title =\u30C6\u30FC\u30D6\u30EB "{1}"\u306E{0} +dialog_struct_create_entity_group_name =\u540D +dialog_struct_create_entity_title =\u65B0\u3057\u304F\u4F5C\u308B +dialog_struct_create_procedure_combo_type =\u30BF\u30A4\u30D7 +dialog_struct_create_procedure_label_name =\u540D +dialog_struct_create_procedure_title =\u65B0\u3057\u3044\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3/\u95A2\u6570\u3092\u4F5C\u6210\u3059\u308B +dialog_struct_create_procedure_container =\u30B3\u30F3\u30C6\u30CA +dialog_struct_create_sequence_title =\u65B0\u3057\u3044\u30B7\u30FC\u30B1\u30F3\u30B9\u3092\u4F5C\u6210\u3059\u308B +dialog_struct_create_sequence_name =\u30B7\u30FC\u30B1\u30F3\u30B9\u540D +dialog_struct_create_sequence_container =\u30B3\u30F3\u30C6\u30CA +dialog_struct_edit_constrain_label_type =\u30BF\u30A4\u30D7 +dialog_struct_edit_fk_column_col_type =\u5217\u30BF\u30A4\u30D7 +dialog_struct_edit_fk_column_column =\u30AB\u30E9\u30E0 +dialog_struct_edit_fk_column_ref_col =\u53C2\u7167\u6B04 +dialog_struct_edit_fk_column_ref_col_type =Ref\u30AB\u30E9\u30E0\u30BF\u30A4\u30D7 +dialog_struct_edit_fk_combo_on_delete =\u524A\u9664\u6642 +dialog_struct_edit_fk_combo_on_update =\u66F4\u65B0\u6642 +dialog_struct_edit_fk_combo_unik =\u30E6\u30CB\u30FC\u30AF\u30AD\u30FC +dialog_struct_edit_fk_error_load_constraint_columns_message =\u30C6\u30FC\u30D6\u30EB\u5236\u7D04\u5217\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093 +dialog_struct_edit_fk_error_load_constraint_columns_title =\u5236\u7D04\u5217\u3092\u8AAD\u307F\u8FBC\u3080 +dialog_struct_edit_fk_error_load_constraints_message =\u30C6\u30FC\u30D6\u30EB\u306E\u5236\u7D04\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093 +dialog_struct_edit_fk_error_load_constraints_title =\u8CA0\u8377\u306E\u5236\u7D04 +dialog_struct_edit_fk_label_columns =\u5217 +dialog_struct_edit_fk_label_ref_table =\u53C2\u7167\u8868 +dialog_struct_edit_fk_label_table =\u8868 +dialog_struct_edit_fk_title =\u30C6\u30FC\u30D6\u30EB "{1}"\u306E{0} +dialog_struct_edit_index_label_type =\u30BF\u30A4\u30D7 +dialog_tunnel_checkbox_use_handler ={0}\u3092\u4F7F\u7528\u3059\u308B +dialog_tunnel_title =\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30CF\u30F3\u30C9\u30E9\u3068\u30C8\u30F3\u30CD\u30EB\u3092\u8A2D\u5B9A\u3059\u308B +dialog_value_view_button_cancel =\uFF06\u30AD\u30E3\u30F3\u30BB\u30EB +dialog_value_view_button_sat_null =\uFF06NULL\u3092\u8A2D\u5B9A +dialog_value_view_button_save =\uFF06\u30BB\u30FC\u30D6 +dialog_value_view_column_description =\u8AAC\u660E +dialog_value_view_column_value =\u5024 +dialog_value_view_context_name =\u300C{0}\u300D\u5217\u6319\u5024\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044 +dialog_value_view_dialog_error_updating_message =\u5217\u306E\u5024\u3092\u66F4\u65B0\u3067\u304D\u307E\u305B\u3093 +dialog_value_view_dialog_error_updating_title =\u5217\u306E\u66F4\u65B0\u30A8\u30E9\u30FC +dialog_value_view_job_selector_name =\u9078\u629E +dialog_value_view_label_dictionary =\u8F9E\u66F8\uFF08 {0} \uFF09\uFF1A +dialog_version_update_available_new_version =DBeaver\u306E\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u5229\u7528\u53EF\u80FD\u3067\u3059\u3002 +dialog_version_update_button_more_info =\u8A73\u7D30... +dialog_version_update_current_version =\u73FE\u884C\u7248 +dialog_version_update_n_a =N / A +dialog_version_update_new_version =\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3 +dialog_version_update_no_new_version =DBeaver\u306E\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +dialog_version_update_notes =\u30CE\u30FC\u30C8 +dialog_version_update_press_more_info_ =More Info\u3092\u62BC\u3059\u3068\u3001DBeaver\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3067\u304D\u308BWeb\u30DA\u30FC\u30B8\u304C\u958B\u304D\u307E\u3059 +dialog_version_update_title =\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u66F4\u65B0 +dialog_view_classpath_title =\u30B7\u30B9\u30C6\u30E0\u30AF\u30E9\u30B9\u30D1\u30B9 +dialog_view_sql_button_copy =\u30B3\u30D4\u30FC +dialog_view_sql_button_persist =\u6301\u7D9A\u3059\u308B + + +editor_binary_hex_default_font =\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30F3\u30C8 +editor_binary_hex_font_style_bold =\u5927\u80C6\u306A +editor_binary_hex_font_style_bold_italic =\u30DC\u30FC\u30EB\u30C9\u30A4\u30BF\u30EA\u30C3\u30AF +editor_binary_hex_font_style_italic =\u30A4\u30BF\u30EA\u30C3\u30AF +editor_binary_hex_font_style_regular =\u30EC\u30AE\u30E5\u30E9\u30FC +editor_binary_hex_froup_font_selection =\u30D5\u30A9\u30F3\u30C8\u306E\u9078\u629E +editor_binary_hex_label_available_fix_width_fonts =\u4F7F\u7528\u53EF\u80FD\u306A\u56FA\u5B9A\u30C1\u30E3\u30F3\u30AF\u5E45\u30D5\u30A9\u30F3\u30C8 +editor_binary_hex_label_name =\u540D +editor_binary_hex_label_size =\u30B5\u30A4\u30BA +editor_binary_hex_label_style =\u30B9\u30BF\u30A4\u30EB +editor_binary_hex_sample_text =ca fe ba be 00 00 01 2d +editor_binary_hex_status_line_offset =\u30AA\u30D5\u30BB\u30C3\u30C8\uFF1A +editor_binary_hex_status_line_selection =\u9078\u629E\uFF1A +editor_binary_hex_status_line_text_insert =\u30A4\u30F3\u30B5\u30FC\u30C8 +editor_binary_hex_status_line_text_ovewrite =\u4E0A\u66F8\u304D +editor_binary_hex_status_line_value =\u5024\uFF1A +editor_sql_preference =\u8A2D\u5B9A... +editors_entity_dialog_persist_title =\u5909\u66F4\u3092\u6301\u7D9A\u3055\u305B\u308B +editors_entity_dialog_preview_title =\u5909\u66F4\u3092\u30D7\u30EC\u30D3\u30E5\u30FC +editors_entity_monitor_add_folder =\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8FFD\u52A0 " +editors_entity_monitor_add_node =\u30CE\u30FC\u30C9\u3092\u8FFD\u52A0 " +editors_entity_monitor_preview_changes =\u5909\u66F4\u3092\u30D7\u30EC\u30D3\u30E5\u30FC +editors_entity_properties_text =\u30D7\u30ED\u30D1\u30C6\u30A3 +editors_entity_properties_tooltip_suffix =\\u30D7\u30ED\u30D1\u30C6\u30A3 +editors_sql_data_grid =\u7D50\u679C +editors_sql_description =SQL\u30A8\u30C7\u30A3\u30BF +editors_sql_error_cant_execute_query_message =1\u3064\u306E\u30BF\u30D6\u3067\u8907\u6570\u306E\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30AF\u30A8\u30EA\u306E\u540C\u6642\u5B9F\u884C\u306B\u306F\u8907\u6570\u306E\u30BF\u30D6\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +editors_sql_error_cant_execute_query_title =\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093 +editors_sql_error_cant_obtain_session =\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 +editors_sql_error_execution_plan_message =\u5B9F\u884C\u8A08\u753B\u3092\u8AAC\u660E\u3067\u304D\u307E\u305B\u3093 +editors_sql_error_execution_plan_title =\u5B9F\u884C\u8A08\u753B +editors_sql_execution_log =\u5B9F\u884C\u30ED\u30B0 +editors_sql_explain_plan =\u8A08\u753B\u306E\u8AAC\u660E +editors_sql_job_execute_query =\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3059\u308B +editors_sql_job_execute_script =\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B +editors_sql_output =\u51FA\u529B +editors_sql_save_on_close_message =SQL\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u4E2D\u306B\u30A8\u30C7\u30A3\u30BF\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +editors_sql_save_on_close_text =\u30AF\u30A8\u30EA\u304C\u5B9F\u884C\u3055\u308C\u3066\u3044\u307E\u3059 +editors_sql_status_cant_obtain_document =\u7DE8\u96C6\u8005\u306E\u6587\u66F8\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093 +editors_sql_status_empty_query_string =\u7A7A\u306E\u30AF\u30A8\u30EA\u6587\u5B57\u5217 +editors_sql_status_not_connected_to_database =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +editors_sql_status_rows_updated =\ row\uFF08s\uFF09\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F +editors_sql_status_statement_executed =\u5B9F\u884C\u3055\u308C\u305F\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8 +editors_sql_status_statement_executed_no_rows_updated =\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u5B9F\u884C - \u884C\u304C\u66F4\u65B0\u3055\u308C\u307E\u305B\u3093 +editors_sql_staus_connected_to =\u306B\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u3059 ' + + +model_html_read_database_meta_data =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u308B +model_jdbc_bad_content_value_ =\u4E0D\u6B63\u306A\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u5024\uFF1A +model_jdbc_content_length =\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u9577\u3055 +model_jdbc_content_type =\u30B3\u30F3\u30C6\u30F3\u30C4\u30BF\u30A4\u30D7 +model_jdbc_could_not_save_content =\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093 +model_jdbc_could_not_save_content_to_file_ =\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093 " +model_jdbc_load_from_file_ =\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30ED\u30FC\u30C9\u3059\u308B... +model_jdbc_save_to_file_ =\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58... +model_jdbc_set_to_current_time =\u73FE\u5728\u306E\u6642\u523B\u306B\u8A2D\u5B9A\u3059\u308B +model_jdbc_unsupported_content_value_type_ =\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u5024\u306E\u30BF\u30A4\u30D7 +model_navigator_Connection =\u63A5\u7D9A +model_navigator_Connections =\u63A5\u7D9A +model_navigator_Description =\u8AAC\u660E +model_navigator_Model_root =\u30E2\u30C7\u30EB\u30EB\u30FC\u30C8 +model_navigator_Name =\u540D +model_navigator_Project =\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 +model_navigator_Root =\u30EB\u30FC\u30C8 +model_navigator__connections =\ connections +model_navigator_load_ =\u8CA0\u8377 +model_navigator_load_items_ =\u30A2\u30A4\u30C6\u30E0\u3092\u30ED\u30FC\u30C9... +model_navigator_resource_exception_already_exists =\u30D5\u30A9\u30EB\u30C0 "{0}"\u306F "{1}"\u306B\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059 +model_project_Script =\u30B9\u30AF\u30EA\u30D7\u30C8 +model_project_Scripts =\u30B9\u30AF\u30EA\u30D7\u30C8 +model_project_bookmarks_folder =\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF +model_project_cant_open_bookmark =\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u958B\u3051\u307E\u305B\u3093 +model_project_open_bookmark =\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u958B\u304F + +pref_page_confirmations_combo_always =\u5E38\u306B +pref_page_confirmations_combo_never =\u7D76\u5BFE\u306B +pref_page_confirmations_combo_prompt =\u30D7\u30ED\u30F3\u30D7\u30C8 +pref_page_confirmations_group_general_actions =\u4E00\u822C\u7684\u306A\u884C\u52D5 +pref_page_confirmations_group_object_editor =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30A8\u30C7\u30A3\u30BF +pref_page_content_cache_blob =BLOB\u5024\u3092\u30AD\u30E3\u30C3\u30B7\u30E5\u3059\u308B +pref_page_content_cache_clob =CLOB\u5024\u306E\u30AD\u30E3\u30C3\u30B7\u30E5 +pref_page_content_editor_checkbox_commit_on_content_apply =\u30B3\u30F3\u30C6\u30F3\u30C4\u7DE8\u96C6\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u30B3\u30DF\u30C3\u30C8\u3059\u308B +pref_page_content_editor_checkbox_commit_on_value_apply =\u30B3\u30DF\u30C3\u30C8\u30BB\u30C3\u30B7\u30E7\u30F3on\u5024\u7DE8\u96C6\u9069\u7528 +pref_page_content_editor_checkbox_edit_long_as_lobs =LONG\u5217\u3092LOB\u3068\u3057\u3066\u7DE8\u96C6\u3059\u308B +pref_page_content_editor_checkbox_keys_always_use_all_columns =\u5E38\u306B\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB\u5217\u3092\u30AD\u30FC\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B +pref_page_content_editor_checkbox_new_rows_after =\u73FE\u5728\u306E\u884C\u306E\u5F8C\u306B\u65B0\u3057\u3044\u884C\u3092\u633F\u5165\u3059\u308B +pref_page_content_editor_checkbox_refresh_after_update =\u66F4\u65B0\u5F8C\u306E\u66F4\u65B0 +pref_page_content_editor_checkbox_use_navigator_filters =\u30CA\u30D3\u30B2\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF\u3092\u4F7F\u7528\u3059\u308B +pref_page_content_editor_checkbox_use_navigator_filters_tip =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30CA\u30D3\u30B2\u30FC\u30BF\u306E\u30D5\u30A3\u30EB\u30BF\u306B\u5F93\u3063\u3066\u5217\u3092\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\uFF08\u975E\u8868\u793A\uFF09\u3059\u308B +pref_page_content_editor_group_content =LOB +pref_page_content_editor_group_hex =\u30D0\u30A4\u30CA\u30EA\u30A8\u30C7\u30A3\u30BF +pref_page_content_editor_group_keys =\u4E00\u610F\u306E\u30AD\u30FC +pref_page_content_editor_hex_encoding =\u6587\u5B57\u5217\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +pref_page_content_editor_label_max_text_length =\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u6700\u5927\u9577 +pref_page_data_format_button_manage_profiles =\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E\u7BA1\u7406 +pref_page_data_format_group_format =\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +pref_page_data_format_label_profile =\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB +pref_page_data_format_label_sample =\u30B5\u30F3\u30D7\u30EB +pref_page_data_format_label_settingt =\u8A2D\u5B9A +pref_page_data_format_label_type =\u30BF\u30A4\u30D7 +pref_page_database_general_checkbox_case_sensitive_names =DDL\u6587\u3067\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3059\u308B\u540D\u524D\u3092\u4F7F\u7528\u3059\u308B +pref_page_database_general_checkbox_keep_cursor =SQL\u30A8\u30C7\u30A3\u30BF\u3067\u958B\u3044\u3066\u3044\u308B\u30AB\u30FC\u30BD\u30EB\u3092\u4FDD\u6301\u3059\u308B +pref_page_database_general_checkbox_rollback_on_error =\u30A8\u30E9\u30FC\u6642\u306E\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF +pref_page_database_general_checkbox_show_row_count =\u8868\u306E\u884C\u6570\u3092\u8868\u793A\u3059\u308B +pref_page_database_general_group_metadata =\u30E1\u30BF\u30C7\u30FC\u30BF +pref_page_database_general_group_navigator =\u30CA\u30D3\u30B2\u30FC\u30BF +pref_page_database_general_group_ordering =\u6CE8\u6587 +pref_page_database_general_group_queries =\u30AF\u30A8\u30EA +pref_page_database_general_group_transactions =\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3 +pref_page_database_general_label_cache_max_size =LOB\u30AD\u30E3\u30C3\u30B7\u30E5\u306E\u6700\u5927\u30B5\u30A4\u30BA +pref_page_database_general_label_max_lob_length =\u30E1\u30E2\u30EA\u30FC\u306B\u4FDD\u6301\u3059\u308B\u6700\u5927LOB\u9577 +pref_page_database_general_label_result_set_cancel_timeout =\u30AF\u30A8\u30EA\u306E\u30AD\u30E3\u30F3\u30BB\u30EB\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 +pref_page_database_general_label_result_set_cancel_timeout_tip =DBeaver\u304CUI\u3067\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u3092\u505C\u6B62\u3059\u308B\u30AF\u30A8\u30EA\u306E\u30AD\u30E3\u30F3\u30BB\u30EB\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08\u30DF\u30EA\u79D2\uFF09 +pref_page_database_resultsets_label_filter_force_subselect =\u5E38\u306B\u30D5\u30A3\u30EB\u30BF\u306B\u306F\u526F\u9078\u629E\u3092\u4F7F\u7528\u3059\u308B +pref_page_database_resultsets_label_filter_force_subselect_tip =\u30AF\u30A8\u30EA\u30D5\u30A3\u30EB\u30BF\u306B\u5BFE\u3057\u3066\u5F37\u5236\u7684\u306B\u526F\u9078\u629E\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E\u5834\u5408\u306F\u3001WHERE\u53E5\u306B\u30D1\u30C3\u30C1\u3092\u9069\u7528\u3057\u3066\u307F\u3066\u304F\u3060\u3055\u3044\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8\uFF09\u3002 +pref_page_database_general_label_result_set_max_size =ResultSet\u30D5\u30A7\u30C3\u30C1\u30FB\u30B5\u30A4\u30BA +pref_page_database_general_separate_meta_connection =\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u8FBC\u3080\u305F\u3081\u306B\u5225\u306E\u63A5\u7D9A\u3092\u958B\u304F +pref_page_database_resultsets_group_binary =\u30D0\u30A4\u30CA\u30EA\u30C7\u30FC\u30BF +pref_page_database_resultsets_label_auto_fetch_segment =\u6B21\u306E\u30BB\u30B0\u30E1\u30F3\u30C8\u3092\u81EA\u52D5\u53D6\u5F97\u3059\u308B +pref_page_database_resultsets_label_binary_editor_type =\u30D0\u30A4\u30CA\u30EA\u30A8\u30C7\u30A3\u30BF +pref_page_database_resultsets_label_binary_presentation =\u30D0\u30A4\u30CA\u30EA\u30C7\u30FC\u30BF\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF +pref_page_database_resultsets_label_binary_strings_max_length =\u30D0\u30A4\u30CA\u30EA\u6587\u5B57\u5217\u306E\u6700\u5927\u9577 +pref_page_database_resultsets_label_binary_use_strings =\u6587\u5B57\u5217\u3068\u3057\u3066\u30D0\u30A4\u30CA\u30EA\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_fetch_size =\u30D5\u30A7\u30C3\u30C1\u30B5\u30A4\u30BA\u3092\u4F7F\u7528\u3059\u308B +pref_page_database_resultsets_label_read_metadata =\u30C6\u30FC\u30D6\u30EB\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\uFF08\u30E6\u30CB\u30FC\u30AF\u30AD\u30FC\uFF09 +pref_page_database_resultsets_label_read_references =\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\uFF08\u5916\u90E8\u30AD\u30FC\uFF09\u306E\u8AAD\u307F\u53D6\u308A +pref_page_database_resultsets_label_server_side_order =\u30B5\u30FC\u30D0\u30FC\u5074\u306E\u7D50\u679C\u306E\u6CE8\u6587 +pref_page_database_resultsets_label_use_sql =SQL\u3092\u4F7F\u7528\u3057\u3066\u30D5\u30A7\u30C3\u30C1\u30B5\u30A4\u30BA\u3092\u5236\u9650\u3059\u308B +pref_page_database_resultsets_group_string =\u6587\u5B57\u5217 +pref_page_database_resultsets_checkbox_string_use_editor =\u5225\u306E\u30A8\u30C7\u30A3\u30BF\u3067\u958B\u304F +pref_page_database_resultsets_checkbox_string_use_editor_tip =\u30C0\u30A4\u30A2\u30ED\u30B0\u306E\u4EE3\u308F\u308A\u306B\u5225\u306E\u6587\u5B57\u5217\u30A8\u30C7\u30A3\u30BF\u3092\u958B\u304D\u307E\u3059 + +pref_page_error_handle_name =\u30A8\u30E9\u30FC\u30CF\u30F3\u30C9\u30EB +pref_page_error_handle_description =\u30A8\u30E9\u30FC\u51E6\u7406\u306E\u8A2D\u5B9A +pref_page_error_handle_group_execute_title =\u30A8\u30E9\u30FC\u3092\u5B9F\u884C\u3059\u308B +pref_page_error_handle_recover_enabled_label =\u63A5\u7D9A\u306E\u81EA\u52D5\u56DE\u5FA9\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B +pref_page_error_handle_recover_enabled_tip =\u63A5\u7D9A\u969C\u5BB3\u30A8\u30E9\u30FC\u304C\u691C\u51FA\u3055\u308C\u305F\u5834\u5408\u3001\u81EA\u52D5\u7684\u306B\u518D\u63A5\u7D9A\u3092\u8A66\u307F\u307E\u3059\u3002 +pref_page_error_handle_recover_retry_count_label =\u63A5\u7D9A\u81EA\u52D5\u56DE\u5FA9\u306E\u518D\u8A66\u884C\u56DE\u6570 +pref_page_error_handle_recover_retry_count_tip =\u63A5\u7D9A\u5931\u6557\u30A8\u30E9\u30FC\u5F8C\u306E\u63A5\u7D9A\u8A66\u884C\u56DE\u6570 + +pref_page_drivers_group_location =\u30C9\u30E9\u30A4\u30D0\u306E\u5834\u6240 +pref_page_query_manager_checkbox_ddl_executions =DDL\u306E\u5B9F\u884C +pref_page_query_manager_checkbox_metadata_read =\u30E1\u30BF\u30C7\u30FC\u30BF\u8AAD\u307F\u53D6\u308A +pref_page_query_manager_checkbox_metadata_write =\u30E1\u30BF\u30C7\u30FC\u30BF\u66F8\u304D\u8FBC\u307F\uFF08DDL\uFF09 +pref_page_query_manager_checkbox_other =\u305D\u306E\u4ED6 +pref_page_query_manager_checkbox_queries =\u30AF\u30A8\u30EA +pref_page_query_manager_checkbox_scripts =\u30B9\u30AF\u30EA\u30D7\u30C8 +pref_page_query_manager_checkbox_sessions =\u30BB\u30C3\u30B7\u30E7\u30F3 +pref_page_query_manager_checkbox_store_log_file =\u30ED\u30B0\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3059\u308B +pref_page_query_manager_checkbox_transactions =\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3 +pref_page_query_manager_checkbox_user_filtered =\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3055\u308C\u305F\u30E6\u30FC\u30B6\u30FC\u306E\u30AF\u30A8\u30EA +pref_page_query_manager_checkbox_user_queries =\u30E6\u30FC\u30B6\u30FC\u306E\u30AF\u30A8\u30EA +pref_page_query_manager_checkbox_user_scripts =\u30E6\u30FC\u30B6\u30FC\u30B9\u30AF\u30EA\u30D7\u30C8 +pref_page_query_manager_checkbox_utility_functions =\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3\u95A2\u6570 +pref_page_query_manager_group_object_types =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u578B +pref_page_query_manager_group_query_types =\u30AF\u30A8\u30EA\u306E\u7A2E\u985E +pref_page_query_manager_group_settings =\u8A2D\u5B9A +pref_page_query_manager_group_storage =\u30B9\u30C8\u30EC\u30FC\u30B8 +pref_page_query_manager_label_days_to_store_log =\u30ED\u30B0\u3092\u4FDD\u5B58\u3059\u308B\u65E5\u6570 +pref_page_query_manager_label_entries_per_page =1\u30DA\u30FC\u30B8\u3042\u305F\u308A\u306E\u30A8\u30F3\u30C8\u30EA\u6570 +pref_page_query_manager_logs_folder =\u30ED\u30B0\u30D5\u30A1\u30A4\u30EB\u30D5\u30A9\u30EB\u30C0 +pref_page_results_group_advanced =\u4E0A\u7D1A +pref_page_sql_editor_checkbox_blank_line_delimiter =\u7A7A\u767D\u884C\u306F\u6587\u306E\u533A\u5207\u308A\u6587\u5B57\u3067\u3059 +pref_page_sql_editor_checkbox_enable_sql_anonymous_parameters =\u533F\u540DSQL\u30D1\u30E9\u30E1\u30FC\u30BF +pref_page_sql_editor_checkbox_enable_sql_parameters =SQL\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6709\u52B9\u306B\u3059\u308B +pref_page_sql_editor_checkbox_fetch_resultsets =\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u53D6\u5F97\u3059\u308B +pref_page_sql_editor_checkbox_ignore_native_delimiter =\u30CD\u30A4\u30C6\u30A3\u30D6\u533A\u5207\u308A\u6587\u5B57\u3092\u7121\u8996\u3059\u308B +pref_page_sql_editor_checkbox_remove_trailing_delimiter =\u5F8C\u7D9A\u306E\u30AF\u30A8\u30EA\u533A\u5207\u308A\u8A18\u53F7\u3092\u524A\u9664\u3059\u308B +pref_page_sql_editor_checkbox_reset_cursor =\u5B9F\u884C\u5F8C\u306B\u30AB\u30FC\u30BD\u30EB\u3092\u30EA\u30BB\u30C3\u30C8\u3059\u308B +pref_page_sql_editor_checkbox_max_editor_on_script_exec =\u30B9\u30AF\u30EA\u30D7\u30C8\u5B9F\u884C\u6642\u306B\u30A8\u30C7\u30A3\u30BF\u3092\u6700\u5927\u5316 +pref_page_sql_editor_combo_item_each_line_autocommit =\u5404\u884C\u306E\u5F8C\uFF08\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8\uFF09 +pref_page_sql_editor_combo_item_each_spec_line =\u5404\u6307\u5B9A\u884C\u306E\u5F8C +pref_page_sql_editor_combo_item_ignore =\u7121\u8996\u3059\u308B +pref_page_sql_editor_combo_item_no_commit =\u30B3\u30DF\u30C3\u30C8\u3057\u306A\u3044 +pref_page_sql_editor_combo_item_script_end =\u30B9\u30AF\u30EA\u30D7\u30C8\u7D42\u4E86\u6642 +pref_page_sql_editor_combo_item_stop_commit =\u505C\u6B62+\u30B3\u30DF\u30C3\u30C8 +pref_page_sql_editor_combo_item_stop_rollback =\u30B9\u30C8\u30C3\u30D7+\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF +pref_page_sql_editor_group_common =\u4E00\u822C +pref_page_sql_editor_group_delimiters =\u30C7\u30EA\u30DF\u30BF +pref_page_sql_editor_group_misc =\u96D1 +pref_page_sql_editor_group_parameters =\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC +pref_page_sql_editor_group_resources =\u30EA\u30BD\u30FC\u30B9 +pref_page_sql_editor_group_scripts =\u30B9\u30AF\u30EA\u30D7\u30C8 +pref_page_sql_editor_label_commit_after_line =\u884C\u306E\u5F8C\u306B\u30B3\u30DF\u30C3\u30C8\u3059\u308B +pref_page_sql_editor_label_commit_type =\u30B3\u30DF\u30C3\u30C8\u30BF\u30A4\u30D7 +pref_page_sql_editor_label_error_handling =\u30A8\u30E9\u30FC\u51E6\u7406 +pref_page_sql_editor_label_invalidate_before_execute =\u5B9F\u884C\u524D\u306B\u63A5\u7D9A\u3092\u7121\u52B9\u306B\u3059\u308B +pref_page_sql_editor_label_refresh_defaults_after_execute =SQL\u5B9F\u884C\u5F8C\u306B\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30AD\u30FC\u30DE\u3092\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3059\u308B +pref_page_sql_editor_label_sound_on_query_end =\u30AF\u30A8\u30EA\u7D42\u4E86\u5F8C\u306E\u30D3\u30FC\u30D7\u97F3 +pref_page_sql_editor_label_sql_timeout =SQL\u6587\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 +pref_page_sql_editor_text_anonymous_parameter_mark =\u533F\u540D\u30D1\u30E9\u30E1\u30FC\u30BF\u30DE\u30FC\u30AF +pref_page_sql_editor_text_named_parameter_prefix =\u540D\u524D\u4ED8\u304D\u30D1\u30E9\u30E1\u30FC\u30BF\u63A5\u982D\u8F9E +pref_page_sql_editor_text_statement_delimiter =\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u30C7\u30EA\u30DF\u30BF +pref_page_sql_editor_title_pattern =\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30BF\u30A4\u30C8\u30EB\u30D1\u30BF\u30FC\u30F3 +pref_page_target_button_use_datasource_settings =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 "{0}"\u306E\u8A2D\u5B9A +pref_page_target_link_show_datasource_settings =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u8A2D\u5B9A +pref_page_target_link_show_global_settings =\u5168\u4F53\u8A2D\u5B9A +pref_page_ui_general_checkbox_automatic_updates =\u81EA\u52D5\u66F4\u65B0\u30C1\u30A7\u30C3\u30AF +pref_page_ui_general_combo_language =\u8A00\u8A9E +pref_page_ui_general_combo_language_tip =\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u8A00\u8A9E - \u30E6\u30FC\u30B6\u30FC\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9\u306E\u30ED\u30FC\u30AB\u30EA\u30BC\u30FC\u30B7\u30E7\u30F3\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 +pref_page_ui_general_group_editors =\u7DE8\u96C6\u8005 +pref_page_ui_general_group_general =\u4E00\u822C +pref_page_ui_general_group_language =\u8A00\u8A9E +pref_page_ui_general_group_http_proxy =HTTP\u30D7\u30ED\u30AD\u30B7\uFF08\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u7528\uFF09 +pref_page_ui_general_keep_database_editors =\u518D\u8D77\u52D5\u5F8C\u306B\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30A8\u30C7\u30A3\u30BF\u3092\u958B\u304F +pref_page_ui_general_label_proxy_host =\u30D7\u30ED\u30AD\u30B7\u30DB\u30B9\u30C8 +pref_page_ui_general_label_proxy_password =\u30D1\u30B9\u30EF\u30FC\u30C9 +pref_page_ui_general_label_proxy_user =\u30E6\u30FC\u30B6\u30FC +pref_page_ui_general_refresh_editor_on_open =\u30A8\u30C7\u30A3\u30BF\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u5F37\u5236\u7684\u306B\u66F4\u65B0\u3059\u308B +pref_page_ui_general_spinner_proxy_port =\u30D7\u30ED\u30AD\u30B7\u30DD\u30FC\u30C8 + +registry_entity_editor_descriptor_description =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30D7\u30ED\u30D1\u30C6\u30A3 +registry_entity_editor_descriptor_name =\u30D7\u30ED\u30D1\u30C6\u30A3 + +runtime_jobs_connect_name ={0}\u306B\u63A5\u7D9A\u3059\u308B +runtime_jobs_connect_status_connected =\u63A5\u7D9A\u6E08\u307F +runtime_jobs_connect_status_error =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 "{0}"\u306B\u63A5\u7D9A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +runtime_jobs_connect_thread_name =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 "{0}"\u306B\u63A5\u7D9A\u3057\u3066\u304F\u3060\u3055\u3044 +runtime_jobs_disconnect_error =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 "{0}"\u304B\u3089\u306E\u5207\u65AD\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +runtime_jobs_disconnect_name ={0}\u304B\u3089\u5207\u65AD\u3059\u308B + +toolbar_datasource_selector_action_read_databases =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30EA\u30B9\u30C8\u3092\u8AAD\u307F\u8FBC\u3080 +toolbar_datasource_selector_all =\u3059\u3079\u3066 +toolbar_datasource_selector_combo_database_tooltip =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30AB\u30BF\u30ED\u30B0/\u30B9\u30AD\u30FC\u30DE +toolbar_datasource_selector_combo_datasource_tooltip =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +toolbar_datasource_selector_connected =\u63A5\u7D9A\u6E08\u307F +toolbar_datasource_selector_empty =<\u306A\u3057> +toolbar_datasource_selector_error_change_database_message =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093 +toolbar_datasource_selector_error_change_database_title =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3092\u5909\u66F4\u3059\u308B +toolbar_datasource_selector_error_database_change_not_supported =\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u5909\u66F4\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +toolbar_datasource_selector_error_database_not_found =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 "{0}"\u3092\u898B\u3064\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +toolbar_datasource_selector_resultset_segment_size =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u6700\u5927\u30B5\u30A4\u30BA +#toolbar_editors_sql_run_explain_description =\u5B9F\u884C\u8A08\u753B\u3092\u8AAC\u660E\u3059\u308B +toolbar_editors_sql_run_explain_name =\u5B9F\u884C\u8A08\u753B\u3092\u8AAC\u660E\u3059\u308B +#toolbar_editors_sql_run_scriptNew_description =\u5225\u306E\u7D50\u679C\u30BF\u30D6\u3067\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3092\u5B9F\u884C\u3059\u308B +toolbar_editors_sql_run_scriptNew_name =\u500B\u5225\u306E\u30BF\u30D6\u3067\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B +#toolbar_editors_sql_run_script_description =\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B +toolbar_editors_sql_run_script_name =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B +#toolbar_editors_sql_run_statementNew_description =\u65B0\u3057\u3044\u30BF\u30D6\u3067SQL\u6587\u3092\u5B9F\u884C\u3059\u308B +toolbar_editors_sql_run_statementNew_name =\u65B0\u3057\u3044\u30BF\u30D6\u3067SQL\u3092\u5B9F\u884C\u3059\u308B +#toolbar_editors_sql_run_statement_description =SQL\u6587\u3092\u5B9F\u884C\u3059\u308B +toolbar_editors_sql_run_statement_name =SQL\u6587\u3092\u5B9F\u884C\u3059\u308B + + +tools_script_execute_wizard_task_completed ={0}\uFF08{1}\uFF09\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F +tools_wizard_dialog_button_start =\u958B\u59CB +tools_wizard_error_task_canceled ={0} "{1}"\u304C\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u307E\u3057\u305F +tools_wizard_error_task_error_message =\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093 +tools_wizard_error_task_error_title ={0}\u30A8\u30E9\u30FC +tools_wizard_log_io_error =IO\u30A8\u30E9\u30FC\uFF1A{0} +tools_wizard_log_process_exit_code =\u30D7\u30ED\u30BB\u30B9\u306E\u7D42\u4E86\u30B3\u30FC\u30C9\uFF1A{0} +tools_wizard_message_client_home_not_found =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30DB\u30FC\u30E0 "{0}"\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +tools_wizard_message_no_client_home =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306E\u30DB\u30FC\u30E0\u304C\u63A5\u7D9A\u7528\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +tools_wizard_page_log_task_finished ={0}\u306F{1}\u3067\u7D42\u4E86\u3057\u307E\u3057\u305F +tools_wizard_page_log_task_log_reader ={0}\u30ED\u30B0\u30EA\u30FC\u30C0\u30FC +tools_wizard_page_log_task_progress ={0}\u9032\u6357 +tools_wizard_page_log_task_progress_log ={0}\u9032\u6357\u30ED\u30B0 +tools_wizard_page_log_task_started_at ={0}\u306F{1}\u3067\u958B\u59CB\u3057\u307E\u3057\u305F + + +ui_actions_context_search_name =\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u691C\u7D22 +ui_actions_exit_emergency_question =\u672c\u5f53\u306b\u5f37\u5236\u7d42\u4e86\u3057\u307e\u3059\u304b\uff1f\u672a\u4fdd\u5b58\u306e\u30c7\u30fc\u30bf\u304c\u5931\u308f\u308c\u305f\u308a\u7834\u640d\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +ui_common_button_help =\u52A9\u3051\u3066 +ui_properties_category_information =\u60C5\u5831 +ui_properties_category_structure =\u69CB\u9020 +ui_properties_name =\u540D +ui_properties_task_add_folder =\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8FFD\u52A0 " +ui_properties_task_add_node =\u30CE\u30FC\u30C9\u3092\u8FFD\u52A0 " +ui_properties_tree_viewer__to_default =\\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u3059\u308B +ui_properties_tree_viewer_action_copy_name =\u540D\u524D\u3092\u30B3\u30D4\u30FC\u3059\u308B +ui_properties_tree_viewer_action_copy_value =\u5024\u3092\u30B3\u30D4\u30FC\u3059\u308B +ui_properties_tree_viewer_action_reset_value =\u30EA\u30BB\u30C3\u30C8\u5024 +ui_properties_tree_viewer_category_general =\u4E00\u822C +ui_properties_value =\u5024 + + +## Preference/Properties ## +#ResultSetsMain +pref_page_database_resultsets_label_read_metadata_tip =\u8AAD\u307F\u53D6\u3089\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002\u30AF\u30A8\u30EA\u3092\u9AD8\u901F\u306B\u5B9F\u884C\u3057\u307E\u3059\u304C\u3001\u7D50\u679C\u306E\u7DE8\u96C6\u3068\u5916\u90E8\u30AD\u30FC\u306E\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002 +pref_page_database_resultsets_label_read_references_tip =\u53C2\u7167\uFF08\u5916\u90E8\u30AD\u30FC\uFF09\u60C5\u5831\u306E\u8AAD\u307F\u53D6\u308A\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002 +pref_page_database_resultsets_label_fetch_size_tip =DBeaver\u306F\u660E\u793A\u7684\u306AJDBC\u30D5\u30A7\u30C3\u30C1\u30B5\u30A4\u30BA\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3092\u4F7F\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u304B\uFF1F +#ResultSetsPresentation +pref_page_database_resultsets_group_common =\u4E00\u822C +pref_page_database_resultsets_label_switch_mode_on_rows =\u5358\u5217/\u8907\u6570\u884C\u306B\u30EC\u30B3\u30FC\u30C9/\u30B0\u30EA\u30C3\u30C9\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048\u308B +pref_page_database_resultsets_label_show_column_description =\u30D8\u30C3\u30C0\u30FC\u306B\u5217\u306E\u8AAC\u660E\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_show_connection_name =\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u63A5\u7D9A\u540D\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_calc_column_width_by_values =\u30BB\u30EB\u306E\u5024\u3067\u5217\u306E\u5E45\u3092\u8A08\u7B97\u3059\u308B +pref_page_database_resultsets_label_calc_column_width_by_values_tip =\u5217\u5E45\u3092\u8A08\u7B97\u3059\u308B\u3068\u304D\u306F\u30BB\u30EB\u5024\u306E\u307F\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\ n\u975E\u5E38\u306B\u9577\u3044\u5217\u540D\u3092\u6301\u3064\u8868\u304C\u3042\u308B\u5834\u5408\u306B\u306F\u4FBF\u5229\u3067\u3059\u3002 +pref_page_database_resultsets_label_structurize_complex_types =\u8907\u5408\u578B\u306E\u69CB\u9020\u5316 +pref_page_database_resultsets_label_structurize_complex_types_tip =\u7D50\u679C\u30B0\u30EA\u30C3\u30C9\u5185\u306E\u8907\u96D1\u306A\u578B\uFF08\u914D\u5217\u3001\u69CB\u9020\u4F53\u3001\u30DE\u30C3\u30D7\uFF09\u3092\u5225\u3005\u306E\u5217\u3068\u3057\u3066\u8996\u899A\u5316\u3059\u308B +pref_page_database_resultsets_group_grid =\u30B0\u30EA\u30C3\u30C9 +pref_page_database_resultsets_label_mark_odd_rows =\u5947\u6570/\u5076\u6570\u884C\u3092\u30DE\u30FC\u30AF\u3059\u308B +pref_page_database_resultsets_label_colorize_data_types =\u30C7\u30FC\u30BF\u578B\u306E\u8272\u4ED8\u3051 +pref_page_database_resultsets_label_right_justify_numbers_and_date =\u6570\u5B57\u3068\u65E5\u4ED8/\u6642\u523B\u306E\u53F3\u5BC4\u305B +pref_page_database_resultsets_label_row_batch_size =\u884C\u306E\u8272\u306E\u30D0\u30C3\u30C1\u30B5\u30A4\u30BA +pref_page_database_resultsets_label_row_batch_size_tip =\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30AB\u30E9\u30FC\u304C\u540C\u3058\u7D50\u679C\u884C\u306E\u6570\u3002\ n\u30C7\u30D5\u30A9\u30EB\u30C8 +pref_page_database_resultsets_label_show_cell_icons =\u30BB\u30EB\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_show_attr_icons =\u5217\u30BF\u30A4\u30D7\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_show_attr_icons_tip =\u30B0\u30EA\u30C3\u30C9\u30D8\u30C3\u30C0\u30FC\u306B\u5217\u306E\u30C7\u30FC\u30BF\u578B\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_show_attr_filters =\u5C5E\u6027\u30D5\u30A3\u30EB\u30BF\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_show_attr_filters_tip =\u5217\u30D8\u30C3\u30C0\u306B\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u30D5\u30A3\u30EB\u30BF\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_show_attr_ordering =\u5C5E\u6027\u306E\u9806\u5E8F\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_show_attr_ordering_tip =\u5217\u898B\u51FA\u3057\u306B\u6607\u9806/\u964D\u9806\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_double_click_behavior =\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u306E\u52D5\u4F5C +pref_page_database_resultsets_group_plain_text =\u30D7\u30EC\u30FC\u30F3\u30C6\u30AD\u30B9\u30C8 +pref_page_database_resultsets_lable_value_format =\u5024\u306E\u66F8\u5F0F +pref_page_database_resultsets_label_maximum_column_length =\u5217\u306E\u6700\u5927\u9577 +pref_page_database_resultsets_label_text_show_nulls =NULL\u3092\u8868\u793A\u3059\u308B +pref_page_database_resultsets_label_text_delimiter_leading =\u5148\u982D\u306E\u533A\u5207\u308A\u6587\u5B57 +pref_page_database_resultsets_label_text_delimiter_trailing =\u672B\u5C3E\u533A\u5207\u308A\u6587\u5B57 +pref_page_database_client_name_group =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D +pref_page_database_client_name_group_description =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D\u306F\u3001\u63A5\u7D9A\u6642\u306B\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30B5\u30FC\u30D0\u30FC\u306B\u6E21\u3055\u308C\u3001\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u63A5\u7D9A\u3092\u8B58\u5225\u3057\u307E\u3059\u3002\ n\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001\u88FD\u54C1\u540D+\u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002\ n\u4EFB\u610F\u306E\u30AB\u30B9\u30BF\u30E0\u5024\u306B\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u540D\u306B\u5909\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF08\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u3092\u53C2\u7167\uFF09\u3002 +pref_page_database_label_override_client_application_name =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D\u3092\u4E0A\u66F8\u304D\u3059\u308B +pref_page_database_label_disable_client_application_name =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306E\u8B58\u5225\u3092\u7121\u52B9\u306B\u3059\u308B +pref_page_database_label_client_application_name =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D +pref_page_sql_editor_group_connections =\u63A5\u7D9A +pref_page_sql_editor_label_separate_connection_each_editor =\u30A8\u30C7\u30A3\u30BF\u3054\u3068\u306B\u72EC\u7ACB\u3057\u305F\u63A5\u7D9A\u3092\u958B\u304F +pref_page_sql_editor_label_connect_on_editor_activation =\u30A8\u30C7\u30A3\u30BF\u8D77\u52D5\u6642\u306B\u63A5\u7D9A\u3059\u308B +pref_page_sql_editor_label_connect_on_query_execute =\u30AF\u30A8\u30EA\u5B9F\u884C\u6642\u306B\u63A5\u7D9A\u3059\u308B +pref_page_sql_editor_group_auto_save =\u81EA\u52D5\u4FDD\u5B58 +pref_page_sql_editor_label_auto_save_on_close =\u7DE8\u96C6\u6642\u306E\u81EA\u52D5\u4FDD\u5B58\u30A8\u30C7\u30A3\u30BF +pref_page_sql_editor_label_save_on_query_execute =\u30AF\u30A8\u30EA\u5B9F\u884C\u6642\u306B\u30A8\u30C7\u30A3\u30BF\u3092\u4FDD\u5B58 +pref_page_sql_editor_checkbox_delete_empty_scripts =\u30AF\u30ED\u30FC\u30BA\u6642\u306B\u7A7A\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u524A\u9664\u3059\u308B +pref_page_sql_editor_checkbox_put_new_scripts =\u63A5\u7D9A\u3054\u3068\u306B\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3059\u308B +pref_page_sql_editor_group_result_view =\u7D50\u679C\u30D3\u30E5\u30FC +pref_page_sql_editor_label_close_results_tab_on_error =\u30A8\u30E9\u30FC\u6642\u306B\u7D50\u679C\u30BF\u30D6\u3092\u9589\u3058\u308B +pref_page_sql_editor_label_results_orientation =\u30AA\u30EA\u30A8\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3\u7D50\u679C +pref_page_sql_editor_label_results_orientation_tip =SQL\u30A8\u30C7\u30A3\u30BF\u306E\u7D50\u679C\u306E\u65B9\u5411 +pref_page_sql_editor_link_text_editor =\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF\u306E\u8A2D\u5B9A +#SQLExecute +pref_page_sql_editor_label_sql_timeout_tip =\u30AF\u30A8\u30EA\u30FC\u306E\u5B9F\u884C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08\u79D2\u5358\u4F4D\uFF09\u3002 0\u306F\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u304C\u306A\u3044\u3053\u3068\u3092\u610F\u5473\u3057\u307E\u3059 +pref_page_sql_editor_enable_parameters_in_ddl =DDL\u3067\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6709\u52B9\u306B\u3059\u308B +pref_page_sql_editor_enable_parameters_in_ddl_tip =\u901A\u5E38\u3001DDL\uFF08CREATE PROCEDURE\u306A\u3069\uFF09\u306F\u5165\u529B\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u307E\u305B\u3093\u304C\u3001\u8907\u96D1\u306A\u30ED\u30B8\u30C3\u30AF/\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u542B\u3093\u3067\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\ n\u3053\u308C\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3068\u7AF6\u5408\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002 +pref_page_sql_editor_enable_variables =\u5909\u6570\u3092\u6709\u52B9\u306B\u3059\u308B +pref_page_sql_editor_enable_variables_tip =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u5909\u6570\u3092\u6709\u52B9\u306B\u3059\u308B\u3002\ n\u5909\u6570\u306F\u30AF\u30A8\u30EA\u5B9F\u884C\u524D\u306B\u30E6\u30FC\u30B6\u30FC\u5165\u529B\u3068\u7F6E\u304D\u63DB\u3048\u3089\u308C\u308B\u7279\u5225\u306A\u30DE\u30FC\u30AF$ {VAR_NAME}\u3067\u3059 + +#SQLFormat +pref_page_sql_format_group_auto_close =\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA +pref_page_sql_format_label_single_quotes =\u4E00\u91CD\u5F15\u7528\u7B26 +pref_page_sql_format_label_double_quotes =\u4E8C\u91CD\u5F15\u7528\u7B26 +pref_page_sql_format_label_brackets =\u62EC\u5F27 +pref_page_sql_format_group_auto_format =\u81EA\u52D5\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +pref_page_sql_format_label_convert_keyword_case =\u30AD\u30FC\u30EF\u30FC\u30C9\u30B1\u30FC\u30B9\u3092\u5909\u63DB\u3059\u308B +pref_page_sql_format_label_convert_keyword_case_tip =\u5165\u529B\u6642\u306B\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u5927\u6587\u5B57/\u5C0F\u6587\u5B57\u306B\u81EA\u52D5\u5909\u63DB\u3059\u308B +pref_page_sql_format_label_extract_sql_from_source_code =\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u304B\u3089SQL\u3092\u62BD\u51FA\u3059\u308B +pref_page_sql_format_label_extract_sql_from_source_code_tip =\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u3067\u306F\u3001\u5F15\u7528\u7B26\u3001+\u3001\\ n\u306A\u3069\u306E\u30BD\u30FC\u30B9\u8A00\u8A9E\u8981\u7D20\u304C\u3059\u3079\u3066\u524A\u9664\u3055\u308C\u307E\u3059\u3002 +pref_page_sql_format_group_style =\u30B9\u30BF\u30A4\u30EB +pref_page_sql_format_label_bold_keywords =\u30AD\u30FC\u30EF\u30FC\u30C9\u306B\u592A\u5B57\u306E\u30D5\u30A9\u30F3\u30C8\u3092\u4F7F\u7528\u3059\u308B +pref_page_sql_format_label_bold_keywords_tip =\u30AD\u30FC\u30EF\u30FC\u30C9\u3068\u30C7\u30FC\u30BF\u578B\u306B\u592A\u5B57\u306E\u30D5\u30A9\u30F3\u30C8\u3092\u4F7F\u7528\u3059\u308B + +pref_page_sql_format_group_formatter =\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF +pref_page_sql_format_label_formatter =\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF +pref_page_sql_format_label_keyword_case =\u30AD\u30FC\u30EF\u30FC\u30C9\u30B1\u30FC\u30B9 +pref_page_sql_format_label_external_command_line =\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3 +pref_page_sql_format_label_external_set_content_tool_tip =\u30D1\u30E9\u30E1\u30FC\u30BF\u4ED8\u304D\u5916\u90E8\u30D7\u30ED\u30B0\u30E9\u30E0 +pref_page_sql_format_label_external_use_temp_file =\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3092\u4F7F\u7528\u3059\u308B +pref_page_sql_format_label_external_use_temp_file_tip =\u30C6\u30F3\u30DD\u30E9\u30EA\u30D5\u30A1\u30A4\u30EB\u3092\u4F7F\u7528\u3057\u3066SQL\u30C6\u30AD\u30B9\u30C8\u3092\u6E21\u3057\u307E\u3059\u3002\ n\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3092\u6E21\u3059\u306B\u306F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6E21\u3057\u307E\u3059 +pref_page_sql_format_label_external_exec_timeout =\u5B9F\u884C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 +pref_page_sql_format_label_external_exec_timeout_tip =\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF\u51E6\u7406\u304C\u7D42\u4E86\u3059\u308B\u307E\u3067\u306E\u6642\u9593\uFF08\u30DF\u30EA\u79D2\uFF09 +pref_page_sql_completion_group_sql_assistant =SQL\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8/\u88DC\u5B8C +pref_page_sql_completion_label_enable_auto_activation =\u81EA\u52D5\u8D77\u52D5\u3092\u6709\u52B9\u306B\u3059\u308B +pref_page_sql_completion_label_enable_auto_activation_tip =\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u306E\u81EA\u52D5\u30A2\u30AF\u30C6\u30A3\u30D6\u5316\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\uFF08\u30C6\u30AD\u30B9\u30C8\u5165\u529B\u6642\uFF09 +pref_page_sql_completion_label_auto_activation_delay =\u81EA\u52D5\u8D77\u52D5\u9045\u5EF6 +pref_page_sql_completion_label_set_auto_activation_delay_tip =\u30C8\u30EA\u30AC\u30FC\u30AD\u30FC\u306E\u5165\u529B\u5F8C\u306B\u30B3\u30F3\u30C6\u30F3\u30C4\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u304C\u5B9F\u884C\u3055\u308C\u308B\u307E\u3067\u306E\u9045\u5EF6 +pref_page_sql_completion_label_activate_on_typing =\u5165\u529B\u6642\u306B\u6709\u52B9\u306B\u3059\u308B +pref_page_sql_completion_label_activate_on_typing_tip =\u4EFB\u610F\u306E\u6587\u5B57\u5165\u529B\u3067\u5B8C\u4E86\u63D0\u6848\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002 +pref_page_sql_completion_label_auto_insert_proposal =\u30D7\u30ED\u30DD\u30FC\u30B6\u30EB\u306E\u81EA\u52D5\u633F\u5165 +pref_page_sql_completion_label_auto_insert_proposal_tip =\u30B3\u30F3\u30C6\u30F3\u30C4\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u306E\u81EA\u52D5\u633F\u5165\u30E2\u30FC\u30C9\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002\ n\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30B3\u30F3\u30C6\u30F3\u30C4\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u306F\u552F\u4E00\u306E\u30D7\u30ED\u30DD\u30FC\u30B6\u30EB\u3067\u3042\u308B\u5834\u5408\u306B\u81EA\u52D5\u7684\u306B\u30D7\u30ED\u30DD\u30FC\u30B6\u30EB\u3092\u633F\u5165\u3057\u307E\u3059\u3002\ n\u3042\u3044\u307E\u3044\u3055\u306E\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306F\u9078\u629E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +pref_page_sql_completion_label_insert_case =\u30B1\u30FC\u30B9\u3092\u633F\u5165\u3059\u308B +pref_page_sql_completion_label_hide_duplicate_names =\u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30AD\u30FC\u30DE\u304B\u3089\u91CD\u8907\u3057\u305F\u540D\u524D\u3092\u96A0\u3059 +pref_page_sql_completion_label_use_short_names =\u77ED\u3044\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u4F7F\u7528\u3059\u308B\uFF08\u30B9\u30AD\u30FC\u30DE/\u30AB\u30BF\u30ED\u30B0\u3092\u7701\u7565\uFF09 +pref_page_sql_completion_label_use_long_names =\u9577\u3044\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u4F7F\u7528\u3059\u308B\uFF08\u5E38\u306B\u30B9\u30AD\u30FC\u30DE/\u30AB\u30BF\u30ED\u30B0\u3092\u4F7F\u7528\u3059\u308B\uFF09 +pref_page_sql_completion_label_insert_space =\u00A0\u8868/\u5217\u540D\u306E\u5F8C\u306B\u30B9\u30DA\u30FC\u30B9\u3092\u633F\u5165\u3059\u308B +pref_page_sql_completion_label_match_contains =\u5185\u90E8\u306E\u540D\u524D\u3092\u691C\u7D22\u3059\u308B +pref_page_sql_completion_label_match_contains_tip =\u6587\u5B57\u5217\u3092\u542B\u3080\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u691C\u7D22\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E\u5834\u5408\u306F\u3001\u6587\u5B57\u5217\u304B\u3089\u59CB\u307E\u308B\u540D\u524D\u3092\u691C\u7D22\u3057\u307E\u3059\u3002 +pref_page_sql_completion_label_use_global_search =\u30B0\u30ED\u30FC\u30D0\u30EB\u691C\u7D22\u3092\u4F7F\u7528\u3059\u308B\uFF08\u3059\u3079\u3066\u306E\u30B9\u30AD\u30FC\u30DE\u3067\uFF09 +pref_page_sql_completion_label_use_global_search_tip =\u3059\u3079\u3066\u306E\u30B9\u30AD\u30FC\u30DE\u5185\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u691C\u7D22\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E\u5834\u5408\u306F\u3001\u73FE\u5728\u306E/\u30B7\u30B9\u30C6\u30E0\u30B9\u30AD\u30FC\u30DE\u3067\u306E\u307F\u691C\u7D22\u3057\u307E\u3059\u3002 +pref_page_sql_completion_group_folding =\u6298\u308A\u305F\u305F\u307F +pref_page_sql_completion_label_folding_enabled =\u6298\u308A\u305F\u305F\u307F\u53EF\u80FD +pref_page_sql_completion_label_folding_enabled_tip =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u6298\u308A\u7573\u307F\u3092\u4F7F\u7528\u3059\u308B +#MetaData +pref_page_database_general_separate_meta_connection_tip =\u5225\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u63A5\u7D9A\u3092\u958B\u304F\u3068\u3001\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u4E2D\u306BUI\u30ED\u30C3\u30AF\u304C\u767A\u751F\u3057\u306A\u3044\u305F\u3081\u3001\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u304C\u5411\u4E0A\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059 +pref_page_database_general_checkbox_case_sensitive_names_tip =DDL\u30AF\u30A8\u30EA\u3067\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3059\u308B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u751F\u6210\u3059\u308B +pref_page_database_general_checkbox_show_row_count_tip =\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304C\u305D\u306E\u3088\u3046\u306A\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3059\u308B\u901F\u5EA6\u304C\u9045\u3059\u304E\u308B\u5834\u5408\uFF08\u305F\u3068\u3048\u3070\u3001\u30C7\u30FC\u30BF\u304C\u975E\u5E38\u306B\u591A\u3044\u305F\u3081\uFF09 +pref_page_database_general_server_side_object_filters =\u30B5\u30FC\u30D0\u30FC\u5074\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC +pref_page_database_general_server_side_object_filters_tip =\u5FC5\u8981\u306A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3060\u3051\u304C\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u8AAD\u307F\u8FBC\u307E\u308C\u308B\u3088\u3046\u306B\u30E1\u30BF\u30C7\u30FC\u30BF\u30AF\u30A8\u30EA\u3092\u5909\u66F4\u3057\u307E\u3059\uFF08\u3044\u304F\u3064\u304B\u306E\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306B\u3088\u3063\u3066\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u3059\uFF09\u3002\ n\u305D\u306E\u4ED6\u306E\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u306F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u5074\u3067\u9069\u7528\u3055\u308C\u307E\u3059\u3002\ n\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8868\u793A\u3059\u308B\u5834\u5408\u306F\u3001 \uFF09\u3002 +pref_page_database_general_group_query_metadata =\u30AF\u30A8\u30EA\u30E1\u30BF\u30C7\u30FC\u30BF +pref_page_database_general_use_column_names =\u5217\u30E9\u30D9\u30EB\u306E\u4EE3\u308F\u308A\u306B\u5217\u540D\u3092\u4F7F\u7528\u3059\u308B +pref_page_database_general_use_column_names_tip =\u30C7\u30FC\u30BF\u30D3\u30E5\u30FC\u30A2\u3067\u5217\u30E9\u30D9\u30EB\u3092\u7121\u8996\u3059\u308B +#EntityEditor +pref_page_ui_general_keep_database_editors_tip =DBeaver\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u958B\u3044\u3066\u3044\u308B\u30A8\u30C7\u30A3\u30BF\uFF08\u30C6\u30FC\u30D6\u30EB\u30A8\u30C7\u30A3\u30BF\u306A\u3069\uFF09\u3092\u958B\u3044\u3066\u518D\u5EA6\u958B\u304F\u3053\u3068\u3092\u601D\u3044\u51FA\u3057\u307E\u3059\u3002 +pref_page_ui_general_refresh_editor_on_open_tip =\u3053\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30A8\u30C7\u30A3\u30BF\u3092\u958B\u304F\u305F\u3073\u306B\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3057\u307E\u3059\u3002\ n\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u69CB\u9020\u304C\u983B\u7E41\u306B\u5909\u66F4\u3055\u308C\u308B\u5834\u5408\uFF08SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u306A\u3069\uFF09\u306B\u306F\u3001\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u5FC5\u8981\u306A\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002 +pref_page_ui_general_show_full_name_in_editor =\u30A8\u30C7\u30A3\u30BF\u306E\u30BF\u30A4\u30C8\u30EB\u306B\u5B8C\u5168\u4FEE\u98FE\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u8868\u793A\u3059\u308B +pref_page_ui_general_show_preview_on_save =\u30A8\u30C7\u30A3\u30BF\u306E\u4FDD\u5B58\u6642\u306BSQL\u30D7\u30EC\u30D3\u30E5\u30FC\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u8868\u793A + +#Drivers +pref_page_ui_general_group_settings =\u8A2D\u5B9A +pref_page_ui_general_check_new_driver_versions =\u65B0\u3057\u3044\u30C9\u30E9\u30A4\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u78BA\u8A8D\u3059\u308B +pref_page_drivers_local_folder =\u30ED\u30FC\u30AB\u30EB\u30D5\u30A9\u30EB\u30C0 +pref_page_drivers_group_file_repositories =\u30D5\u30A1\u30A4\u30EB\u30EA\u30DD\u30B8\u30C8\u30EA +pref_page_drivers_button_add =\u8FFD\u52A0 +pref_page_drivers_label_enter_drivers_location_url =\u30C9\u30E9\u30A4\u30D0\u306E\u5834\u6240\u306EURL\u3092\u5165\u529B +pref_page_drivers_button_remove =\u524A\u9664\u3059\u308B +#DriversMaven +pref_page_drivers_maven_group_repositories =\u30EA\u30DD\u30B8\u30C8\u30EA +pref_page_drivers_maven_button_add =\u8FFD\u52A0 +pref_page_drivers_maven_label_enter_maven_repository_url =Maven\u30EA\u30DD\u30B8\u30C8\u30EA\u306EURL\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 +pref_page_drivers_maven_label_bad_url =URL\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093 +pref_page_drivers_maven_label_bad_url_tip =Bad Maven\u30EA\u30DD\u30B8\u30C8\u30EA\u306EURL +pref_page_drivers_maven_button_remove =\u524A\u9664\u3059\u308B +#pref_page_drivers_maven_button_disable =\u7121\u52B9\u306B\u3059\u308B +pref_page_drivers_maven_button_up =\u30A2\u30C3\u30D7 +pref_page_drivers_maven_button_down =\u30C0\u30A6\u30F3 +pref_page_drivers_maven_group_properties =\u30D7\u30ED\u30D1\u30C6\u30A3 +pref_page_drivers_maven_label_name =\u540D +pref_page_drivers_maven_label_scope =\u7BC4\u56F2 +pref_page_drivers_maven_group_authentication =\u8A8D\u8A3C +pref_page_drivers_maven_label_user =\u30E6\u30FC\u30B6\u30FC +pref_page_drivers_maven_label_password =\u30D1\u30B9\u30EF\u30FC\u30C9 +pref_page_drivers_maven_label_enable =\u6709\u52B9\u306B\u3059\u308B +pref_page_drivers_maven_label_disable =\u7121\u52B9\u306B\u3059\u308B +#DatabaseGeneral +pref_page_ui_general_group_task_bar =\u30BF\u30B9\u30AF\u30D0\u30FC +pref_page_ui_general_label_enable_long_operations =\u9577\u6642\u9593\u306E\u64CD\u4F5C\u901A\u77E5\u3092\u6709\u52B9\u306B\u3059\u308B +pref_page_ui_general_label_enable_long_operations_tip =\u9577\u671F\u9593\u306E\u64CD\u4F5C\uFF08\u305F\u3068\u3048\u3070\u3001SQL\u30AF\u30A8\u30EA\uFF09\u304C\u7D42\u4E86\u3057\u305F\u5F8C\u3001\u30B7\u30B9\u30C6\u30E0\u30BF\u30B9\u30AF\u30D0\u30FC\u306B\u7279\u5225\u306A\u901A\u77E5\u3092\u8868\u793A\u3057\u307E\u3059\u3002 +pref_page_ui_general_label_long_operation_timeout =\u9577\u6642\u9593\u306E\u64CD\u4F5C\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 +pref_page_ui_general_group_notifications =\u901A\u77E5 +pref_page_ui_general_label_enable_notifications =\u901A\u77E5\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u6709\u52B9\u306B\u3059\u308B +pref_page_ui_general_label_enable_notifications_tip =\u901A\u77E5\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3059\u308B\uFF08\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u306E\u53F3\u4E0B\u306B\u8868\u793A\u3055\u308C\u307E\u3059\uFF09 +pref_page_ui_general_label_notifications_close_delay =\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u306E\u524D\u306E\u9045\u5EF6\u81EA\u52D5\u96A0\u308C\uFF08ms\uFF09 + +pref_page_ui_general_group_resources =\u30EA\u30BD\u30FC\u30B9 +pref_page_ui_general_label_default_resource_encoding =\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30EA\u30BD\u30FC\u30B9\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +pref_page_ui_general_label_set_default_resource_encoding_tip =\u30B9\u30AF\u30EA\u30D7\u30C8\u3068\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30A8\u30F3\u30B3\u30FC\u30C9\u5909\u66F4\u306F\u518D\u8D77\u52D5\u304C\u5FC5\u8981\u3067\u3059 +pref_page_ui_general_group_debug_logs =\u30C7\u30D0\u30C3\u30B0\u30ED\u30B0 +pref_page_ui_general_label_enable_debug_logs =\u30C7\u30D0\u30C3\u30B0\u30ED\u30B0\u3092\u6709\u52B9\u306B\u3059\u308B +pref_page_ui_general_label_enable_debug_logs_tip =\u30C7\u30D0\u30C3\u30B0\u30ED\u30B0\u306F\u3001DBeaver\u81EA\u4F53\u306E\u30C7\u30D0\u30C3\u30B0\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u3059\u3079\u3066\u306E\u30A8\u30E9\u30FC/\u8B66\u544A/\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4FDD\u5B58\u3059\u308B\u305F\u3081\u306B\u3082\u4F7F\u7528\u3055\u308C\u307E\u3059 +pref_page_ui_general_label_log_file_location =\u30ED\u30B0\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240 +pref_page_ui_general_label_open_file_text =\u30ED\u30B0\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240\u3092\u30C7\u30D0\u30C3\u30B0\u3059\u308B +pref_page_ui_general_label_options_take_effect_after_restart =\u3053\u308C\u3089\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001DBeaver\u306E\u518D\u8D77\u52D5\u5F8C\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002 +pref_page_ui_general_label_settings =\u8A2D\u5B9A +#DatabaseNavigator +pref_page_database_general_label_expand_navigator_tree =\u63A5\u7D9A\u6642\u306B\u30CA\u30D3\u30B2\u30FC\u30BF\u30C4\u30EA\u30FC\u3092\u5C55\u958B\u3059\u308B +pref_page_database_general_label_show_tips_in_tree =\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30D2\u30F3\u30C8\u3092\u30C4\u30EA\u30FC\u306B\u8868\u793A\u3059\u308B +pref_page_database_general_label_show_tips_in_tree_tip =\u540D\u524D\u306E\u76F4\u5F8C\u306E\u30C4\u30EA\u30FC\u306B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30D2\u30F3\u30C8\uFF08\u5217\u30C7\u30FC\u30BF\u578B\u306A\u3069\uFF09\u3092\u8868\u793A\u3059\u308B +pref_page_database_general_label_order_elements_alphabetically =\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8\u9806\u306B\u8981\u7D20\u3092\u9806\u5E8F\u4ED8\u3051\u308B +pref_page_database_general_label_folders_first =\u6700\u521D\u306E\u30D5\u30A9\u30EB\u30C0 +pref_page_database_general_label_folders_first_tip =\u901A\u5E38\u306E\u8981\u7D20\u306E\u524D\u306B\u30D5\u30A9\u30EB\u30C0\u3092\u8868\u793A\u3059\u308B +pref_page_database_general_label_group_database_by_driver =\u30C9\u30E9\u30A4\u30D0\u306B\u3088\u308B\u30B0\u30EB\u30FC\u30D7\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +pref_page_database_general_label_sync_editor_connection_with_navigator =\u30CA\u30D3\u30B2\u30FC\u30BF\u9078\u629E\u306B\u3088\u308B\u81EA\u52D5\u540C\u671F\u30A8\u30C7\u30A3\u30BF\u63A5\u7D9A +pref_page_database_general_label_sync_editor_connection_with_navigator_tip =\u9078\u629E\u3057\u305F\u30CA\u30D3\u30B2\u30FC\u30BF\u30CE\u30FC\u30C9\u304B\u3089\u81EA\u52D5\u7684\u306B\u30A8\u30C7\u30A3\u30BF\uFF08SQL\u30A8\u30C7\u30A3\u30BF\u306A\u3069\uFF09\u306E\u63A5\u7D9A\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u63A5\u7D9A/\u30B9\u30AD\u30FC\u30DE\u3092\u983B\u7E41\u306B\u5909\u66F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u5834\u5408\u306F\u610F\u5473\u304C\u3042\u308A\u307E\u3059\u3002 +pref_page_database_general_label_double_click_node =\u30CE\u30FC\u30C9\u3092\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3059\u308B +pref_page_database_general_label_double_click_node_open_properties =\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u958B\u304F +pref_page_database_general_label_double_click_node_expand_collapse =\u5C55\u958B/\u6298\u308A\u305F\u305F\u307F +pref_page_database_general_label_double_click_connection =\u63A5\u7D9A\u3092\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3059\u308B +pref_page_database_general_label_double_click_connection_open_properties =\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u958B\u304F +pref_page_database_general_label_double_click_connection_conn_disconn =\u63A5\u7D9A/\u5207\u65AD +pref_page_database_general_label_double_click_connection_open_sqleditor =SQL\u30A8\u30C7\u30A3\u30BF\u3092\u958B\u304F +pref_page_database_general_label_double_click_connection_expand_collapse =\u5C55\u958B/\u6298\u308A\u305F\u305F\u307F + +pref_page_database_general_group_toolbars =\u30C4\u30FC\u30EB\u30D0\u30FC +pref_page_database_general_label_show_general_toolbar_everywhere =\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u5E38\u306B\u8868\u793A\u3059\u308B +pref_page_database_general_label_show_general_toolbar_everywhere_tip =\u3059\u3079\u3066\u306E\u8996\u70B9\u3067\u4E00\u822C\u7684\u306A\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C4\u30FC\u30EB\u30D0\u30FC\u3092\u8868\u793A\u3059\u308B + +#ConnectionTypes +pref_page_connection_types_label_table_column_name =\u540D +pref_page_connection_types_label_table_column_description =\u8AAC\u660E +pref_page_connection_types_label_delete_connection_type =\u63A5\u7D9A\u30BF\u30A4\u30D7\u3092\u524A\u9664\u3059\u308B +pref_page_connection_types_label_delete_connection_type_description =\u63A5\u7D9A\u30BF\u30A4\u30D7 "{0}"\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F\ n\u3053\u306E\u30BF\u30A4\u30D7\u306E\u3059\u3079\u3066\u306E\u63A5\u7D9A\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u30BF\u30A4\u30D7\uFF08{1}\uFF09\u306B\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u307E\u3059 +pref_page_connection_types_group_settings =\u8A2D\u5B9A +pref_page_connection_types_label_name =\u540D +pref_page_connection_types_label_description =\u8AAC\u660E +pref_page_connection_types_label_color =\u8272 +pref_page_connection_types_label_auto_commit_by_default =\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u81EA\u52D5\u30B3\u30DF\u30C3\u30C8 +pref_page_connection_types_label_confirm_sql_execution =SQL\u5B9F\u884C\u306E\u78BA\u8A8D +#ProjectSettings +pref_page_projects_settings_label_resource_location =\u30EA\u30BD\u30FC\u30B9\u306E\u5834\u6240 +pref_page_projects_settings_label_resource =\u30EA\u30BD\u30FC\u30B9 +pref_page_projects_settings_label_folder =\u30D5\u30A9\u30EB\u30C0 +pref_page_projects_settings_label_select =\u9078\u629E +pref_page_projects_settings_label_root_folder =\u30EB\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0 +pref_page_projects_settings_label_not_use_hidden_folders =\u96A0\u3057\u30D5\u30A9\u30EB\u30C0\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 +pref_page_projects_settings_label_not_store_resources_in_another_project =\u4ED6\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30EA\u30BD\u30FC\u30B9\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093 +pref_page_projects_settings_label_restart_require_refresh_global_settings =\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u3092\u66F4\u65B0\u3059\u308B\u306B\u306F\u518D\u8D77\u52D5\u304C\u5FC5\u8981\u3067\u3059 +pref_page_sql_editor_checkbox_create_script_folders =\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210 +## Preference/Properties ## + + +## Connection edit ## +dialog_connection_edit_title =\u63A5\u7D9A "{0}"\u69CB\u6210 + +dialog_connection_edit_connection_settings_variables_hint_label =\u63A5\u7D9A\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u5909\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 + +dialog_connection_edit_wizard_conn_conf_network_link =\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u8A2D\u5B9A\uFF08SSH\u3001SSL\u3001\u30D7\u30ED\u30AD\u30B7\u3001...\uFF09 + +dialog_connection_edit_wizard_general =\u4E00\u822C +dialog_connection_edit_wizard_general_bootstrap_query_title =\u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7SQL\u30AF\u30A8\u30EA +dialog_connection_edit_wizard_general_bootstrap_query_sql_label =SQL\u30AF\u30A8\u30EA +dialog_connection_edit_wizard_general_bootstrap_query_sql_title =SQL\u3092\u5165\u529B +dialog_connection_edit_wizard_general_bootstrap_query_ignore_error_lable =SQL\u30A8\u30E9\u30FC\u3092\u7121\u8996\u3059\u308B +dialog_connection_edit_wizard_general_filter_save_button =\u30BB\u30FC\u30D6 +dialog_connection_edit_wizard_general_filter_remove_button =\u524A\u9664\u3059\u308B +dialog_connection_edit_wizard_general_filter_save_label =\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF +dialog_connection_edit_wizard_general_filter_name_label =\u540D +dialog_connection_edit_wizard_general_filter_hint_text =\u30D5\u30A3\u30EB\u30BF\u3067\u306F\u30DE\u30B9\u30AF\uFF08\uFF05\u3001_\u3001*\uFF09\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059 + +dialog_connection_edit_wizard_shell_cmd =\u30B7\u30A7\u30EB\u30B3\u30DE\u30F3\u30C9 +dialog_connection_edit_wizard_shell_cmd_pause_label =\u5B9F\u884C\u5F8C\u306B\u4E00\u6642\u505C\u6B62\u3059\u308B\uFF08ms\uFF09 +dialog_connection_edit_wizard_shell_cmd_pause_tooltip =\u30D7\u30ED\u30BB\u30B9\u304C\u767A\u751F\u3057\u305F\u5F8C\u3001\u6307\u5B9A\u3055\u308C\u305F\u6642\u9593\uFF08\u30DF\u30EA\u79D2\uFF09\u5F85\u6A5F\u3059\u308B +dialog_connection_edit_wizard_shell_cmd_directory_label =\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +dialog_connection_edit_wizard_shell_cmd_directory_title =\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +dialog_connection_edit_wizard_shell_cmd_variables_hint_label =\u30B3\u30DE\u30F3\u30C9\u3067\u5909\u6570\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30EA\u30B9\u30C8\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002 +dialog_connection_edit_wizard_shell_cmd_variables_hint_title =\u5909\u6570 + +dialog_connection_edit_wizard_connections =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8ID +dialog_connection_edit_wizard_connections_description =\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u63A5\u7D9A\u306E\u8B58\u5225 +dialog_connection_edit_wizard_metadata =\u30E1\u30BF\u30C7\u30FC\u30BF +dialog_connection_edit_wizard_metadata_description =\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u8AAD\u307F\u8FBC\u307F\u8A2D\u5B9A +dialog_connection_edit_wizard_resultset =\u7D50\u679C\u30BB\u30C3\u30C8 +dialog_connection_edit_wizard_resultset_description =\u7D50\u679C\u30BB\u30C3\u30C8\u306E\u74B0\u5883\u8A2D\u5B9A +dialog_connection_edit_wizard_editors =\u7DE8\u96C6\u8005 +dialog_connection_edit_wizard_editors_description =\u7D50\u679C\u30A8\u30C7\u30A3\u30BF\u306E\u8A2D\u5B9A +dialog_connection_edit_wizard_data_format =\u30C7\u30FC\u30BF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +dialog_connection_edit_wizard_data_format_description =\u30C7\u30FC\u30BF\u66F8\u5F0F\u8A2D\u5B9A +dialog_connection_edit_wizard_presentation =\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3 +dialog_connection_edit_wizard_presentation_description =ResultSets UI\u3068\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3 +dialog_connection_edit_wizard_sql_editor =SQL\u30A8\u30C7\u30A3\u30BF +dialog_connection_edit_wizard_sql_editor_description =SQL\u30A8\u30C7\u30A3\u30BF\u306E\u8A2D\u5B9A +dialog_connection_edit_wizard_sql_processing =SQL\u51E6\u7406 +dialog_connection_edit_wizard_sql_processing_description =SQL\u51E6\u7406\u8A2D\u5B9A + +dialog_connection_edit_wizard_conn_change_title =\u63A5\u7D9A\u304C\u5909\u66F4\u3055\u308C\u305F +dialog_connection_edit_wizard_conn_change_question =\u63A5\u7D9A "{0}"\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\u3002\ n\u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B\uFF1F +dialog_connection_edit_wizard_lock_pwd_title =\u30ED\u30C3\u30AF\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B +dialog_connection_edit_wizard_bad_pwd_title =\u60AA\u3044\u30D1\u30B9\u30EF\u30FC\u30C9 +dialog_connection_edit_wizard_bad_pwd_msg =\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093 +dialog_connection_edit_wizard_error_md5_title =MD5\u306E\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3059\u308B +dialog_connection_edit_wizard_error_md5_msg =\u30D1\u30B9\u30EF\u30FC\u30C9\u30CF\u30C3\u30B7\u30E5\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093 +## Connection edit ## + +## Driver edit ## +dialog_edit_driver_type_label =\u30C9\u30E9\u30A4\u30D0\u30BF\u30A4\u30D7 +dialog_edit_driver_embedded_label =\u57CB\u3081\u8FBC\u307F +dialog_edit_driver_setting =\u8A2D\u5B9A +dialog_edit_driver_description =\u8AAC\u660E +dialog_edit_driver_edit_maven_title =Maven\u30A2\u30FC\u30C6\u30A3\u30D5\u30A1\u30AF\u30C8\u3092\u7DE8\u96C6\u3059\u308B +dialog_edit_driver_edit_maven_group_id_label =\u30B0\u30EB\u30FC\u30D7ID +dialog_edit_driver_edit_maven_artifact_id_label =\u30A2\u30FC\u30C6\u30A3\u30D5\u30A1\u30AF\u30C8ID +dialog_edit_driver_edit_maven_classfier_label =\u30AF\u30E9\u30B7\u30D5\u30A1\u30A4\u30A2 +dialog_edit_driver_edit_maven_version_label =\u30D0\u30FC\u30B8\u30E7\u30F3 + +dialog_edit_driver_text_driver_library =\u30C9\u30E9\u30A4\u30D0 "{0}"\u30E9\u30A4\u30D6\u30E9\u30EA "{1}" +dialog_edit_driver_info =\u60C5\u5831 +dialog_edit_driver_driver =\u30C9\u30E9\u30A4\u30D0 +dialog_edit_driver_library =\u3068\u3057\u3087\u3046\u304B\u3093 +dialog_edit_driver_path =\u30D1\u30B9 +dialog_edit_driver_version =\u30D0\u30FC\u30B8\u30E7\u30F3 +dialog_edit_driver_file =\u30D5\u30A1\u30A4\u30EB +dialog_edit_driver_tab_depencencies =\u4F9D\u5B58\u95A2\u4FC2 +dialog_edit_driver_tab_depencencies_tooltip =\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u4F9D\u5B58\u95A2\u4FC2 +dialog_edit_driver_tab_detail =\u8A73\u7D30 +dialog_edit_driver_tab_detail_tooltip =\u8FFD\u52A0\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u60C5\u5831 +dialog_edit_driver_text_license =\u30E9\u30A4\u30BB\u30F3\u30B9 +## Driver edit ## + +## Driver download ## +dialog_driver_download_button_edit_dirver =\u30C9\u30E9\u30A4\u30D0\u306E\u7DE8\u96C6 +dialog_driver_download_button_add_jars =JAR\u3092\u8FFD\u52A0\u3059\u308B + +dialog_driver_download_wizard_title_setting =\u30C9\u30E9\u30A4\u30D0\u306E\u8A2D\u5B9A +dialog_driver_download_wizard_title_upload_files =\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u3092\u66F4\u65B0\u3059\u308B +dialog_driver_download_wizard_title_setup_files =\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7 +dialog_driver_download_wizard_download =\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 +dialog_driver_download_wizard_open_download =\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u30DA\u30FC\u30B8\u3092\u958B\u304F + +dialog_driver_download_page_vendor_link =\u30D9\u30F3\u30C0\u30FC\u306E\u30A6\u30A7\u30D6\u30B5\u30A4\u30C8 +dialog_driver_download_page_download_conf_link =\u8A2D\u5B9A\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B + +dialog_driver_download_manual_page_config_driver_file =\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u3092\u8A2D\u5B9A\u3059\u308B +dialog_driver_download_manual_page_download_driver_file =\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B + +dialog_driver_download_manual_page_download_config_driver_file ={0}\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u3066\u8A2D\u5B9A\u3059\u308B +dialog_driver_download_manual_page_driver_file_missing_text ={0}\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308A\u307E\u305B\u3093\u3002\ n \ n\u30D9\u30F3\u30C0\u30FC\u30DD\u30EA\u30B7\u30FC\u306B\u3088\u308B\u3068\u3001\u3053\u306E\u30C9\u30E9\u30A4\u30D0\u306F\u4E00\u822C\u306B\u516C\u958B\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\ n\u30D9\u30F3\u30C0\u30FC\u306EWeb\u30B5\u30A4\u30C8\u304B\u3089\u624B\u52D5\u3067\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\ n \ n\u30C9\u30E9\u30A4\u30D0\u3092\u6B63\u5E38\u306B\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u305F\u5F8C\u3001\u30D5\u30A1\u30A4\u30EB\u3092DBeaver\u30E9\u30A4\u30D6\u30E9\u30EA\u30EA\u30B9\u30C8\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002 +dialog_driver_download_manual_page_driver_file =\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB +dialog_driver_download_manual_page_column_file =\u30D5\u30A1\u30A4\u30EB +dialog_driver_download_manual_page_column_required =\u5FC5\u9808 +dialog_driver_download_manual_page_column_description =\u8AAC\u660E +dialog_driver_download_manual_page_yes =\u306F\u3044 +dialog_driver_download_manual_page_no =\u3044\u3044\u3048 + +dialog_driver_download_auto_page_auto_download =\u81EA\u52D5\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 +dialog_driver_download_auto_page_download_driver_files =\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B +dialog_driver_download_auto_page_download_specific_driver_files ={0}\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B +dialog_driver_download_auto_page_driver_file_missing_text ={0}\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\ nDBeaver\u306F\u3053\u308C\u3089\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u81EA\u52D5\u7684\u306B\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3067\u304D\u307E\u3059\u3002\ n \ n +dialog_driver_download_auto_page_force_download =\u5F37\u5236\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9/\u4E0A\u66F8\u304D +dialog_driver_download_auto_page_force_download_tooltip =\u5F37\u5236\u7684\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\u65E2\u306B\u30C7\u30A3\u30B9\u30AF\u306B\u5165\u3063\u3066\u3044\u3066\u3082\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B +dialog_driver_download_auto_page_required_files =\u30C9\u30E9\u30A4\u30D0\u30FC\u304C\u5FC5\u8981\u3068\u3059\u308B\u30D5\u30A1\u30A4\u30EB +dialog_driver_download_auto_page_change_driver_version_text =\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u5217\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u3001\u30C9\u30E9\u30A4\u30D0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5909\u66F4\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\ n\u6B21\u306B\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u30D0\u30FC\u30B8\u30E7\u30F3\u306E1\u3064\u3092\u9078\u629E\u3067\u304D\u307E\u3059\u3002 +dialog_driver_download_auto_page_obtain_driver_files_text =\ n\u307E\u305F\u306F\u3001\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u3092\u81EA\u5206\u3067\u5165\u624B\u3057\u3066\u30C9\u30E9\u30A4\u30D0\u30A8\u30C7\u30A3\u30BF\u306B\u8FFD\u52A0\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002 +dialog_driver_download_auto_page_cannot_resolve_libraries_text =\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B +dialog_driver_download_auto_page_driver_download_error =\u30C9\u30E9\u30A4\u30D0\u30FC\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 +dialog_driver_download_auto_page_driver_download_error_msg =\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +dialog_driver_download_auto_page_driver_security_warning =\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u8B66\u544A +dialog_driver_download_auto_page_driver_security_warning_msg =\u30E9\u30A4\u30D6\u30E9\u30EA "{0}" |\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3067\u4FDD\u8B77\u3055\u308C\u305F\u30EA\u30DD\u30B8\u30C8\u30EA\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\ n\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3067\u4FDD\u8B77\u3055\u308C\u3066\u3044\u306A\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u307F\u304C\u5229\u7528\u53EF\u80FD\u3067\u3059\uFF1A{1}\u3002\ n \ n\u30DE\u30EB\u30A6\u30A7\u30A2\u611F\u67D3\u306E\u53EF\u80FD\u6027\u304C\u3042\u308B\u305F\u3081\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3067\u4FDD\u8B77\u3055\u308C\u3066\u3044\u306A\u3044\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u304A\u3059\u3059\u3081\u3057\u307E\u305B\u3093\u3002\u9032\u3080\uFF1F +dialog_driver_download_auto_page_download_rate ={0} / {1}\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 +dialog_driver_download_auto_page_download_failed_msg =\u30C9\u30E9\u30A4\u30D0\u30D5\u30A1\u30A4\u30EB\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\ n\u518D\u8A66\u884C\u3057\u307E\u3059\u304B\uFF1F +## Driver download ## + +## SQL editor resultset filter panel ## +sql_editor_resultset_tool_item_log =\u30ED\u30B0 +sql_editor_resultset_tool_item_output =\u51FA\u529B +sql_editor_resultset_filter_panel_text_enter_sql_to_filter =\u7D50\u679C\u3092\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3059\u308BSQL\u5F0F\u3092\u5165\u529B\u3057\u307E\u3059\uFF08Ctrl + Space\u3092\u4F7F\u7528\uFF09 +sql_editor_resultset_filter_panel_text_enter_filter_not_support =\u00A0\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +sql_editor_resultset_filter_panel_btn_apply =\u30D5\u30A3\u30EB\u30BF\u6761\u4EF6\u3092\u9069\u7528\u3059\u308B +sql_editor_resultset_filter_panel_btn_remove =\u3059\u3079\u3066\u306E\u30D5\u30A3\u30EB\u30BF/\u30AA\u30FC\u30C0\u30FC\u3092\u524A\u9664\u3059\u308B +sql_editor_resultset_filter_panel_btn_save =\u73FE\u5728\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30D5\u30A3\u30EB\u30BF\u8A2D\u5B9A\u3092\u4FDD\u5B58\u3059\u308B +sql_editor_resultset_filter_panel_btn_custom =\u30AB\u30B9\u30BF\u30E0\u30D5\u30A3\u30EB\u30BF +sql_editor_resultset_filter_panel_btn_stop_refresh =\u81EA\u52D5\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3092\u505C\u6B62\u3059\u308B +sql_editor_resultset_filter_panel_btn_config_refresh =\u81EA\u52D5\u66F4\u65B0\u3092\u8A2D\u5B9A\u3059\u308B +sql_editor_resultset_filter_panel_label =\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30A8\u30C7\u30A3\u30BF\u3067\u30AF\u30A8\u30EA\u304C\u958B\u304D\u307E\u3059 +sql_editor_resultset_filter_panel_btn_open_console =Ctrl +\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068SQL\u30B3\u30F3\u30BD\u30FC\u30EB\u304C\u958B\u304D\u307E\u3059 +sql_editor_resultset_filter_panel_menu_customize =\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA... +sql_editor_resultset_filter_panel_menu_stop =\u3084\u3081\u308B +sql_editor_resultset_filter_panel_menu_refresh_interval ={0}\u79D2\u3054\u3068\u306B\u66F4\u65B0 +sql_editor_resultset_filter_panel_menu_refresh_interval_1 =... {0}\u79D2 +sql_editor_resultset_filter_panel_control_no_data =\u30C7\u30FC\u30BF\u306A\u3057 +sql_editor_resultset_filter_panel_control_execute_to_see_reslut =\u30AF\u30A8\u30EA{0}\u307E\u305F\u306F\u30B9\u30AF\u30EA\u30D7\u30C8{1}\u3092\u5B9F\u884C\u3057\u3066\u7D50\u679C\u3092\u8868\u793A\u3059\u308B +## SQL editor resultset filter panel ## + +## object properties editor ## +obj_editor_properties_control_action_filter_setting =\u30D5\u30A3\u30EB\u30BF\u8A2D\u5B9A +obj_editor_properties_control_action_configure_columns =\u5217\u3092\u8A2D\u5B9A\u3059\u308B +obj_editor_properties_control_action_configure_columns_description =\u5217\u306E\u53EF\u8996\u6027\u3092\u69CB\u6210\u3059\u308B +## object properties editor ## + +##toolbar editor menu item## +toolbar_cmd_undo_name =\u5143\u306B\u623B\u3059 +toolbar_cmd_redo_name =\u3084\u308A\u76F4\u3057 +##toolbar editor menu item## + + + diff --git a/nls/bundles/org.jkiss.dbeaver.data.office.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.data.office.nls/META-INF/MANIFEST.MF index dd39efce604cc03c5baadac8dc6ce684f677abc3..c72a100c1157b7a2fbcd5fffb8d8b440834592db 100644 --- a/nls/bundles/org.jkiss.dbeaver.data.office.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.data.office.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.data.office.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.data.office Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.data.office.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.data.office.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..5ad4630ee3228de756e661952d963aa67cf1c118 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.data.office.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,37 @@ +Bundle-Vendor = JKISS +Bundle-Name = DBeaver Office Support + +dataTransfer.processor.xlsx.name=XLSX +dataTransfer.processor.xlsx.description=XLSX\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dataTransfer.processor.xlsx.propertyGroup.general.label =\u4E00\u822C +dataTransfer.processor.xlsx.property.header.name=\u30D8\u30C3\u30C0\u30FC\u3068\u3057\u3066\u306E\u5217\u540D +dataTransfer.processor.xlsx.property.header.description=\u6700\u521D\u306E\u884C\u3068\u3057\u3066\u5217\u540D\u3092\u4F7F\u7528\u3059\u308B +dataTransfer.processor.xlsx.property.nullString.name=NULL\u6587\u5B57\u5217 +dataTransfer.processor.xlsx.property.nullString.description=NULL\u5024\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u5217 +dataTransfer.processor.xlsx.property.boolStringTrue.name=\u30D6\u30FC\u30EB\u6587\u5B57\u5217TRUE +dataTransfer.processor.xlsx.property.boolStringTrue.description=TRUE\u30D6\u30FC\u30EB\u5024\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u5217 +dataTransfer.processor.xlsx.property.boolStringFalse.name=\u30D6\u30FC\u30EB\u6587\u5B57\u5217FALSE +dataTransfer.processor.xlsx.property.boolStringFalse.description=FALSE\u30D6\u30FC\u30EB\u5024\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u5217 +dataTransfer.processor.xlsx.property.exportSql.name=SQL\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dataTransfer.processor.xlsx.property.exportSql.description=SQL\u30922\u756A\u76EE\u306E\u30B7\u30FC\u30C8\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +dataTransfer.processor.xlsx.property.extension.label =\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50 +dataTransfer.processor.xlsx.property.splitSqlText.name=SQL\u30C6\u30AD\u30B9\u30C8\u306E\u5206\u5272 +dataTransfer.processor.xlsx.property.splitSqlText.description=CR\u306B\u3088\u3063\u3066\u884C\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305FSQL\u3092\u5206\u5272\u3059\u308B +dataTransfer.processor.xlsx.property.headerFont.name=\u30D8\u30C3\u30C0\u30FC\u884C\u30D5\u30A9\u30F3\u30C8 +dataTransfer.processor.xlsx.property.headerFont.description=\u6700\u521D\u306E\u884C\u306E\u30D5\u30A9\u30F3\u30C8\u30D7\u30ED\u30D1\u30C6\u30A3 +dataTransfer.processor.xlsx.property.border.name=\u30DC\u30FC\u30C0\u30FC\u30B9\u30BF\u30A4\u30EB +dataTransfer.processor.xlsx.property.border.description=\u30BB\u30EB\u5883\u754C\u7DDA\u306E\u30B9\u30BF\u30A4\u30EB +dataTransfer.processor.xlsx.property.rowNumber.name=\u884C\u756A\u53F7 +dataTransfer.processor.xlsx.property.rowNumber.description=\u884C\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u6700\u521D\u306E\u5217\u3068\u3057\u3066\u8A2D\u5B9A\u3059\u308B +dataTransfer.processor.xlsx.property.splitByRowCount.name=\u30B7\u30FC\u30C8\u4E0A\u306E\u6700\u5927\u884C +dataTransfer.processor.xlsx.property.splitByRowCount.description=\u884C\u6570\u3067\u5206\u5272 +dataTransfer.processor.xlsx.property.splitByColNum.name=\u5217\u30B0\u30EB\u30FC\u30D7 +dataTransfer.processor.xlsx.property.splitByColNum.description=\u5217\u5358\u4F4D\u3067\u30B7\u30FC\u30C8\u306B\u884C\u3092\u30B0\u30EB\u30FC\u30D7\u5316\u3059\u308B\u305F\u3081\u306E\u5217\u756A\u53F7 + +category.org.jkiss.dbeaver.ext.data.office.description =Office\u30B3\u30DE\u30F3\u30C9 +category.org.jkiss.dbeaver.ext.data.office.name =Office + +command.org.jkiss.dbeaver.ext.data.office.results.openSpreadsheet.name =\u7D50\u679C\u3092Excel\u3067\u958B\u304F +command.org.jkiss.dbeaver.ext.data.office.results.openSpreadsheet.description =Excel / Calc\u3067\u7D50\u679C\u3092\u958B\u304F + +command.org.jkiss.dbeaver.ext.data.office.results.openSpreadsheet.toolbar.label =Excel diff --git a/nls/bundles/org.jkiss.dbeaver.data.office.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.data.office.nls/pom.xml index f1bf42b3cec2f9b5fb1c661dc0ced8f255348c1e..debd954fc9facbfd1f8761aec01bc82207b07352 100644 --- a/nls/bundles/org.jkiss.dbeaver.data.office.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.data.office.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.data.office.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.db2.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.db2.nls/META-INF/MANIFEST.MF index c946dfebd0575d1b1fbb58a1bda51df221eb3b56..b60c9462baad8a8bf3d8037f434e74a86d9092af 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.db2.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.db2.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.db2.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.db2 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.db2.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.db2.nls/pom.xml index 0813c64c18070c1592a606013f4329972ef992af..8540d2007ac4940b771fa63add52cbfa846eac0e 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.db2.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.db2.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.db2.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.derby.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.derby.nls/META-INF/MANIFEST.MF index 737fa1665dc523828b4c42b94378742976019ccd..a0462b998f197363994b7a096712647329ce7c1c 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.derby.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.derby.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.derby.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.derby Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.derby.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.derby.nls/pom.xml index fcebc2a29dcd240615397e658686f835ef1bf562..1696ff5f358454060b0210d613730e6ec8ec6386 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.derby.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.derby.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.derby.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/META-INF/MANIFEST.MF index 33d26dc48a09b160f03517aab867d364407f61e0..09b779c6db28e0e3b505d29b0c3d090746dca032 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.erd.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.erd Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..6972303488d695db0c3015644596a6ff14850455 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,47 @@ +Bundle-Vendor = JKISS +Bundle-Name = DBeaver ER Diagram + +extension-point.org.jkiss.dbeaver.ext.erd.export.format.name =\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1\u30CF\u30F3\u30C9\u30E9 + +editor.erd.name=ER\u56F3 +editor.erd.description=ER\u56F3 +editor.org.jkiss.dbeaver.ext.erd.editor.ERDEditorStandalone.name =ER\u56F3\u30A8\u30C7\u30A3\u30BF + +menu.create.new.diagram=\u65B0\u3057\u3044ER\u56F3\u306E\u4F5C\u6210 + +pref.page.name.erd.editor=ER\u56F3\u30A8\u30C7\u30A3\u30BF +page.org.jkiss.dbeaver.preferences.erd.general.name =ER\u56F3\u306E\u8A2D\u5B9A + +wizard.erd.name=ER\u56F3 +wizard.erd.description=ER\u56F3 + +content-type.org.jkiss.dbeaver.erd.name =ER\u56F3 +content-type.org.jkiss.dbeaver.erd.content-type-erd.name =ER\u56F3 + +command.org.jkiss.dbeaver.erd.diagram.create.description =ER\u56F3 +command.org.jkiss.dbeaver.erd.diagram.create.name =ERD\u306E\u4F5C\u6210 + +themeElementCategory.org.jkiss.dbeaver.ui.presentation.erd.label =ER\u56F3 +themeElementCategory.org.jkiss.dbeaver.ui.presentation.erd.description =ER\u56F3 + +fontDefinition.org.jkiss.dbeaver.erd.diagram.font.label =\u30C0\u30A4\u30A2\u30B0\u30E9\u30E0\u30D5\u30A9\u30F3\u30C8 +fontDefinition.org.jkiss.dbeaver.erd.diagram.font.description =\u30C0\u30A4\u30A2\u30B0\u30E9\u30E0\u30D5\u30A9\u30F3\u30C8\u306F\u30C0\u30A4\u30A2\u30B0\u30E9\u30E0\u306E\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u3068\u5C5E\u6027\u540D\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 + +colorDefinition.org.jkiss.dbeaver.erd.diagram.background.label =\u56F3\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.background.description =\u56F3\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.entity.regular.background.label =\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.entity.regular.background.description =\u901A\u5E38\u306E\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.entity.primary.background.label =\u30D7\u30E9\u30A4\u30DE\u30EA\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.entity.primary.background.description =\u30D7\u30E9\u30A4\u30DE\u30EA\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.entity.association.background.label =\u95A2\u9023\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.entity.association.background.description =\u95A2\u9023\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.entity.name.foreground.label =\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u540D\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.entity.name.foreground.description =\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u540D\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.attributes.background.label =\u30A2\u30C8\u30EA\u30D3\u30E5\u30FC\u30C8\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.attributes.background.description =\u5C5E\u6027\u540D\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.attributes.foreground.label =\u30A2\u30C8\u30EA\u30D3\u30E5\u30FC\u30C8\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.attributes.foreground.description =\u5C5E\u6027\u540D\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.notes.foreground.label =\u30CE\u30FC\u30C8\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.notes.foreground.description =\u56F3\u306E\u30CE\u30FC\u30C8\u306E\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.notes.background.label =\u30CE\u30FC\u30C8\u306E\u80CC\u666F\u8272 +colorDefinition.org.jkiss.dbeaver.erd.diagram.notes.background.description =\u56F3\u306E\u30CE\u30FC\u30C8\u306E\u80CC\u666F\u8272 \ No newline at end of file diff --git a/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/pom.xml index 579fcd4376fe0d9fc85e398be8abe7c4ea04a0d3..7bc9d8424efc4387ecead6f6908970b8e3c40d7e 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.erd.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/src/org/jkiss/dbeaver/ext/erd/ERDResources_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/src/org/jkiss/dbeaver/ext/erd/ERDResources_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..e54fa72bfbdca69a6572e76328a851dabb05cd09 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.erd.nls/src/org/jkiss/dbeaver/ext/erd/ERDResources_ja.properties @@ -0,0 +1,36 @@ + +#navigator +action_diagram_layout_name=\u30A2\u30EC\u30F3\u30B8\u56F3 +wizard_diagram_create_title=\u56F3\u4F5C\u6210\u30A6\u30A3\u30B6\u30FC\u30C9 + +#part +column_=\u30AB\u30E9\u30E0 +entity_diagram_=\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30C0\u30A4\u30A2\u30B0\u30E9\u30E0 +part_note_title=\u6CE8\u610F +pref_page_erd_checkbox_grid_enabled=\u30B0\u30EA\u30C3\u30C9\u304C\u6709\u52B9 +pref_page_erd_checkbox_snap_to_grid=\u30B0\u30EA\u30C3\u30C9\u306B\u30B9\u30CA\u30C3\u30D7 +pref_page_erd_combo_page_mode=\u30DA\u30FC\u30B8\u30E2\u30FC\u30C9 +pref_page_erd_group_grid=\u30B0\u30EA\u30C3\u30C9 +pref_page_erd_group_print=\u5370\u5237 +pref_page_erd_item_fit_height=\u30D5\u30A3\u30C3\u30C8\u306E\u9AD8\u3055 +pref_page_erd_item_fit_page=\u30DA\u30FC\u30B8\u306B\u5408\u308F\u305B\u308B +pref_page_erd_item_fit_width=\u30D5\u30A3\u30C3\u30C8\u5E45 +pref_page_erd_item_tile=\u30BF\u30A4\u30EB +pref_page_erd_spinner_grid_height=\u30B0\u30EA\u30C3\u30C9\u9AD8\u3055 +pref_page_erd_spinner_grid_width=\u30B0\u30EA\u30C3\u30C9\u5E45 +pref_page_erd_spinner_margin_bottom=\u30DE\u30FC\u30B8\u30F3\u30DC\u30C8\u30E0 +pref_page_erd_spinner_margin_left=\u30DE\u30FC\u30B8\u30F3\u5DE6 +pref_page_erd_spinner_margin_right=\u4F59\u767D +pref_page_erd_spinner_margin_top=\u30DE\u30FC\u30B8\u30F3\u30C8\u30C3\u30D7 +wizard_page_diagram_create_description=\u56F3\u306E\u5185\u5BB9\u3092\u7BA1\u7406\u3059\u308B\u3002 +wizard_page_diagram_create_group_settings=\u8A2D\u5B9A +wizard_page_diagram_create_label_init_content=\u521D\u671F\u30B3\u30F3\u30C6\u30F3\u30C4\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09 +wizard_page_diagram_create_name=\u65B0\u3057\u3044\u56F3\u306E\u4F5C\u6210 +wizard_page_diagram_create_title=\u65B0\u3057\u3044\u56F3\u306E\u4F5C\u6210 + +## ERD editor action item control ## +erd_editor_control_action_toggle_grid =\u00A0\u30B0\u30EA\u30C3\u30C9\u306E\u5207\u308A\u66FF\u3048 +erd_editor_control_action_refresh_diagram =\u00A0\u56F3\u306E\u66F4\u65B0 +erd_editor_control_action_save_external_format =\u00A0\u00A0\u30C0\u30A4\u30A2\u30B0\u30E9\u30E0\u3092\u5916\u90E8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u4FDD\u5B58 +erd_editor_control_action_print_diagram =\u00A0\u56F3\u306E\u5370\u5237 +erd_editor_control_action_configuration =\u00A0\u69CB\u6210 \ No newline at end of file diff --git a/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/META-INF/MANIFEST.MF index f29fa35ce2132f71066357ffa141fb9bb528bd4e..3c24f7c722fe1fbd3bbd3bd005860c93aea10211 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Exasol extension NLS Bundle-SymbolicName: org.jkiss.dbeaver.ext.exasol.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.exasol Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..f76094aa34a39050354c93af1c24477ac956c513 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,274 @@ +# DBeaver - Universal Database Manager +# Copyright (C) 2016 Karl Griesser (fullref@gmail.com) +# Copyright (C) 2010-2017 Serge Rider serge@jkiss.org + +Bundle-Vendor = JKISS +Bundle-Name = DBeaver Exasol Support + +datasource.exasol.description =\u00A0Exasol\u30B3\u30CD\u30AF\u30BF +datasource.exasol.label =\u00A0Exasol + +driver.exasol.description =\u00A0Exasol JDBC\u30C9\u30E9\u30A4\u30D0 +driver.exasol.label =\u00A0Exasol + +category.exasol.description =\u00A0Exasol\u30C4\u30FC\u30EB +category.exasol.name =\u00A0Exasol + +dialog.connection.header =\u00A0Exasol\u306E\u63A5\u7D9A\u8A2D\u5B9A + +editor.source.ddl.description =\u00A0DDL +editor.source.ddl.name =\u00A0DDL +editor.source.declaration.description =\u00A0\u30BD\u30FC\u30B9 +editor.source.declaration.name =\u00A0\u30BD\u30FC\u30B9 +editor.exasol.source.view.label =\u00A0\u30BD\u30FC\u30B9 +editor.exasol.source.view.description =\u00A0\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9 +editor.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSessionEditor.name =\u00A0\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30DE\u30CD\u30FC\u30B8\u30E3 +editor.org.jkiss.dbeaver.ext.exasol.editors.ExasolLockEditor.name =\u00A0\u30ED\u30C3\u30AF\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC + +menu.tables.manage =\u00A0\u7BA1\u7406 + +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolBaseObjectGrant.alterAuth.name =\u00A0\u5909\u66F4 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolBaseObjectGrant.deleteAuth.name =\u00A0\u524A\u9664 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolBaseObjectGrant.insertAuth.name =\u00A0\u30A4\u30F3\u30B5\u30FC\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolBaseObjectGrant.referencesAuth.name =\u00A0\u53C2\u8003\u6587\u732E +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolBaseObjectGrant.schema.name =\u00A0\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolBaseObjectGrant.selectAuth.name =\u00A0\u9078\u629E +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolBaseObjectGrant.updateAuth.name =\u00A0\u66F4\u65B0 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolConnectionGrant.adminOption.name =\u00A0\u7BA1\u7406\u8005\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolConnectionGrant.connection.name =\u00A0\u63A5\u7D9A\u540D +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolConnectionGrant.description.name =\u00A0\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolRole.created.name =\u00A0\u4F5C\u6210\u65E5 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolRole.description.name =\u00A0\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolRole.name.name =\u00A0\u30ED\u30FC\u30EB\u540D +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolRole.priority.name =\u00A0\u512A\u5148 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolRoleGrant.adminOption.name =\u00A0\u7BA1\u7406\u8005\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolRoleGrant.role.name =\u00A0\u30ED\u30FC\u30EB\u540D +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolSchemaGrant.executeAuth.name =\u00A0\u5B9F\u884C\u3059\u308B +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolScriptGrant.executeAuth.name =\u00A0\u5B9F\u884C\u3059\u308B +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolScriptGrant.procedure.name =\u00A0\u30B9\u30AF\u30EA\u30D7\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolSystemGrant.adminOption.name =\u00A0\u7BA1\u7406\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolSystemGrant.systemPrivilege.name =\u00A0\u7279\u6A29\u540D +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolTableGrant.table.name =\u00A0\u8868 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolUser.created.name =\u00A0\u4F5C\u6210\u65E5 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolUser.description.name =\u00A0\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolUser.dn.name =\u00A0LDAP DN +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolUser.name.name =\u00A0\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolUser.password.name =\u00A0\u30D1\u30B9\u30EF\u30FC\u30C9\u30CF\u30C3\u30B7\u30E5 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolUser.priority.name =\u00A0\u512A\u5148 +meta.org.jkiss.dbeaver.ext.exasol.manager.security.ExasolViewGrant.view.name =\u00A0\u30D3\u30E5\u30FC +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolConnection.connectionString.name =\u00A0\u63A5\u7D9A\u6587\u5B57\u5217 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolConnection.created.name =\u00A0\u4F5C\u6210\u65E5 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolConnection.description.name =\u00A0\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolConnection.name.name =\u00A0\u63A5\u7D9A\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolConnection.userName.name =\u00A0\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolConnection.password.name =\u00A0\u30D1\u30B9\u30EF\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolFunction.creationTime.name =\u00A0\u4F5C\u6210\u8005\uFF1A +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolFunction.owner.name =\u00A0\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolFunction.schema.name =\u00A0\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolSchema.createTime.name =\u00A0\u5275\u9020\u6642\u9593 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolSchema.description.name =\u00A0\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolSchema.name.name =\u00A0\u30B9\u30AD\u30FC\u30DE\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolSchema.owner.name =\u00A0\u30B9\u30AD\u30FC\u30DE\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolSchema.sql.name =\u00A0SQL\u306E\u4F5C\u6210 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.createTime.name =\u00A0\u5275\u9020\u6642\u9593 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.creationTime.name =\u00A0\u4F5C\u6210\u8005\uFF1A +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.description.name =\u00A0\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.language.name =\u00A0\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.name.name =\u00A0\u30B9\u30AF\u30EA\u30D7\u30C8\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.owner.name =\u00A0\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.resultType.name =\u00A0\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u7D50\u679C\u306E\u7A2E\u985E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.schema.name =\u00A0\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.sql.name =\u00A0SQL\u30C6\u30AD\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolScript.type.name =\u00A0\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u7A2E\u985E\uFF08\u30B9\u30AB\u30E9\u30FC\u3001\u30BB\u30C3\u30C8\u3001NULL\uFF09 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTable.compressedsize.name =\u00A0\u5727\u7E2E\u3055\u308C\u305F\u30B5\u30A4\u30BA +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTable.createTime.name =\u00A0\u4F5C\u6210\u65E5 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTable.deletePercentage.name =\u00A0\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u524A\u9664 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTable.description.name =\u00A0\u30C6\u30FC\u30D6\u30EB\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTable.hasDistKey.name =\u00A0\u914D\u5E03\u30AD\u30FC\u304C\u3042\u308A\u307E\u3059 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTable.lastCommit.name =\u00A0\u6700\u7D42\u30B3\u30DF\u30C3\u30C8\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTable.rawsize.name =\u00A0\u751F\u306E\u30B5\u30A4\u30BA +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTable.tableCount.name =\u00A0\u884C\u306E\u6570 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableBase.compressedsize.name =\u00A0\u5727\u7E2E\u3055\u308C\u305F\u30B5\u30A4\u30BA +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableBase.createTime.name =\u00A0\u30C6\u30FC\u30D6\u30EB\u4F5C\u6210\u6642\u9593 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableBase.deletePercentage.name =\u00A0\u524A\u9664\u3055\u308C\u305F\u884C\u306E\u5272\u5408 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableBase.description.name =\u00A0\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableBase.name.name =\u00A0\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableBase.owner.name =\u00A0\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableBase.rawsize.name =\u00A0Raw\u975E\u5727\u7E2E\u30B5\u30A4\u30BA +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableBase.schema.name =\u00A0\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.dataType.name =\u00A0\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.description.name =\u00A0\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.distKey.name =\u00A0\u914D\u5E03\u30AD\u30FC\u306E\u4E00\u90E8\u3067\u3059 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.identity.name =\u00A0\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u5024 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.identityValue.name =\u00A0\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u5217\u306E\u73FE\u5728\u306E\u5024 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.inUniqueKey.name =\u00A0\u30AD\u30FC +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.isDistKey.name =\u00A0\u914D\u5E03\u30AD\u30FC\u306E\u4E00\u90E8\u3067\u3059 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.keySeq.name =\u00A0\u4E3B\u30AD\u30FC\u306ESeq +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.owner.name =\u00A0\u8868 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.status.name =\u00A0\u72B6\u614B +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableColumn.stringLength.name =\u00A0\u6587\u5B57\u5217\u306E\u9577\u3055 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableForeignKey.enabled.name =\u00A0\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableForeignKey.referencedConstraint.name =\u00A0\u53C2\u7167\u3055\u308C\u308B\u5236\u7D04 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableForeignKey.referencedTable.name =\u00A0\u53C2\u7167\u30C6\u30FC\u30D6\u30EB +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableUniqueKey.constraintType.name =\u00A0\u5236\u7D04\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableUniqueKey.description.name =\u00A0PK\u306E\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableUniqueKey.enabled.name =\u00A0\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolTableUniqueKey.owner.name =\u00A0PK\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolUser.description.name =\u00A0\u30E6\u30FC\u30B6\u30FC\u306E\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolUser.name.name =\u00A0\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolView.description.name =\u00A0\u30D3\u30E5\u30FC\u306E\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolView.owner.name =\u00A0\u30AA\u30FC\u30CA\u30FC\u3092\u8868\u793A +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolView.text.name =\u00A0SQL\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolVirtualSchema.adapterNotes.name =\u00A0\u30A2\u30C0\u30D7\u30BF\u30CE\u30FC\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolVirtualSchema.adapterScriptName.name =\u00A0\u30A2\u30C0\u30D7\u30BF\u30B9\u30AF\u30EA\u30D7\u30C8\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolVirtualSchema.adapterScriptSchema.name =\u00A0\u30A2\u30C0\u30D7\u30BF\u30B9\u30AF\u30EA\u30D7\u30C8\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolVirtualSchema.lastRefresh.name =\u00A0\u6700\u5F8C\u306B\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolVirtualSchema.refreshBy.name =\u00A0\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u30C9\u30D0\u30A4 +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolVirtualSchemaParameter.name.name =\u00A0\u30D7\u30ED\u30D1\u30C6\u30A3\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.ExasolVirtualSchemaParameter.value.name =\u00A0\u30D7\u30ED\u30D1\u30C6\u30A3\u5024 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.activity.name =\u00A0\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.client.name =\u00A0\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.commandName.name =\u00A0\u30B3\u30DE\u30F3\u30C9\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.driver.name =\u00A0\u30C9\u30E9\u30A4\u30D0 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.duration.name =\u00A0\u671F\u9593 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.encrypted.name =\u00A0\u6697\u53F7\u5316\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.host.name =\u00A0\u30DB\u30B9\u30C8\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.loginTime.name =\u00A0\u30ED\u30B0\u30A4\u30F3\u6642\u9593 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.nice.name =\u00A0\u30CB\u30FC\u30B9\u30D0\u30EA\u30E5\u30FC +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.osName.name =\u00A0OS\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.osUser.name =\u00A0OS\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.priority.name =\u00A0\u512A\u5148 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.queryTimeout.name =\u00A0\u30AF\u30A8\u30EA\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.resources.name =\u00A0Res\uFF05 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.scopeSchema.name =\u00A0\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.sessionID.name =\u00A0\u30BB\u30C3\u30B7\u30E7\u30F3ID +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.sqlText.name =\u00A0SQL\u30C6\u30AD\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.status.name =\u00A0\u72B6\u614B +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.stmtId.name =\u00A0Stmt ID +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.tempDbRam.name =\u00A0Temp Db Ram +meta.org.jkiss.dbeaver.ext.exasol.model.app.ExasolServerSession.userName.name =\u00A0\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.commandClass.name =\u00A0\u30B3\u30DE\u30F3\u30C9\u30AF\u30E9\u30B9 +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.commandName.name =\u00A0\u30B3\u30DE\u30F3\u30C9\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.cpu.name =\u00A0CPU \uFF05 +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.detailInfo.name =\u00A0\u8A73\u7D30\u60C5\u5831 +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.duration.name =\u00A0S\u306E\u6642\u9593 +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.hddRead.name =\u00A0HDD\u8AAD\u307F\u8FBC\u307FMB /\u79D2 +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.hddWrite.name =\u00A0HDD\u66F8\u304D\u8FBC\u307FMB /\u79D2 +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.netTransfer.name =\u00A0\u30CD\u30C3\u30C8\u8EE2\u9001MB /\u79D2 +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.objectName.name =\u00A0\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.objectRows.name =\u00A0\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u884C +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.objectSchema.name =\u00A0\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.outRows.name =\u00A0\u51FA\u529B\u884C +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.partId.name =\u00A0\u30D1\u30FC\u30C8ID +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.partInfo.name =\u00A0\u30D1\u30FC\u30C4\u60C5\u5831 +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.partName.name =\u00A0\u90E8\u54C1\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.stmtId.name =\u00A0\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8ID +meta.org.jkiss.dbeaver.ext.exasol.model.plan.ExasolPlanNode.tempDbRamPeak.name =\u00A0Temp DB Ram Peak MB +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.status.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.hold_sid.name=\u30DB\u30FC\u30EB\u30C9\u30BB\u30C3\u30B7\u30E7\u30F3ID +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.wait_user.name=\u30E6\u30FC\u30B6\u30FC\u3092\u5F85\u3064 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.oname.name=\u30A6\u30A7\u30A4\u30C8OS +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.wait_command.name=\u5F85\u6A5F\u30B3\u30DE\u30F3\u30C9 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.wait_client.name=Wait Client +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.hold_user.name=\u30E6\u30FC\u30B6\u30FC\u3092\u4FDD\u7559 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.hold_client.name=\u30DB\u30FC\u30EB\u30C9\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.wait_sid.name=\u5F85\u6A5F\u30BB\u30C3\u30B7\u30E7\u30F3ID +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.wait_osuser.name=OS\u30E6\u30FC\u30B6\u30FC\u3092\u5F85\u3064 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLock.ltime.name=\u30ED\u30B0\u30A4\u30F3\u6642\u9593 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.resources.name =\u30EA\u30BD\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.priority.name =\u00A0\u512A\u5148 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.host.name =\u00A0\u30DB\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.status.name =\u00A0\u72B6\u614B +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.lockType.name =\u00A0\u30ED\u30C3\u30AF\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.sqlText.name =\u00A0SQL\u30C6\u30AD\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.osUser.name =\u00A0OS\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.scopeSchema.name =\u00A0\u30B9\u30B3\u30FC\u30D7\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.loginTime.name =\u00A0\u30ED\u30B0\u30A4\u30F3\u6642\u9593 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.evaluation.name =\u00A0\u8A55\u4FA1 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.osName.name =\u00A0OS\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.commandName.name =\u00A0\u30B3\u30DE\u30F3\u30C9\u540D +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.activity.name =\u00A0\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.client.name =\u00A0\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.exasol.model.lock.ExasolLockItem.userName.name =\u00A0\u30E6\u30FC\u30B6\u30FC + +meta.org.jkiss.dbeaver.model.struct.rdb.DBSTableConstraintColumn.attribute.name=\u5217\u540D +meta.org.jkiss.dbeaver.model.struct.rdb.DBSTableConstraintColumn.ordinalPosition.name=\u5E8F\u5217 + + +tool.org.jkiss.dbeaver.ext.exasol.database.reorg.name =\u00A0\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u518D\u7DE8\u6210... +tool.org.jkiss.dbeaver.ext.exasol.table.export.name =\u00A0\u8F38\u51FA\u8868 +tool.org.jkiss.dbeaver.ext.exasol.table.export.description =\u00A0\u8868\u3001\u30D3\u30E5\u30FC\u307E\u305F\u306F\u30B9\u30AD\u30FC\u30DE\u3092CSV\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B +tool.org.jkiss.dbeaver.ext.exasol.table.import.name =\u00A0\u8868\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 +tool.org.jkiss.dbeaver.ext.exasol.table.import.description =\u00A0CSV\u304B\u3089\u30C6\u30FC\u30D6\u30EB\u307E\u305F\u306F\u30B9\u30AD\u30FC\u30DE\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B +tool.org.jkiss.dbeaver.ext.exasol.table.reorg.name =\u00A0\u30EC\u30AA\u30B0\u30C6\u30FC\u30D6\u30EB... +tool.org.jkiss.dbeaver.ext.exasol.table.truncate.name =\u00A0\u5207\u308A\u6368\u3066... + +tree.administer.node.description =\u00A0\u30E1\u30F3\u30C6\u30CA\u30F3\u30B9/\u8A2D\u5B9A +tree.administer.node.name =\u00A0\u7BA1\u7406\u8005 +tree.check_constraint_columns.node.name =\u00A0\u5217 +tree.column.node.name =\u00A0\u30AB\u30E9\u30E0 +tree.columns.node.description =\u00A0\u30C6\u30FC\u30D6\u30EB\u306E\u5217 +tree.columns.node.name =\u00A0\u5217 +tree.connection.node.name =\u00A0\u63A5\u7D9A +tree.connections.node.description =\u00A0\u63A5\u7D9A +tree.connections.node.name =\u00A0\u63A5\u7D9A +tree.constraint.node.name =\u00A0\u30E6\u30CB\u30FC\u30AF\u5236\u7D04 +tree.constraint_columns.node.name =\u00A0\u5236\u7D04\u5217 +tree.constraints.node.description =\u00A0\u30C6\u30FC\u30D6\u30EB\u306E\u5236\u7D04 +tree.constraints.node.name =\u00A0\u56FA\u6709\u306E\u5236\u7D04 +tree.container.node.name =\u00A0\u30B3\u30F3\u30C6\u30CA +tree.containers.node.name =\u00A0\u30B3\u30F3\u30C6\u30CA +tree.databaseauth.node.name =\u00A0\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u6A5F\u95A2 +tree.foreign_key.node.name =\u00A0\u5916\u90E8\u30AD\u30FC +tree.foreign_key_columns.node.name =\u00A0\u5916\u90E8\u30AD\u30FC\u5217 +tree.foreign_keys.node.description =\u00A0\u30C6\u30FC\u30D6\u30EB\u306E\u5916\u90E8\u30AD\u30FC +tree.foreign_keys.node.name =\u00A0\u5916\u90E8\u30AD\u30FC +tree.function.node.name =\u00A0\u95A2\u6570 +tree.functions.node.description =\u00A0\u6A5F\u80FD +tree.functions.node.name =\u00A0\u6A5F\u80FD +tree.functionsauths.node.name =\u00A0\u95A2\u6570\u7279\u6A29 +tree.global_metadata.node.name =\u00A0\u30B0\u30ED\u30FC\u30D0\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF +tree.locks.node.description =\u00A0\u30B5\u30FC\u30D0\u30FC\u30ED\u30C3\u30AF\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +tree.locks.node.name =\u00A0\u30ED\u30C3\u30AF\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +tree.procedure.node.name =\u00A0\u624B\u9806 +tree.procedures.node.name =\u00A0\u624B\u7D9A\u304D +tree.proceduresauths.node.name =\u00A0\u624B\u7D9A\u304D\u7279\u6A29 +tree.reference_key.node.name =\u00A0\u53C2\u7167 +tree.references.node.name =\u00A0\u53C2\u8003\u6587\u732E +tree.remoteserver.node.name =\u00A0\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC +tree.remoteservers.node.name =\u00A0\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC +tree.role.node.name =\u00A0\u5F79\u5272 +tree.roleauth.node.name =\u00A0\u627F\u8A8D +tree.roleauths.node.name =\u00A0\u627F\u8A8D +tree.roles.node.description =\u00A0\u30ED\u30FC\u30EB +tree.roles.node.name =\u00A0\u30ED\u30FC\u30EB +tree.schema.node.name =\u00A0\u30B9\u30AD\u30FC\u30DE +tree.schemas.node.description =\u00A0\u30B9\u30AD\u30FC\u30DE +tree.schemas.node.name =\u00A0\u30B9\u30AD\u30FC\u30DE +tree.schemasauths.node.name =\u00A0\u30B9\u30AD\u30FC\u30DE\u7279\u6A29 +tree.script.node.name =\u00A0\u30B9\u30AF\u30EA\u30D7\u30C8 +tree.scripts.node.description =\u00A0\u30B9\u30AF\u30EA\u30D7\u30C8 +tree.scripts.node.name =\u00A0\u30B9\u30AF\u30EA\u30D7\u30C8 +tree.security.node.name =\u00A0\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3 +tree.sessions.node.description =\u00A0\u30B5\u30FC\u30D0\u30BB\u30C3\u30B7\u30E7\u30F3\u30DE\u30CD\u30FC\u30B8\u30E3 +tree.sessions.node.name =\u00A0\u30BB\u30C3\u30B7\u30E7\u30F3 +tree.sysgrant.node.name =\u00A0\u30B7\u30B9\u30C6\u30E0\u7279\u6A29 +tree.system_info.node.name =\u00A0\u30B7\u30B9\u30C6\u30E0\u30A4\u30F3\u30D5\u30A9\u30E1\u30FC\u30B7\u30E7\u30F3 +tree.table.node.name =\u00A0\u8868 +tree.tables.node.description =\u00A0\u30C6\u30FC\u30D6\u30EB +tree.tables.node.name =\u00A0\u30C6\u30FC\u30D6\u30EB +tree.user.node.name =\u00A0\u30E6\u30FC\u30B6\u30FC +tree.userauth.node.name =\u00A0\u627F\u8A8D +tree.userauths.node.name =\u00A0\u627F\u8A8D +tree.users.node.description =\u00A0\u30E6\u30FC\u30B6\u30FC +tree.users.node.name =\u00A0\u30E6\u30FC\u30B6\u30FC +tree.view.node.name =\u00A0\u30D3\u30E5\u30FC +tree.viewdep.node.name =\u00A0\u4F9D\u5B58 +tree.viewdeps.node.name =\u00A0\u4F9D\u5B58\u95A2\u4FC2 +tree.views.node.description =\u00A0\u30D3\u30E5\u30FC +tree.views.node.name =\u00A0\u30D3\u30E5\u30FC +tree.viewsauths.node.name =\u00A0\u30D3\u30E5\u30FC\u7279\u6A29 +tree.virtualschema.node.name =\u00A0\u4EEE\u60F3\u30B9\u30AD\u30FC\u30DE +tree.virtualschemaparameters.node.name =\u00A0\u4EEE\u60F3\u30B9\u30AD\u30FC\u30DE\u306E\u30D1\u30E9\u30E1\u30FC\u30BF +tree.virtualschemas.node.description =\u00A0\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u4EEE\u60F3\u30B9\u30AD\u30FC\u30DE +tree.virtualschemas.node.name =\u00A0\u4EEE\u60F3\u30B9\u30AD\u30FC\u30DE diff --git a/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/pom.xml index ae8850e4728ab17c70a31ca3eff6584ab81189d5..fe0f053add5e67303f4c503c9e4033e14ef92648 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.exasol.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/src/org/jkiss/dbeaver/ext/exasol/ExasolResources_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/src/org/jkiss/dbeaver/ext/exasol/ExasolResources_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..7aa568f5ab157796362fdd10757745151d4bb0d3 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.exasol.nls/src/org/jkiss/dbeaver/ext/exasol/ExasolResources_ja.properties @@ -0,0 +1,41 @@ + +dialog_connection_password=\u30D1\u30B9\u30EF\u30FC\u30C9 +dialog_connection_port=\u30DD\u30FC\u30C8 +dialog_connection_user_name=\u30E6\u30FC\u30B6\u30FC\u540D + + +dialog_schema_drop_title=\u30B9\u30AD\u30FC\u30DE\u8B66\u544A\u306E\u30C9\u30ED\u30C3\u30D7 +dialog_schema_drop_message=\u30B9\u30AD\u30FC\u30DE\u5185\u306E\u65E2\u5B58\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3059\u3079\u3066\u524A\u9664\u3055\u308C\u307E\u3059\u3002\u3053\u308C\u306F\u3001\u5143\u306B\u623B\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +dialog_connection_alter_title=\u63A5\u7D9A\u306E\u5909\u66F4 +dialog_connection_alter_message=\u8A3C\u660E\u66F8\u3092\u4FDD\u5B58\u3057\u305F\u63A5\u7D9A\u304C\u5909\u66F4\u3055\u308C\u305F\u5834\u5408\u3001\u5909\u66F4\u6642\u306B\u5B8C\u5168\u306B\u306F\u63D0\u4F9B\u3055\u308C\u306A\u3044\u5834\u5408\u3001\u8CC7\u683C\u60C5\u5831\u306F\u5931\u308F\u308C\u307E\u3059\u3002 +dialog_general_continue=\u6301\u7D9A\u3059\u308B + + +dialog_table_tools_options=\u30AA\u30D7\u30B7\u30E7\u30F3 +dialog_table_tools_result=\u7D50\u679C +dialog_table_tools_progress=\u9032\u6357 +dialog_table_tools_success_title=\u6210\u529F +dialog_table_open_output_directory=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +dialog_table_tools_export_title=CSV\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_table_tools_export_compress=\u5727\u7E2E\u30D5\u30A1\u30A4\u30EB\u3067\u3059\u304B\uFF1F +dialog_table_tools_column_heading=\u5217\u898B\u51FA\u3057\uFF1F +dialog_table_tools_row_sep=\u884C\u533A\u5207\u308A\u8A18\u53F7 +dialog_table_tools_column_sep=\u30AB\u30E9\u30E0\u30BB\u30D1\u30EC\u30FC\u30BF +dialog_table_tools_string_sep_mode=\u6587\u5B57\u5217\u30BB\u30D1\u30EC\u30FC\u30BF\u3092\u4F7F\u7528\u3059\u308B +dialog_table_tools_string_sep=\u30B9\u30C8\u30EA\u30F3\u30B0\u30BB\u30D1\u30EC\u30FC\u30BF +dialog_table_tools_encoding=\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +dialog_table_tools_file_template=\u30D5\u30A1\u30A4\u30EB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 + +dialog_table_tools_export_title=CSV\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8 +dialog_table_tools_import_title=CSV\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u306E\u30A4\u30F3\u30DD\u30FC\u30C8 + +dialog_struct_edit_fk_label_fk_name=\u5916\u90E8\u30AD\u30FC\u540D + + +editors_exasol_session_editor_title_kill_session =\u00A0\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u7D42\u4E86 +editors_exasol_session_editor_action_kill =\u00A0\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u7D42\u4E86 +editors_exasol_session_editor_confirm_action =\u00A0{0} "{1}"\u672c\u5f53\u306b\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +editors_exasol_session_editor_title_kill_session_statement =\u00A0Terminate\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8 + +edit_exasol_constraint_manager_dialog_title=\u4E3B\u30AD\u30FC\u306E\u4F5C\u6210 +read_table_details=\u30C6\u30FC\u30D6\u30EB\u306E\u8A73\u7D30\u3092\u8AAD\u3080 diff --git a/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/META-INF/MANIFEST.MF index fb5d06f5e1f0083e19dd316b050eab5fe3b8dee3..986c0840d4328af21d798cc23dd700f7a12621cf 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.firebird.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.firebird Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..dda0247fd8697f53a1aea1bb8d9516d5f5fa77fc --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,19 @@ + +Bundle-Vendor = JKISS +Bundle-Name = DBeaver FireBird Support + +datasource.firebird.description=FireBird Jaybird JDBC\u30C9\u30E9\u30A4\u30D0 + +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdTrigger.triggerType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdTrigger.sequence.name=\u30B7\u30FC\u30B1\u30F3\u30B9 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.fieldType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.defaultSource.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.computedSource.name=\u8A08\u7B97\u8005 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.validationSource.name=\u30C1\u30A7\u30C3\u30AF +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.charsetName.name=Charset +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.subType.name=\u30B5\u30D6\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.fieldLength.name=\u9577\u3055 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.charLength.name=\u6587\u5B57\u306E\u9577\u3055 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdDataType.notNull.name=NULL\u3067\u306A\u3044 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdTableColumn.domainTypeName.name=\u30C9\u30E1\u30A4\u30F3\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.firebird.model.FireBirdTableColumn.charset.name=Charset \ No newline at end of file diff --git a/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/pom.xml index 738dd6f028a3c385f6927b5192016c01e94ace03..551ea4f4ad84006a1786b5cc3c281fa8eb7896d4 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.firebird.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.firebird.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/META-INF/MANIFEST.MF index 446313876b3d6de5c4a996e7414427eb33a437e7..69cb26fb7b84977b9ad6fff55d0bf2f68a1b118c 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Generic datasources NLS Bundle-SymbolicName: org.jkiss.dbeaver.ext.generic.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.generic Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..2945d24ae8fcd8e08bfb1526e4e27f33885475fd --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,87 @@ + +dialog.connection.header=\u4E00\u822C\u7684\u306AJDBC\u63A5\u7D9A\u8A2D\u5B9A + +tree.tables.node.name=\u30C6\u30FC\u30D6\u30EB +tree.table.node.name=\u8868 +tree.tviews.node.name=\u30D3\u30E5\u30FC +tree.tview.node.name=\u30D3\u30E5\u30FC +tree.columns.node.name=\u5217 +tree.column.node.name=\u30AB\u30E9\u30E0 +tree.uni_keys.node.name=\u30E6\u30CB\u30FC\u30AF\u306A\u30AD\u30FC +tree.uni_key.node.name=\u30E6\u30CB\u30FC\u30AF\u30AD\u30FC +tree.uni_key.columns.node.name=\u4E00\u610F\u306E\u30AD\u30FC\u5217 +tree.foreign_keys.node.name=\u5916\u90E8\u30AD\u30FC +tree.foreign_key.node.name=\u5916\u90E8\u30AD\u30FC +tree.foreign_key_columns.node.name=\u5916\u90E8\u30AD\u30FC\u5217 +tree.indexes.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +tree.index.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +tree.index_columns.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5217 +tree.references.node.name=\u53C2\u8003\u6587\u732E +tree.reference.node.name=\u53C2\u7167 +tree.reference_columns.node.name=\u53C2\u7167\u5217 +tree.sub_table.node.name=\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB +tree.procedures.node.name=\u624B\u7D9A\u304D +tree.procedure.node.name=\u624B\u9806 +tree.procedure_columns.node.name=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u5217 +tree.packages.node.name=\u30D1\u30C3\u30B1\u30FC\u30B8 +tree.package.node.name=\u30D1\u30C3\u30B1\u30FC\u30B8 +tree.sequences.node.name=\u30B7\u30FC\u30B1\u30F3\u30B9 +tree.sequence.node.name=\u30B7\u30FC\u30B1\u30F3\u30B9 +tree.triggers.node.name=\u30C8\u30EA\u30AC\u30FC +tree.trigger.node.name=\u5F15\u304D\u91D1 +tree.tableTriggers.node.name=\u30C6\u30FC\u30D6\u30EB\u30C8\u30EA\u30AC +tree.dataTypes.node.name=\u30C7\u30FC\u30BF\u578B +tree.dataType.node.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 + +editor.source.name=\u30BD\u30FC\u30B9 + +meta.org.jkiss.dbeaver.ext.generic.model.GenericTable.tableType.name=\u30C6\u30FC\u30D6\u30EB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTable.catalog.name=\u30AB\u30BF\u30ED\u30B0 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTable.objectDefinitionText.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.generic.model.GenericCatalog.name.name=\u30AB\u30BF\u30ED\u30B0\u540D +meta.org.jkiss.dbeaver.ext.generic.model.GenericPackage.name.name=\u540D +meta.org.jkiss.dbeaver.ext.generic.model.GenericPackage.catalog.name=\u30AB\u30BF\u30ED\u30B0 +meta.org.jkiss.dbeaver.ext.generic.model.GenericPackage.schema.name=\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.generic.model.GenericProcedure.plainName.name=\u30D7\u30EC\u30FC\u30F3\u30FB\u30CD\u30FC\u30E0 +meta.org.jkiss.dbeaver.ext.generic.model.GenericProcedure.catalog.name=\u30AB\u30BF\u30ED\u30B0 +meta.org.jkiss.dbeaver.ext.generic.model.GenericProcedure.schema.name=\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.generic.model.GenericProcedure.package.name=\u30D1\u30C3\u30B1\u30FC\u30B8 +meta.org.jkiss.dbeaver.ext.generic.model.GenericProcedure.procedureType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.generic.model.GenericProcedure.functionResultType.name=\u7D50\u679C\u306E\u7A2E\u985E +meta.org.jkiss.dbeaver.ext.generic.model.GenericProcedureParameter.parameterKind.name=\u5217\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.generic.model.GenericSchema.catalog.name=\u30AB\u30BF\u30ED\u30B0 +meta.org.jkiss.dbeaver.ext.generic.model.GenericSchema.name.name=\u30B9\u30AD\u30FC\u30DE\u540D +meta.org.jkiss.dbeaver.ext.generic.model.GenericSchema.description.name=\u30B9\u30AD\u30FC\u30DE\u306E\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.generic.model.GenericTable.schema.name=\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.generic.model.GenericTable.description.name=\u30C6\u30FC\u30D6\u30EB\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.generic.model.GenericTable.rowCount.name=\u884C\u6570 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableColumn.autoGenerated.name=\u81EA\u52D5\u751F\u6210 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableColumn.autoIncrement.name=\u81EA\u52D5\u5897\u52A0 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableColumn.radix.name=\u57FA\u6570 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableColumn.inUniqueKey.name=\u30AD\u30FC +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableColumn.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableConstraintColumn.ordinalPosition.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableConstraintColumn.attribute.name=\u30AB\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableForeignKey.deferability.name=\u9045\u5EF6\u6027 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableForeignKeyColumnTable.referencedColumn.name=\u53C2\u7167\u6B04 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableIndex.description.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableIndex.unique.name=\u30E6\u30CB\u30FC\u30AF +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableIndex.qualifier.name=\u4FEE\u98FE\u5B50 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableIndex.cardinality.name=\u30AB\u30FC\u30C7\u30A3\u30CA\u30EA\u30C6\u30A3 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableIndexColumn.ordinalPosition.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableIndexColumn.ascending.name=\u4E0A\u6607 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTableIndexColumn.tableColumn.name=\u30AB\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.generic.model.GenericSequence.name.name=\u540D +meta.org.jkiss.dbeaver.ext.generic.model.GenericSequence.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.generic.model.GenericSequence.lastValue.name=\u5024 +meta.org.jkiss.dbeaver.ext.generic.model.GenericSequence.minValue.name=\u6700\u5C0F\u5024 +meta.org.jkiss.dbeaver.ext.generic.model.GenericSequence.maxValue.name=\u6700\u5927\u5024 +meta.org.jkiss.dbeaver.ext.generic.model.GenericSequence.incrementBy.name=\u30A4\u30F3\u30AF\u30EA\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.generic.model.GenericTrigger.name.name=\u540D +meta.org.jkiss.dbeaver.ext.generic.model.GenericTrigger.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.generic.model.GenericTrigger.table.name=\u8868 +meta.org.jkiss.dbeaver.ext.generic.model.GenericDataType.name.name=\u540D +meta.org.jkiss.dbeaver.ext.generic.model.GenericDataType.precision.name=\u7CBE\u5EA6 +meta.org.jkiss.dbeaver.ext.generic.model.GenericDataType.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.generic.model.GenericDataType.minScale.name=\u6700\u5C0F\u30B9\u30B1\u30FC\u30EB +meta.org.jkiss.dbeaver.ext.generic.model.GenericDataType.maxScale.name=\u6700\u5927\u30B9\u30B1\u30FC\u30EB diff --git a/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/pom.xml index be34d8f46e5b34a023ba54a7926dc4c1192b4c3a..5922484de734ec70f3ad20db239dd5add7196766 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.generic.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/src/org/jkiss/dbeaver/ext/generic/GenericResources_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/src/org/jkiss/dbeaver/ext/generic/GenericResources_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..4dae9fa121e9a6b370f598b1d2fe0f6ebe05c948 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.generic.nls/src/org/jkiss/dbeaver/ext/generic/GenericResources_ja.properties @@ -0,0 +1,18 @@ + +dialog_connection_advanced_tab=\u9AD8\u5EA6 +dialog_connection_advanced_tab_tooltip=\u9AD8\u5EA6\u306A/\u30AB\u30B9\u30BF\u30E0\u30C9\u30E9\u30A4\u30D0\u306E\u30D7\u30ED\u30D1\u30C6\u30A3 +dialog_connection_browse_button=\u30D6\u30E9\u30A6\u30BA... +dialog_connection_database_schema_label=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9/\u30B9\u30AD\u30FC\u30DE\uFF1A +dialog_connection_db_file_chooser_text=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u3059\u308B +dialog_connection_db_folder_chooser_message=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3080\u30D5\u30A9\u30EB\u30C0\u3092\u9078\u629E\u3059\u308B +dialog_connection_db_folder_chooser_text=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30D5\u30A9\u30EB\u30C0\u3092\u9078\u629E\u3059\u308B +dialog_connection_general_tab=\u4E00\u822C +dialog_connection_general_tab_tooltip=\u4E00\u822C\u7684\u306A\u63A5\u7D9A\u30D7\u30ED\u30D1\u30C6\u30A3 +dialog_connection_host_label=\u30DB\u30B9\u30C8\uFF1A +dialog_connection_jdbc_url_=JDBC URL\uFF1A +dialog_connection_password_label=\u30D1\u30B9\u30EF\u30FC\u30C9\uFF1A +dialog_connection_path_label=\u30D1\u30B9\uFF1A +dialog_connection_port_label=\u30DD\u30FC\u30C8\uFF1A +dialog_connection_server_label=\u30B5\u30FC\u30D0\uFF1A +dialog_connection_test_connection_button=\u63A5\u7D9A\u306E\u30C6\u30B9\u30C8... +dialog_connection_user_name_label=\u30E6\u30FC\u30B6\u30FC\u540D\uFF1A diff --git a/nls/bundles/org.jkiss.dbeaver.ext.h2.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.h2.nls/META-INF/MANIFEST.MF index 192cf44d9937adbaffebea51c5fb0434b56ef0e0..e2d006dcc64bc1a269b15de136cc70f61999f073 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.h2.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.h2.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.h2.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.h2 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.h2.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.h2.nls/pom.xml index e47cf6e0b5dbcceab34d898f6ea000003a2023f5..64e40d462e36d77023dac06f303269169b10dfb7 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.h2.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.h2.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.h2.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.hsqldb.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.hsqldb.nls/META-INF/MANIFEST.MF index 381b3226919bb0c724802e89eed590bd1cc855ea..8db04016e88787a0a04ad1445a1d30c965caac96 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.hsqldb.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.hsqldb.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.hsqldb.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.hsqldb Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.hsqldb.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.hsqldb.nls/pom.xml index 8c1fcb163788e4035b03760b99dc641203d5aa61..3fd4f7e667fc52c9d428c7d1aabac1ce60cca6db 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.hsqldb.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.hsqldb.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.hsqldb.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.import_config.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.import_config.nls/META-INF/MANIFEST.MF index 479f4181eafc21900f7e54278136372f193154aa..9313f2e203a19ad4d9392afbad80651d07a02f24 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.import_config.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.import_config.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Import config extension NLS Bundle-SymbolicName: org.jkiss.dbeaver.ext.import_config.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.import_config Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.import_config.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.import_config.nls/pom.xml index 4b212974e02407b1527ef84addf057bdf5048171..11065d89234931faa89386b94196bdf5f9105ae9 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.import_config.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.import_config.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.import_config.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.informix.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.informix.nls/META-INF/MANIFEST.MF index e2debc6aa70d542d78d96b06b555bf589fe90451..6b5f00573d70873bb77b2bea2c9d289e0e114758 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.informix.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.informix.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Informix extension NLS Bundle-SymbolicName: org.jkiss.dbeaver.ext.informix.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.informix Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.informix.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.informix.nls/pom.xml index d07f2b24e06a8364cf2a06aab08de8166ed446f4..66059d877eece23675f2091913d8ad4fe62f324a 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.informix.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.informix.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.informix.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/META-INF/MANIFEST.MF index 3e0742a44af316a5df98707f4dabaa3d7df9eba6..a99f41ff8f663e6a3021d16ecb03303a033c991f 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: SQL Server extension NLS Bundle-SymbolicName: org.jkiss.dbeaver.ext.mssql.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.mssql Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..48eebb57b971df80fa79e2fa506dfd838e3eabf4 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,12 @@ +#Properties file for org.jkiss.dbeaver.ext.mssql +Bundle-Vendor = JKISS +Bundle-Name = DBeaver SQL Server Support + +sqlserver.dialog.connection.header=SQL Server \u306E\u63A5\u7D9A\u8A2D\u5B9A +sybase.dialog.connection.header=Sybase \u306E\u63A5\u7D9A\u8A2D\u5B9A + +datasource.mssql.description=SQL Server \u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 +datasource.sybase.description=Sybase/SAP ASE \u30C7\u30FC\u30BF\u30BD\u30FC\u30B9 + +meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerTable.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerTable.description.description=\u30C6\u30FC\u30D6\u30EB\u306E\u8AAC\u660E diff --git a/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/pom.xml index 13e52887339de0198fdb8a2377234e8fdee45f1e..759b31f89109606eb513f409311cc3a531415a06 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.mssql.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.mssql.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/META-INF/MANIFEST.MF index 8a5fbe87713bc506315b1000a1e5be247999a2c5..b0464303b5cba0d59a18e13deb9697f7d36a44d4 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: MySQL extension NLS Bundle-SymbolicName: org.jkiss.dbeaver.ext.mysql.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.mysql Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..01cfce6f9b5d31ec209518cb08319ebca82ac512 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,230 @@ + +dialog.connection.header=MySQL\u63A5\u7D9A\u8A2D\u5B9A + +tree.databases.node.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +tree.database.node.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +tree.tables.node.name=\u30C6\u30FC\u30D6\u30EB +tree.table.node.name=\u8868 +tree.columns.node.name=\u5217 +tree.column.node.name=\u30AB\u30E9\u30E0 +tree.constraints.node.name=\u5236\u7D04 +tree.constraint.node.name=\u5236\u7D04 +tree.constraint_columns.node.name=\u5236\u7D04\u5217 +tree.foreign_keys.node.name=\u5916\u90E8\u30AD\u30FC +tree.foreign_key.node.name=\u5916\u90E8\u30AD\u30FC +tree.foreign_key_columns.node.name=\u5916\u90E8\u30AD\u30FC\u5217 +tree.references.node.name=\u53C2\u8003\u6587\u732E +tree.reference_key.node.name=\u53C2\u7167\u30AD\u30FC +tree.reference_key_columns.node.name=\u53C2\u7167\u30AD\u30FC\u5217 +tree.triggers.node.name=\u30C8\u30EA\u30AC\u30FC +tree.trigger.node.name=\u5F15\u304D\u91D1 +tree.indexes.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +tree.index.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +tree.index_columns.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5217 +tree.partitions.node.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.partition.node.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.subpartitions.node.name=\u30B5\u30D6\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.subpartition.node.name=\u30B5\u30D6\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.views.node.name=\u30D3\u30E5\u30FC +tree.view.node.name=\u30D3\u30E5\u30FC +tree.procedures.node.name=\u624B\u7D9A\u304D +tree.procedure.node.name=\u624B\u9806 +tree.users.node.name=\u30E6\u30FC\u30B6\u30FC +tree.user.node.name=\u30E6\u30FC\u30B6\u30FC +tree.administer.node.name=\u7BA1\u7406\u8005 +tree.sessions.node.name=\u30BB\u30C3\u30B7\u30E7\u30F3 +tree.privilege.node.name=\u7279\u6A29 +tree.user_privileges.node.name=\u30E6\u30FC\u30B6\u30FC\u7279\u6A29 +tree.system_info.node.name=\u30B7\u30B9\u30C6\u30E0\u60C5\u5831 +tree.session_status.node.name=\u30BB\u30C3\u30B7\u30E7\u30F3\u30B9\u30C6\u30FC\u30BF\u30B9 +tree.variable.node.name=\u5909\u6570 +tree.global_status.node.name=\u30B0\u30ED\u30FC\u30D0\u30EB\u30B9\u30C6\u30FC\u30BF\u30B9 +tree.session_variables.node.name=\u30BB\u30C3\u30B7\u30E7\u30F3\u5909\u6570 +tree.global_variables.node.name=\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570 +tree.engines.node.name=\u30A8\u30F3\u30B8\u30F3 +tree.engine.node.name=\u30A8\u30F3\u30B8\u30F3 +tree.charsets.node.name=\u6587\u5B57\u30BB\u30C3\u30C8 +tree.charset.node.name=Charset +tree.collation.node.name=\u7167\u5408 +tree.events.node.name=\u30A4\u30D9\u30F3\u30C8 +tree.event.node.name=\u30A4\u30D9\u30F3\u30C8 +tree.packages.node.name=\u30D1\u30C3\u30B1\u30FC\u30B8 +tree.packages.node.description=MariaDB\u30D1\u30C3\u30B1\u30FC\u30B8\uFF08Oracle\u30E2\u30FC\u30C9\uFF09 +tree.package.node.name=\u30D1\u30C3\u30B1\u30FC\u30B8 + +manager.catalog.name=\u30AB\u30BF\u30ED\u30B0\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC + +editor.general.name=\u4E00\u822C +editor.schema_privileges.name=\u30B9\u30AD\u30FC\u30DE\u7279\u6A29 +editor.session_manager.name=\u30BB\u30C3\u30B7\u30E7\u30F3\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +editor.source.name=\u30BD\u30FC\u30B9 +editor.package.body.name=\u30DC\u30C7\u30A3\u30BD\u30FC\u30B9 +editor.package.body.description=\u30D1\u30C3\u30B1\u30FC\u30B8\u672C\u4F53\u30BD\u30FC\u30B9 + +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.name.name=\u30B9\u30AD\u30FC\u30DE\u540D +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.defaultCharset.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u6587\u5B57\u30BB\u30C3\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.defaultCollation.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u7167\u5408\u9806\u5E8F +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.sqlPath.name=SQL\u30D1\u30B9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.databaseSize.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30B5\u30A4\u30BA +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.databaseSize.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30B5\u30A4\u30BA\uFF08\u30C7\u30FC\u30BF\u9577+\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u9577\uFF08\u30D0\u30A4\u30C8\uFF09\uFF09 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCharset.name.name=Charset +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCharset.defaultCollation.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u7167\u5408\u9806\u5E8F +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCharset.maxLength.name=\u6700\u5927\u9577 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCharset.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCollation.charset.name=Charset +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCollation.name.name=\u7167\u5408 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCollation.id.name=\u30A4\u30C9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCollation.default.name=\u30C7\u30D5\u30A9\u30EB\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCollation.compiled.name=\u30B3\u30F3\u30D1\u30A4\u30EB\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCollation.sortLength.name=\u30BD\u30FC\u30C8\u306E\u9577\u3055 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEngine.name.name=\u30A8\u30F3\u30B8\u30F3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEngine.support.name=\u30B5\u30DD\u30FC\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEngine.supportsTransactions.name=\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEngine.supportsXA.name=XA\u3092\u30B5\u30DD\u30FC\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEngine.supportsSavepoints.name=\u30BB\u30FC\u30D6\u30DD\u30A4\u30F3\u30C8\u3092\u30B5\u30DD\u30FC\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLParameter.name.name=\u540D +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLParameter.value.name=\u5024 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.name.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u540D +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.position.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.method.name=\u65B9\u6CD5 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.expression.name=\u5F0F +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.tableRows.name=\u30C6\u30FC\u30D6\u30EB\u306E\u884C +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.avgRowLength.name=\u5E73\u5747\u884C +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.dataLength.name=\u30C7\u30FC\u30BFLen +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.maxDataLength.name=\u6700\u5927\u30C7\u30FC\u30BFLen +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.indexLength.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30EC\u30F3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.dataFree.name=\u30C7\u30FC\u30BF\u30D5\u30EA\u30FC +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.createTime.name=\u6642\u9593\u3092\u4F5C\u308B +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.updateTime.name=\u66F4\u65B0\u6642\u9593 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.checkTime.name=\u30C1\u30A7\u30C3\u30AF\u6642\u9593 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.checksum.name=\u30C1\u30A7\u30C3\u30AF\u30B5\u30E0 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.comment.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPartition.nodegroup.name=\u30CE\u30FC\u30C9\u30B0\u30EB\u30FC\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPrivilege.name.name=\u7279\u6A29 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPrivilege.context.name=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.procedureType.name=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.resultType.name=\u7D50\u679C\u306E\u7A2E\u985E +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.bodyType.name=\u30DC\u30C7\u30A3\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.body.name=\u4F53 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.clientBody.name=ClientBody +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.deterministic.name=\u6C7A\u5B9A\u8AD6\u7684 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.deterministic.description=\u30EB\u30FC\u30C1\u30F3\u306F\u3001\u540C\u3058\u5165\u529B\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u5BFE\u3057\u3066\u5E38\u306B\u540C\u3058\u7D50\u679C\u3092\u751F\u6210\u3057\u3001\u305D\u308C\u4EE5\u5916\u306E\u5834\u5408\u306B\u306F\u300C\u6C7A\u5B9A\u7684\u3067\u306A\u3044\u300D\u5834\u5408\u306F\u3001\u300C\u6C7A\u5B9A\u8AD6\u7684\u300D\u3068\u898B\u306A\u3055\u308C\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.declaration.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedure.objectDefinitionText.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLProcedureParameter.parameterKind.name=\u5217\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.engine.name=\u30A8\u30F3\u30B8\u30F3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.autoIncrement.name=\u81EA\u52D5\u5897\u52A0 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.charset.name=Charset +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.collation.name=\u7167\u5408 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.rowCount.name=\u884C\u6570 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.avgRowLength.name=\u5E73\u5747\u884C\u9577 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.dataLength.name=\u30C7\u30FC\u30BF\u9577 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.maxDataLength.name=\u6700\u5927\u30C7\u30FC\u30BF\u9577 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.dataFree.name=\u30C7\u30FC\u30BF\u30D5\u30EA\u30FC +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.indexLength.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u9577\u3055 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.rowFormat.name=\u884C\u5F62\u5F0F +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.createTime.name=\u6642\u9593\u3092\u4F5C\u308B +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.updateTime.name=\u66F4\u65B0\u6642\u9593 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTable$AdditionalInfo.checkTime.name=\u6642\u9593\u3092\u78BA\u8A8D\u3059\u308B +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.columnPosition.name=\uFF03 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.fullTypeName.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.maxLength.name=\u9577\u3055 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.required.name=\u30CC\u30EB\u3067\u306A\u3044 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.autoGenerated.name=\u81EA\u52D5\u5897\u52A0 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.keyType.name=\u30AD\u30FC +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.charset.name=Charset +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.collation.name=\u7167\u5408 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.comment.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.extraInfo.name=\u4F59\u5206\u306A +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableConstraintColumn.ordinalPosition.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableConstraintColumn.attribute.name=\u30AB\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableForeignKeyColumn.referencedColumn.name=\u53C2\u7167\u6B04 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndex.unique.name=\u30E6\u30CB\u30FC\u30AF +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndex.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndex.cardinality.name=\u30AB\u30FC\u30C7\u30A3\u30CA\u30EA\u30C6\u30A3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndex.additionalInfo.name=\u8FFD\u52A0 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndexColumn.ordinalPosition.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndexColumn.ascending.name=\u4E0A\u6607 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndexColumn.nullable.name=Nullable +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndexColumn.subPart.name=\u4F59\u5206\u306A +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndexColumn.tableColumn.name=\u30AB\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTrigger.table.name=\u8868 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTrigger.charsetClient.name=\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306E\u6587\u5B57\u30BB\u30C3\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTrigger.sqlMode.name=SQL\u30E2\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTrigger.objectDefinitionText.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLUser.name.name=\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLUser.host.name=\u30DB\u30B9\u30C8\u30DE\u30B9\u30AF +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLView$AdditionalInfo.definition.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLView$AdditionalInfo.checkOption.name=\u30C1\u30A7\u30C3\u30AF\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLView$AdditionalInfo.updatable.name=\u66F4\u65B0\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLView$AdditionalInfo.definer.name=\u5B9A\u7FA9\u8005 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLView.name.name=\u30D3\u30E5\u30FC\u540D +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLView.objectDefinitionText.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.id.name=ID +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.id.description=SELECT\u8B58\u5225\u5B50\u3002\u3053\u308C\u306F\u3001\u30AF\u30A8\u30EA\u5185\u306ESELECT\u306E\u9023\u7D9A\u756A\u53F7\u3067\u3059 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.selectType.name=\u30BF\u30A4\u30D7\u306E\u9078\u629E +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.selectType.description=SELECT\u306E\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.table.name=\u8868 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.table.description=\u51FA\u529B\u884C\u304C\u53C2\u7167\u3059\u308B\u30C6\u30FC\u30D6\u30EB +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.type.description=\u7D50\u5408\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.possibleKeys.name=\u53EF\u80FD\u306A\u30AD\u30FC +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.possibleKeys.description=MySQL\u304C\u3053\u306E\u30C6\u30FC\u30D6\u30EB\u306E\u884C\u306E\u691C\u7D22\u306B\u4F7F\u7528\u3067\u304D\u308B\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u793A\u3057\u307E\u3059 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.key.name=\u30AD\u30FC +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.key.description=MySQL\u304C\u5B9F\u969B\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u3092\u6C7A\u3081\u305F\u30AD\u30FC\uFF08\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.keyLength.name=\u30AD\u30FC\u306E\u9577\u3055 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.keyLength.description=MySQL\u304C\u4F7F\u7528\u3059\u308B\u3053\u3068\u3092\u6C7A\u3081\u305F\u9375\u306E\u9577\u3055 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.ref.name=Ref +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.ref.description=\u30AD\u30FC\u5217\u3067\u6307\u5B9A\u3055\u308C\u305F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3068\u6BD4\u8F03\u3055\u308C\u308B\u5217\u307E\u305F\u306F\u5B9A\u6570\u3092\u8868\u793A\u3057\u3066\u3001\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u884C\u3092\u9078\u629E\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.rowCount.name=\u884C +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.rowCount.description=\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3059\u308B\u305F\u3081\u306BMySQL\u304C\u691C\u8A0E\u3057\u306A\u3051\u308C\u3070\u306A\u3089\u306A\u3044\u884C\u306E\u6570 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.filtered.name=\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.filtered.description=\u30C6\u30FC\u30D6\u30EB\u6761\u4EF6\u306B\u3088\u3063\u3066\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3055\u308C\u308B\u30C6\u30FC\u30D6\u30EB\u884C\u306E\u63A8\u5B9A\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.extra.name=\u4F59\u5206\u306A +meta.org.jkiss.dbeaver.ext.mysql.model.plan.MySQLPlanNode.extra.description=MySQL\u304C\u30AF\u30A8\u30EA\u3092\u89E3\u6C7A\u3059\u308B\u65B9\u6CD5\u306B\u95A2\u3059\u308B\u8FFD\u52A0\u60C5\u5831 +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.pid.name=PID +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.pid.description=\u30D7\u30ED\u30BB\u30B9ID +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.user.name=\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.user.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.host.name=\u30DB\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.host.description=\u30EA\u30E2\u30FC\u30C8\u30DB\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.db.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.db.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.command.name=\u30B3\u30DE\u30F3\u30C9 +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.command.description=\u73FE\u5728\u306E\u30B3\u30DE\u30F3\u30C9 +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.time.name=\u6642\u9593 +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.time.description=\u30B3\u30DE\u30F3\u30C9\u306E\u958B\u59CB\u6642\u523B +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.state.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.state.description=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.activeQuery.name=\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30AF\u30A8\u30EA +meta.org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession.activeQuery.description=\u73FE\u5728\u5B9F\u884C\u4E2D\u306ESQL\u30AF\u30A8\u30EA +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPackage.name.name=\u540D +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPackage.description.name=\u540D +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPackage.objectDefinitionText.name=\u30D1\u30C3\u30B1\u30FC\u30B8\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLPackage.extendedDefinitionText.name=\u30D1\u30C3\u30B1\u30FC\u30B8\u672C\u4F53 + +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.name.name=\u30A4\u30D9\u30F3\u30C8\u540D +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.definer.name=\u5B9A\u7FA9\u8005 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.definer.description='user_name' @ 'host_name'\u5F62\u5F0F\u3067\u30A4\u30D9\u30F3\u30C8\u3092\u4F5C\u6210\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3002 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.timeZone.name=\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.eventBody.name=\u4F53 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.eventDefinition.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.eventType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.executeAt.name=\u5B9F\u884C\u6642 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.intervalValue.name=\u9593\u9694\u5024 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.intervalField.name=\u9593\u9694\u30D5\u30A3\u30FC\u30EB\u30C9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.sqlMode.name=SQL\u30E2\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.starts.name=\u958B\u59CB +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.ends.name=\u7D42\u308F\u308A +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.status.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.onCompletion.name=\u5B8C\u4E86\u6642\u306B +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.created.name=\u4F5C\u6210\u3057\u305F +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.lastAltered.name=\u5909\u66F4\u3055\u308C\u307E\u3057\u305F +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.lastExecuted.name=\u5B9F\u884C\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.originator.name=\u5275\u59CB\u8005 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.characterSetClient.name=Charset +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.collationConnection.name=\u7167\u5408\uFF08\u63A5\u7D9A\uFF09 +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLEvent.databaseCollation.name=\u7167\u5408\uFF08\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\uFF09 diff --git a/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/pom.xml index 906b1e7358903a1cd60a86bc18bd66d752c7ecfe..3e4c4de521d00b365d340d05c1e773fdb3a49bb7 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.mysql.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.mysql.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.netezza.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.netezza.nls/META-INF/MANIFEST.MF index e8433974c4e64299033f243470eac001916c9efc..961de84338a80f7186844c66285eb134dd633699 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.netezza.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.netezza.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.netezza.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.netezza Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.netezza.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.netezza.nls/pom.xml index 3a511e0b767856c6a737b1f56a133cc78704f797..6da93f449a02fc0b2958e5ae808b030204386f8c 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.netezza.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.netezza.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.netezza.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/META-INF/MANIFEST.MF index c417b4f031c91340e8c4e6ad91e591feef9e28c2..95d1c0416c9799b36a2d4c2fa2bb5b1cb10dcdb8 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.oracle.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.oracle Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..07349e78f7c836f04b3ba0b71854f68a8ffb1e63 --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,614 @@ +Bundle-Vendor = JKISS +Bundle-Name = DBeaver Oracle Support + +editor.package.declaration.name=\u5BA3\u8A00 +editor.package.declaration.description=\u5BA3\u8A00\u30BD\u30FC\u30B9 +editor.package.body.name=\u4F53 +editor.package.body.description=\u30DC\u30C7\u30A3\u30BD\u30FC\u30B9 +editor.scheduler.job.log.name=\u30ED\u30B0\u3092\u5B9F\u884C\u3059\u308B +editor.scheduler.job.log.description=\u30B8\u30E7\u30D6\u5B9F\u884C\u306E\u8A73\u7D30\u30ED\u30B0 + +tree.schemas.node.name=\u30B9\u30AD\u30FC\u30DE +tree.schema.node.name=\u30B9\u30AD\u30FC\u30DE +tree.tables.node.name=\u30C6\u30FC\u30D6\u30EB +tree.table.node.name=\u8868 +tree.columns.node.name=\u5217 +tree.column.node.name=\u30AB\u30E9\u30E0 +tree.constraints.node.name=\u5236\u7D04 +tree.constraint.node.name=\u5236\u7D04 +tree.constraint_columns.node.name=\u5236\u7D04\u5217 +tree.foreign_keys.node.name=\u5916\u90E8\u30AD\u30FC +tree.foreign_key.node.name=\u5916\u90E8\u30AD\u30FC +tree.foreign_key_columns.node.name=\u5916\u90E8\u30AD\u30FC\u5217 +tree.references.node.name=\u53C2\u8003\u6587\u732E +tree.reference_key.node.name=\u53C2\u7167\u30AD\u30FC +tree.reference_key_columns.node.name=\u53C2\u7167\u30AD\u30FC\u5217 +tree.triggers.node.name=\u30C8\u30EA\u30AC\u30FC +tree.trigger.node.name=\u5F15\u304D\u91D1 +tree.schema.triggers.node.name=\u30B9\u30AD\u30FC\u30DE\u30C8\u30EA\u30AC +tree.table.triggers.node.name=\u30C6\u30FC\u30D6\u30EB\u30C8\u30EA\u30AC +tree.table.trigger.node.name=\u30C6\u30FC\u30D6\u30EB\u30C8\u30EA\u30AC\u30FC +tree.indexes.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +tree.index.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +tree.index_columns.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5217 +tree.partitions.node.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.partition.node.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.subpartitions.node.name=\u30B5\u30D6\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.subpartition.node.name=\u30B5\u30D6\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.views.node.name=\u30D3\u30E5\u30FC +tree.view.node.name=\u30D3\u30E5\u30FC +tree.materialized_views.node.name=\u30DE\u30C6\u30EA\u30A2\u30E9\u30A4\u30BA\u30C9\u30FB\u30D3\u30E5\u30FC +tree.materialized_view.node.name=\u30DE\u30C6\u30EA\u30A2\u30E9\u30A4\u30BA\u30C9\u30FB\u30D3\u30E5\u30FC +tree.queues.node.name=\u30AD\u30E5\u30FC +tree.queue.node.name=\u30AD\u30E5\u30FC +tree.sequences.node.name=\u30B7\u30FC\u30B1\u30F3\u30B9 +tree.sequence.node.name=\u30B7\u30FC\u30B1\u30F3\u30B9 +tree.types.node.name=\u30BF\u30A4\u30D7 +tree.type.node.name=\u30BF\u30A4\u30D7 +tree.attributes.node.name=\u5C5E\u6027 +tree.attribute.node.name=\u5C5E\u6027 +tree.methods.node.name=\u30E1\u30BD\u30C3\u30C9 +tree.method.node.name=\u65B9\u6CD5 +tree.arguments.node.name=\u5F15\u6570 +tree.argument.node.name=\u5F15\u6570 +tree.packages.node.name=\u30D1\u30C3\u30B1\u30FC\u30B8 +tree.package.node.name=\u30D1\u30C3\u30B1\u30FC\u30B8 +tree.procedures.node.name=\u624B\u7D9A\u304D +tree.procedure.node.name=\u624B\u9806 +tree.synonyms.node.name=\u985E\u7FA9\u8A9E +tree.synonym.node.name=\u30B7\u30CE\u30CB\u30E0 +tree.database_links.node.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30EA\u30F3\u30AF +tree.database_link.node.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30EA\u30F3\u30AF +tree.recycle_bin.node.name=\u3054\u307F\u7BB1 +tree.recycled_object.node.name=\u30EA\u30B5\u30A4\u30AF\u30EB\u3055\u308C\u305F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +tree.global_metadata.node.name=\u30B0\u30ED\u30FC\u30D0\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF +tree.data_type.node.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 +tree.public_synonyms.node.name=\u30D1\u30D6\u30EA\u30C3\u30AF\u540C\u7FA9\u8A9E +tree.public_database_links.node.name=\u30D1\u30D6\u30EA\u30C3\u30AF\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30EA\u30F3\u30AF +tree.user_recycle_bin.node.name=\u30E6\u30FC\u30B6\u30FC\u306E\u3054\u307F\u7BB1 +tree.storage.node.name=\u30B9\u30C8\u30EC\u30FC\u30B8 +tree.tablespaces.node.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +tree.tablespace.node.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +tree.files.node.name=\u30D5\u30A1\u30A4\u30EB +tree.file.node.name=\u30D5\u30A1\u30A4\u30EB +tree.objects.node.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +tree.segment.node.name=\u30BB\u30B0\u30E1\u30F3\u30C8 +tree.security.node.name=\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3 +tree.users.node.name=\u30E6\u30FC\u30B6\u30FC +tree.user.node.name=\u30E6\u30FC\u30B6\u30FC +tree.roles.node.name=\u30ED\u30FC\u30EB +tree.role.node.name=\u5F79\u5272 +tree.system_privileges.node.name=\u30B7\u30B9\u30C6\u30E0\u7279\u6A29 +tree.table_privileges.node.name=\u7279\u6A29 +tree.privilege.node.name=\u7279\u6A29 +tree.profiles.node.name=\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB +tree.profile.node.name=\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB +tree.resource.node.name=\u30EA\u30BD\u30FC\u30B9 +tree.administer.node.name=\u7BA1\u7406\u8005 +tree.locks.node.name=\u30ED\u30C3\u30AF +tree.sessions.node.name=\u30BB\u30C3\u30B7\u30E7\u30F3 +tree.scheduler.node.name=\u30B9\u30B1\u30B8\u30E5\u30FC\u30E9 +tree.scheduler.jobs.node.name=\u6C42\u4EBA +tree.scheduler.job.node.name=\u30B8\u30E7\u30D6 +tree.scheduler.job.arguments.node.name=\u5F15\u6570 +tree.scheduler.job.argument.node.name=\u5F15\u6570 +tree.scheduler.programs.node.name=\u30D7\u30ED\u30B0\u30E9\u30E0 +tree.scheduler.program.node.name=\u30D7\u30ED\u30B0\u30E9\u30E0 +tree.scheduler.program.arguments.node.name=\u5F15\u6570 +tree.scheduler.program.argument.node.name=\u5F15\u6570 + +dialog.connection.header=Oracle\u63A5\u7D9A\u8A2D\u5B9A +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.id.name=ID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.relativeNo.name=\u76F8\u5BFE\u30CA\u30F3\u30D0\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.bytes.name=\u30D0\u30A4\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.blocks.name=\u30D6\u30ED\u30C3\u30AF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.maxBytes.name=\u6700\u5927\u30D0\u30A4\u30C8\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.maxBlocks.name=\u6700\u5927\u30D6\u30ED\u30C3\u30AF\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.incrementBy.name=\u30A4\u30F3\u30AF\u30EA\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.userBytes.name=\u30E6\u30FC\u30B6\u30FC\u30D0\u30A4\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.userBlocks.name=\u30E6\u30FC\u30B6\u30D6\u30ED\u30C3\u30AF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.available.name=\u5229\u7528\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.autoExtensible.name=\u30AA\u30FC\u30C8\u30A8\u30AF\u30B9\u30C6\u30F3\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.onlineStatus.name=\u30AA\u30F3\u30E9\u30A4\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataFile.temporary.name=\u4E00\u6642\u7684 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.compileActions.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.valueType.name=\u4F53 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.name.name=\u30BF\u30A4\u30D7\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.sourceDeclaration.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.sourceDefinition.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.typeCode.name=\u30B3\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.typeOID.name=OID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.superType.name=\u30B9\u30FC\u30D1\u30FC\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.predefined.name=\u5B9A\u7FA9\u6E08\u307F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.incomplete.name=\u4E0D\u5B8C\u5168\u306A +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.final.name=\u6700\u5F8C\u306E +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.instantiable.name=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B7\u30A8\u30F3\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataType.componentType.name=\u8981\u7D20\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeAttribute.dataType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeAttribute.attrTypeMod.name=\u30BF\u30A4\u30D7Mod +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeAttribute.maxLength.name=\u9577\u3055 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeAttribute.precision.name=\u7CBE\u5EA6 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeAttribute.scale.name=\u898F\u6A21 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeAttribute.ordinalPosition.name=\uFF03 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMember.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMember.inherited.name=\u7D99\u627F\u3055\u308C\u307E\u3057\u305F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethod.methodType.name=\u30E1\u30BD\u30C3\u30C9\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethod.final.name=\u6700\u5F8C\u306E +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethod.instantiable.name=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B7\u30A8\u30F3\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethod.overriding.name=\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethod.resultType.name=\u7D50\u679C +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethod.resultTypeMod.name=\u7D50\u679CMOD +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethodParameter.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethodParameter.number.name=\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethodParameter.mode.name=\u30E2\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethodParameter.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDataTypeMethodParameter.typeMod.name=\u30BF\u30A4\u30D7Mod +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDBLink.userName.name=\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDBLink.host.name=\u30DB\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleDBLink.created.name=\u4F5C\u6210\u3057\u305F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleJavaClass.accessibility.name=\u30A2\u30AF\u30BB\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleJavaClass.interface.name=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.container.name=\u30B3\u30F3\u30C6\u30CA +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.updatable.name=\u66F4\u65B0\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.rewriteEnabled.name=\u66F8\u304D\u63DB\u3048\u3092\u6709\u52B9\u306B\u3059\u308B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.rewriteCapability.name=\u66F8\u304D\u63DB\u3048\u6A5F\u80FD +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.refreshMode.name=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u30E2\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.refreshMethod.name=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u30E1\u30BD\u30C3\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.buildMode.name=\u30D3\u30EB\u30C9\u30E2\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.fastRefreshable.name=\u9AD8\u901F\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.lastRefreshType.name=\u6700\u5F8C\u306E\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.lastRefreshDate.name=\u6700\u7D42\u66F4\u65B0\u65E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.staleness.name=\u8352\u308C\u679C\u3066 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.compileActions.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleMaterializedView.objectDefinitionText.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleObject.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePackage.valid.name=\u6709\u52B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePackage.objectDefinitionText.name=\u30D8\u30C3\u30C0 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePackage.extendedDefinitionText.name=\u4F53 + +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase.position.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase.usable.name=\u4F7F\u7528\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase.tablespace.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase.highValue.name=\u9AD8\u3044\u4FA1\u5024 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase.numRows.name=\u884C +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase.sampleSize.name=\u30B5\u30F3\u30D7\u30EB\u30B5\u30A4\u30BA +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase.lastAnalyzed.name=\u6700\u5F8C\u306B\u5206\u6790\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase$PartitionInfoBase.partitionType.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase$PartitionInfoBase.subpartitionType.name=\u30B5\u30D6\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePartitionBase$PartitionInfoBase.partitionTablespace.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u8868\u9818\u57DF +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePriv.adminOption.name=\u7BA1\u7406\u8005\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePriv.adminOption.description=\u8A31\u53EF\u304CADMIN OPTION\u306B\u3042\u3063\u305F\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.objectType.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.objectType.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.object.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.object.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u3001\u8868\u3001\u30D1\u30C3\u30B1\u30FC\u30B8\u3001\u7D22\u5F15\u3001\u9806\u5E8F\u306A\u3069\u3001\u4EFB\u610F\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.privilege.name=\u7279\u6A29 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.privilege.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u5BFE\u3059\u308B\u7279\u6A29 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.grantor.name=\u30B0\u30E9\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.grantor.description=\u52A9\u6210\u91D1\u3092\u884C\u3063\u305F\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.grantable.name=\u6388\u4E0E\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.grantable.description=GRANT OPTION\u3067\u6A29\u9650\u304C\u4ED8\u4E0E\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.hierarchy.name=\u968E\u5C64 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivObject.hierarchy.description=HIERARCHY OPTION\u3067\u6A29\u9650\u304C\u4ED8\u4E0E\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivRole.role.name=\u5F79\u5272 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivRole.role.description=\u8A31\u53EF\u3055\u308C\u305F\u5F79\u5272 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivRole.defaultRole.name=\u30C7\u30D5\u30A9\u30EB\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivRole.defaultRole.description=\u30E6\u30FC\u30B6\u30FC\u306E\u30ED\u30FC\u30EB\u304CDEFAULT ROLE\u3068\u3057\u3066\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivSystem.name.name=\u7279\u6A29 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivSystem.name.description=\u30B7\u30B9\u30C6\u30E0\u7279\u6A29 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureArgument.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureArgument.position.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureArgument.parameterKind.name=\u30A4\u30F3/\u30A2\u30A6\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureArgument.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureArgument.maxLength.name=\u9577\u3055 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureArgument.scale.name=\u898F\u6A21 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureArgument.precision.name=\u7CBE\u5EA6 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureBase.procedureType.name=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureStandalone.valid.name=\u6709\u52B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureStandalone.compileActions.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleProcedureStandalone.objectDefinitionText.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.name.name=\u30AD\u30E5\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.queueTable.name=\u30AD\u30E5\u30FC\u30C6\u30FC\u30D6\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.qId.name=QId +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.queueType.name=\u30AD\u30E5\u30FC\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.maxRetries.name=\u6700\u5927\u518D\u8A66\u884C\u56DE\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.retryDelay.name=\u518D\u8A66\u884C\u9045\u5EF6 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.enqueueEnabled.name=\u30A8\u30F3\u30AD\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.dequeueEnabled.name=\u30C7\u30AD\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.retention.name=\u4FDD\u6301\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.userComment.name=\u30E6\u30FC\u30B6\u30FC\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleQueue.networkName.name=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.recycledName.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.recycledName.description=\u65B0\u3057\u3044\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.operation.name=\u64CD\u4F5C +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.operation.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u4E0A\u3067\u5B9F\u884C\u3055\u308C\u308B\u64CD\u4F5C +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.objectType.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.objectType.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.tablespace.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.tablespace.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u5C5E\u3059\u308B\u8868\u9818\u57DF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.createTime.name=\u6642\u9593\u3092\u4F5C\u308B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.dropTime.name=\u843D\u4E0B\u6642\u9593 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.partitionName.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.canUndrop.name=\u53D6\u308A\u6D88\u3059\u3053\u3068\u304C\u3067\u304D\u307E\u3059 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.canUndrop.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u53D6\u308A\u6D88\u3059\u3053\u3068\u304C\u3067\u304D\u308B\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.canPurge.name=\u30D1\u30FC\u30B8\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRecycledObject.canPurge.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30D1\u30FC\u30B8\u3067\u304D\u308B\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.name.name=\u30ED\u30FC\u30EB\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.name.description=\u5F79\u5272\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.authentication.name=\u8A8D\u8A3C +meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.authentication.description=\u30ED\u30FC\u30EB\u3067\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.id.name=\u30E6\u30FC\u30B6\u30FCID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.createTime.name=\u6642\u9593\u3092\u4F5C\u308B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.createTime.description=\u30E6\u30FC\u30B6\u30FC\u304C\u4F5C\u6210\u3055\u308C\u305F\u65E5\u4ED8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.schema.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.segmentType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.partitionName.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.bytes.name=\u30D0\u30A4\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.blocks.name=\u30D6\u30ED\u30C3\u30AF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.file.name=\u30D5\u30A1\u30A4\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSequence.name.name=\u30B7\u30FC\u30B1\u30F3\u30B9\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSequence.lastValue.name=\u5024 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSequence.minValue.name=\u6700\u5C0F\u5024 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSequence.maxValue.name=\u6700\u5927\u5024 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSequence.incrementBy.name=\u30A4\u30F3\u30AF\u30EA\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSequence.cacheSize.name=\u30AD\u30E3\u30C3\u30B7\u30E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSequence.cycle.name=\u30B5\u30A4\u30AF\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSequence.order.name=\u9806\u5E8F\u4ED8\u3051\u3089\u308C\u307E\u3057\u305F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSynonym.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSynonym.objectTypeName.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSynonym.objectOwner.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSynonym.object.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSynonym.dbLink.name=DB\u30EA\u30F3\u30AF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.tableType.name=\u30C6\u30FC\u30D6\u30EB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.tableType.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u8868\u3001\u8868\u306E\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.iotType.name=IOT\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.iotType.description=\u3053\u308C\u304C\u7D22\u5F15\u69CB\u6210\u8868\u306E\u5834\u5408\u3001IOT_TYPE\u306FIOT\u3001IOT_OVERFLOW\u3001\u307E\u305F\u306FIOT_MAPPING\u3067\u3059\u3002\u3053\u308C\u304C\u7D22\u5F15\u69CB\u6210\u8868\u3067\u306A\u3044\u5834\u5408\u3001IOT_TYPE\u306FNULL\u3067\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.iotName.name=IOT\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.iotName.description=\u30AA\u30FC\u30D0\u30FC\u30D5\u30ED\u30FC\u307E\u305F\u306F\u30DE\u30C3\u30D4\u30F3\u30B0\u30FB\u30C6\u30FC\u30D6\u30EB\u9805\u76EE\u304C\u5C5E\u3059\u308B\u7D22\u5F15\u69CB\u6210\u8868\u306E\u540D\u524D\uFF08\u5B58\u5728\u3059\u308B\u5834\u5408\uFF09\u3002 IOT_TYPE\u5217\u304CNULL\u3067\u306A\u3044\u5834\u5408\u3001\u3053\u306E\u5217\u306B\u306F\u57FA\u672C\u8868\u540D\u304C\u542B\u307E\u308C\u307E\u3059 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.temporary.name=\u4E00\u6642\u7684 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.temporary.description=\u30C6\u30FC\u30D6\u30EB\u304C\u4E00\u6642\u7684\u3067\u3042\u308B\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.secondary.name=\u4E8C\u6B21 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.secondary.description=\u8868\u304C\u3001Oracle Data Cartridge\u306EODCIIndexCreate\u30E1\u30BD\u30C3\u30C9\u306B\u3088\u3063\u3066\u4F5C\u6210\u3055\u308C\u3001\u30C9\u30E1\u30A4\u30F3\u7D22\u5F15\u306E\u5185\u5BB9\u3092\u683C\u7D0D\u3059\u308B\u30BB\u30AB\u30F3\u30C0\u30EA\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3042\u308B\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.nested.name=\u30CD\u30B9\u30C8\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTable.nested.description=\u8868\u304C\u30CD\u30B9\u30C8\u3057\u305F\u8868\u3067\u3042\u308B\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableBase.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableBase.name.description=\u8868\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableBase.comment.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableBase.comment.description=\u30C6\u30FC\u30D6\u30EB\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableBase.objectState.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.type.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.type.description=\u5217\u306E\u30C7\u30FC\u30BF\u578B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.dataType.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.dataType.description=\u5217\u306E\u30C7\u30FC\u30BF\u578B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.typeMod.name=\u30BF\u30A4\u30D7Mod +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.typeMod.description=\u5217\u306E\u30C7\u30FC\u30BF\u578B\u4FEE\u98FE\u5B50 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.maxLength.name=\u9577\u3055 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.maxLength.description=\u5217\u306E\u9577\u3055\uFF08\u30D0\u30A4\u30C8\u5358\u4F4D\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.precision.name=\u7CBE\u5EA6 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.precision.description=NUMBER\u30C7\u30FC\u30BF\u578B\u306E\u5C0F\u6570\u7CBE\u5EA6\u3002 FLOAT\u30C7\u30FC\u30BF\u578B\u306E\u30D0\u30A4\u30CA\u30EA\u7CBE\u5EA6\u3002\u4ED6\u306E\u3059\u3079\u3066\u306E\u30C7\u30FC\u30BF\u578B\u3067\u306FNULL +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.scale.name=\u898F\u6A21 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.scale.description=\u6570\u5B57\u306E\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.required.name=\u30CC\u30EB\u3067\u306A\u3044 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.required.description=\u5217\u304CNULL\u3092\u8A31\u53EF\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.comment.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.comment.description=\u5217\u306E\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableConstraintBase.constraintType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableConstraintBase.status.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableConstraint.searchCondition.name=\u8ABF\u5B50 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableConstraintColumn.ordinalPosition.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableConstraintColumn.attribute.name=\u30AB\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableForeignKey.referencedTable.name=\u53C2\u7167\u30C6\u30FC\u30D6\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableForeignKey.deleteRule.name=\u524A\u9664\u6642 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableForeignKey.referencedConstraint.name=Ref\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableForeignKeyColumn.referencedColumn.name=\u53C2\u7167\u6B04 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableIndex.unique.name=\u30E6\u30CB\u30FC\u30AF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableIndex.tablespace.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableIndexColumn.ordinalPosition.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableIndexColumn.ascending.name=\u4E0A\u6607 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableIndexColumn.tableColumn.name=\u30AB\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableIndexColumn.columnExpression.name=\u5F0F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablePhysical.rowCount.name=Stat\u884C\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablePhysical.rowCount.description=\u30C6\u30FC\u30D6\u30EB\u5185\u306E\u884C\u6570\uFF08\u7D71\u8A08\u3092\u53CE\u96C6\u3057\u305F\u5834\u5408\u306B\u306E\u307F\u8A2D\u5B9A\u3055\u308C\u307E\u3059\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablePhysical.realRowCount.name=\u5B9F\u969B\u306E\u884C\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablePhysical.realRowCount.description=\u5B9F\u969B\u306E\u884C\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablePhysical.tablespace.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.blockSize.name=\u30D6\u30ED\u30C3\u30AF\u30B5\u30A4\u30BA +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.initialExtent.name=\u521D\u671F\u7BC4\u56F2 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.nextExtent.name=\u6B21\u306E\u30A8\u30AF\u30B9\u30C6\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.minExtents.name=\u6700\u5C0F\u7BC4\u56F2 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.maxExtents.name=\u6700\u5927\u30A8\u30AF\u30B9\u30C6\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.pctIncrease.name=PCT\u5897\u52A0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.minExtLen.name=Min Ext Len +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.status.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.contents.name=\u5185\u5BB9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.logging.name=\u30ED\u30AE\u30F3\u30B0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.forceLogging.name=\u30ED\u30AE\u30F3\u30B0\u3092\u5F37\u5236\u3059\u308B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.extentManagement.name=\u30A8\u30AF\u30B9\u30C6\u30F3\u30C8\u7BA1\u7406 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.allocationType.name=\u5272\u308A\u5F53\u3066\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.pluggedIn.name=\u30D7\u30E9\u30B0\u30A4\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.segmentSpaceManagement.name=\u30BB\u30B0\u30E1\u30F3\u30C8\u7A7A\u9593\u7BA1\u7406 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.defTableCompression.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u30C6\u30FC\u30D6\u30EB\u5727\u7E2E +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.retention.name=\u4FDD\u6301 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTablespace.bigFile.name=\u30D3\u30C3\u30B0\u30D5\u30A1\u30A4\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.objectType.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.triggerType.name=\u30C8\u30EA\u30AC\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.triggeringEvent.name=\u30A4\u30D9\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.columnName.name=\u30AB\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.refNames.name=\u53C2\u7167\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.whenClause.name=\u3044\u3064\u53E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.status.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.description.name=\u8AAC\u660E +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.actionType.name=\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTrigger.sourceDeclaration.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTriggerColumn.name.name=\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTriggerColumn.tableColumn.name=\u30AB\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableTrigger.table.name=\u8868 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.id.name=ID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.id.description=\u30E6\u30FC\u30B6\u30FC\u306EID\u756A\u53F7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.name.name=\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.name.description=\u30E6\u30FC\u30B6\u30FC\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.externalName.name=\u5916\u90E8\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.externalName.description=\u30E6\u30FC\u30B6\u30FC\u306E\u5916\u90E8\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.status.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.status.description=\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.createDate.name=\u65E5\u4ED8\u3092\u4F5C\u6210\u3057\u307E\u3059 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.createDate.description=\u30E6\u30FC\u30B6\u30FC\u4F5C\u6210\u65E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.lockDate.name=\u30ED\u30C3\u30AF\u65E5\u4ED8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.lockDate.description=\u30A2\u30AB\u30A6\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9\u304CLOCKED\u306E\u5834\u5408\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u304C\u30ED\u30C3\u30AF\u3055\u308C\u305F\u65E5\u4ED8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.expiryDate.name=\u6709\u52B9\u671F\u9650 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.expiryDate.description=\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u6709\u52B9\u671F\u9650 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.defaultTablespace.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u8868\u9818\u57DF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.defaultTablespace.description=\u30C7\u30FC\u30BF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u8868\u9818\u57DF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.tempTablespace.name=\u4E00\u6642\u8868\u9818\u57DF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.tempTablespace.description=\u4E00\u6642\u8868\u307E\u305F\u306F\u8868\u9818\u57DF\u30B0\u30EB\u30FC\u30D7\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u8868\u9818\u57DF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.profile.name=\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.profile.description=\u30E6\u30FC\u30B6\u30FC\u30EA\u30BD\u30FC\u30B9\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.consumerGroup.name=\u6D88\u8CBB\u8005\u56E3\u4F53 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUser.consumerGroup.description=\u30E6\u30FC\u30B6\u30FC\u306E\u521D\u671F\u30EA\u30BD\u30FC\u30B9\u30FB\u30B3\u30F3\u30B7\u30E5\u30FC\u30DE\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUserProfile.name.name=\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUserProfile.name.description=\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUserProfile$ProfileResource.name.name=\u30EA\u30BD\u30FC\u30B9\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUserProfile$ProfileResource.name.description=\u30EA\u30BD\u30FC\u30B9\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUserProfile$ProfileResource.type.name=\u30EA\u30BD\u30FC\u30B9\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUserProfile$ProfileResource.type.description=\u30EA\u30BD\u30FC\u30B9\u30FB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u304CKERNEL\u307E\u305F\u306FPASSWORD\u306E\u3044\u305A\u308C\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u3042\u308B\u304B\u3092\u793A\u3057\u307E\u3059\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUserProfile$ProfileResource.limit.name=\u5236\u9650 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleUserProfile$ProfileResource.limit.description=\u3053\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E\u3053\u306E\u30EA\u30BD\u30FC\u30B9\u306B\u914D\u7F6E\u3055\u308C\u308B\u5236\u9650 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView$AdditionalInfo.text.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView$AdditionalInfo.superView.name=\u30B9\u30FC\u30D1\u30FC\u30D3\u30E5\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView$AdditionalInfo.typeText.name=\u30BF\u30A4\u30D7\u30C6\u30AD\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView$AdditionalInfo.typeText.description=\u578B\u4ED8\u304D\u30D3??\u30E5\u30FC\u306E\u578B\u7BC0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView$AdditionalInfo.oidText.name=OID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView$AdditionalInfo.oidText.description=\u578B\u4ED8\u304D\u30D3??\u30E5\u30FC\u306EWITH OID\u53E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView$AdditionalInfo.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView$AdditionalInfo.type.description=\u30D3\u30E5\u30FC\u304C\u578B\u4ED8\u304D\u30D3\u30E5\u30FC\u306E\u5834\u5408\u306E\u30D3\u30E5\u30FC\u306E\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView.objectDefinitionText.name=\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView.name.name=\u30D3\u30E5\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleView.sourceDeclaration.name=\u5BA3\u8A00 +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.operation.name=\u64CD\u4F5C +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.operation.description=\u3053\u306E\u30B9\u30C6\u30C3\u30D7\u3067\u5B9F\u884C\u3055\u308C\u308B\u5185\u90E8\u64CD\u4F5C\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.object.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.object.description=\u8868\u307E\u305F\u306F\u7D22\u5F15\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.optimizer.name=\u30AA\u30D7\u30C6\u30A3\u30DE\u30A4\u30B6 +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.optimizer.description=\u30AA\u30D7\u30C6\u30A3\u30DE\u30A4\u30B6\u306E\u73FE\u5728\u306E\u30E2\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.cost.name=\u30B3\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.cost.description=\u30AA\u30D7\u30C6\u30A3\u30DE\u30A4\u30B6\u306E\u30AF\u30A8\u30EA\u30FB\u30A2\u30D7\u30ED\u30FC\u30C1\u306B\u3088\u3063\u3066\u63A8\u5B9A\u3055\u308C\u308B\u64CD\u4F5C\u306E\u30B3\u30B9\u30C8\u3002\u8868\u30A2\u30AF\u30BB\u30B9\u64CD\u4F5C\u306E\u30B3\u30B9\u30C8\u306F\u6C7A\u5B9A\u3055\u308C\u307E\u305B\u3093\u3002\u3053\u306E\u5217\u306E\u5024\u306B\u306F\u3001\u7279\u5B9A\u306E\u6E2C\u5B9A\u5358\u4F4D\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u5B9F\u884C\u8A08\u753B\u306E\u30B3\u30B9\u30C8\u3092\u6BD4\u8F03\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u308B\u91CD\u307F\u4ED8\u3051\u3055\u308C\u305F\u5024\u306B\u3059\u304E\u307E\u305B\u3093\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.cardinality.name=\u30AB\u30FC\u30C7\u30A3\u30CA\u30EA\u30C6\u30A3 +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.cardinality.description=\u64CD\u4F5C\u306B\u3088\u3063\u3066\u30A2\u30AF\u30BB\u30B9\u3055\u308C\u305F\u884C\u6570\u306E\u554F\u5408\u305B\u6700\u9069\u5316\u30A2\u30D7\u30ED\u30FC\u30C1\u306B\u3088\u308B\u898B\u7A4D\u3082\u308A +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.bytes.name=\u30D0\u30A4\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.plan.OraclePlanNode.bytes.description=\u30AF\u30A8\u30EA\u6700\u9069\u5316\u30A2\u30D7\u30ED\u30FC\u30C1\u306B\u3088\u308B\u64CD\u4F5C\u306B\u3088\u3063\u3066\u30A2\u30AF\u30BB\u30B9\u3055\u308C\u305F\u30D0\u30A4\u30C8\u6570\u306E\u898B\u7A4D\u3082\u308A +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.sid.name=SID +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.sid.description=\u30BB\u30C3\u30B7\u30E7\u30F3\u8B58\u5225\u5B50 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.user.name=\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.user.description=Oracle\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.schema.name=\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.schema.description=\u30B9\u30AD\u30FC\u30DE\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.status.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.status.description=\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u30B9\u30C6\u30FC\u30BF\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.state.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.state.description=\u5F85\u6A5F\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.event.name=\u30A4\u30D9\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.event.description=\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u5F85\u6A5F\u3057\u3066\u3044\u308B\u30EA\u30BD\u30FC\u30B9\u307E\u305F\u306F\u30A4\u30D9\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.logonTime.name=\u30ED\u30B0\u30AA\u30F3\u6642\u9593 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.logonTime.description=\u30ED\u30B0\u30AA\u30F3\u306E\u6642\u523B +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.serviceName.name=\u30B5\u30FC\u30D3\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.serviceName.description=\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u30B5\u30FC\u30D3\u30B9\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.sql.name=\u73FE\u5728\u306ESQL +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.sql.description=\u73FE\u5728\u306ESQL\u6587 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.remoteHost.name=\u30EA\u30E2\u30FC\u30C8\u30DB\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.remoteHost.description=\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30B7\u30B9\u30C6\u30E0\u30DE\u30B7\u30F3\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.remoteUser.name=\u30EA\u30E2\u30FC\u30C8\u30E6\u30FC\u30B6 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.remoteUser.description=\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30B7\u30B9\u30C6\u30E0\u306E\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30E6\u30FC\u30B6\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.remoteProgram.name=\u30EA\u30E2\u30FC\u30C8\u30D7\u30ED\u30B0\u30E9\u30E0 +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.remoteProgram.description=\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30B7\u30B9\u30C6\u30E0\u30D7\u30ED\u30B0\u30E9\u30E0\u540D + +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.owner.description=\u30B9\u30B1\u30B8\u30E5\u30FC\u30E9\u30B8\u30E7\u30D6\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobSubName.name=\u30B5\u30D6\u30CD\u30FC\u30E0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobSubName.description=\u30B9\u30B1\u30B8\u30E5\u30FC\u30E9\u30FC\u30FB\u30B8\u30E7\u30D6\u306E\u30B5\u30D6\u30CD\u30FC\u30E0\uFF08\u9023\u9396\u30B9\u30C6\u30C3\u30D7\u3092\u5B9F\u884C\u3059\u308B\u30B8\u30E7\u30D6\u306E\u5834\u5408\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobStyle.name=\u30B9\u30BF\u30A4\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobStyle.description=\u30B8\u30E7\u30D6\u30B9\u30BF\u30A4\u30EB - \u901A\u5E38\u3001\u8EFD\u91CF\u307E\u305F\u306F\u63EE\u767A\u6027 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobCreator.name=\u30AF\u30EA\u30A8\u30A4\u30BF\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobCreator.description=\u3053\u306E\u4ED5\u4E8B\u306E\u30AA\u30EA\u30B8\u30CA\u30EB\u30AF\u30EA\u30A8\u30A4\u30BF\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.clientId.name=\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8ID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.clientId.description=\u3053\u306E\u30B8\u30E7\u30D6\u3092\u4F5C\u6210\u3057\u3066\u3044\u308B\u30E6\u30FC\u30B6\u30FC\u306E\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8ID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.globalUid.name=\u30B0\u30ED\u30FC\u30D0\u30EBUID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.globalUid.description=\u3053\u306E\u30B8\u30E7\u30D6\u3092\u4F5C\u6210\u3057\u3066\u3044\u308B\u30E6\u30FC\u30B6\u30FC\u306E\u30B0\u30ED\u30FC\u30D0\u30EBUID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.programOwner.name=\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.programOwner.description=\u30B8\u30E7\u30D6\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.programName.name=\u30D7\u30ED\u30B0\u30E9\u30E0\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.programName.description=\u30B8\u30E7\u30D6\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobType.name=\u30B8\u30E7\u30D6\u306E\u7A2E\u985E +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobType.description=\u30A4\u30F3\u30E9\u30A4\u30F3\u30FB\u30B8\u30E7\u30D6\u30FB\u30A2\u30AF\u30B7\u30E7\u30F3\u30FB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobAction.name=\u30B8\u30E7\u30D6\u30A2\u30AF\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobAction.description=\u30A4\u30F3\u30E9\u30A4\u30F3\u30FB\u30B8\u30E7\u30D6\u30FB\u30A2\u30AF\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.numberOfArguments.name=\u5F15\u6570\u306E\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.numberOfArguments.description=\u30A4\u30F3\u30E9\u30A4\u30C9\u3055\u308C\u305F\u5F15\u6570\u306E\u30B8\u30E7\u30D6\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.scheduleOwner.name=\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.scheduleOwner.description=\u3053\u306E\u30B8\u30E7\u30D6\u304C\u4F7F\u7528\u3059\u308B\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u6240\u6709\u8005\uFF08\u30A6\u30A3\u30F3\u30C9\u30A6\u307E\u305F\u306F\u30A6\u30A3\u30F3\u30C9\u30A6\u30B0\u30EB\u30FC\u30D7\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.scheduleName.name=\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.scheduleName.description=\u3053\u306E\u30B8\u30E7\u30D6\u304C\u4F7F\u7528\u3059\u308B\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u540D\u524D\uFF08\u30A6\u30A3\u30F3\u30C9\u30A6\u307E\u305F\u306F\u30A6\u30A3\u30F3\u30C9\u30A6\u30B0\u30EB\u30FC\u30D7\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.scheduleType.name=\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.scheduleType.description=\u3053\u306E\u30B8\u30E7\u30D6\u304C\u4F7F\u7528\u3059\u308B\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.startDate.name=\u958B\u59CB\u65E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.startDate.description=\u3053\u306E\u30B8\u30E7\u30D6\u306E\u5143\u306E\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3055\u308C\u305F\u958B\u59CB\u65E5\uFF08\u30A4\u30F3\u30E9\u30A4\u30F3\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u5834\u5408\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.repeatInterval.name=\u7E70\u308A\u8FD4\u3057\u9593\u9694 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.repeatInterval.description=\u30A4\u30F3\u30E9\u30A4\u30F3\u30FB\u30B9\u30B1\u30B8\u30E5\u30FC\u30EBPL / SQL\u5F0F\u307E\u305F\u306F\u30AB\u30EC\u30F3\u30C0\u30FB\u30B9\u30C8\u30EA\u30F3\u30B0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventQueueOwner.name=\u30A4\u30D9\u30F3\u30C8\u30AD\u30E5\u30FC\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventQueueOwner.description=\u30A4\u30D9\u30F3\u30C8\u304C\u767A\u751F\u3059\u308B\u30BD\u30FC\u30B9\u30AD\u30E5\u30FC\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventQueueName.name=\u30A4\u30D9\u30F3\u30C8\u30AD\u30E5\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventQueueName.description=\u30A4\u30D9\u30F3\u30C8\u304C\u767A\u751F\u3059\u308B\u30BD\u30FC\u30B9\u30AD\u30E5\u30FC\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventQueueAgent.name=\u30A4\u30D9\u30F3\u30C8\u30AD\u30E5\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventQueueAgent.description=\u30A4\u30D9\u30F3\u30C8\u30FB\u30BD\u30FC\u30B9\u30FB\u30AD\u30E5\u30FC\u3067\u30E6\u30FC\u30B6\u30FC\u304C\u4F7F\u7528\u3059\u308BAQ\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u540D\u524D\uFF08\u30BB\u30AD\u30E5\u30A2\u30FB\u30AD\u30E5\u30FC\u306E\u5834\u5408\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventCondition.name=\u30A4\u30D9\u30F3\u30C8\u6761\u4EF6 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventCondition.description=\u30BD\u30FC\u30B9\u30AD\u30E5\u30FC\u306E\u30A4\u30D9\u30F3\u30C8\u306E\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u30EB\u30FC\u30EB\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u308B\u30D6\u30FC\u30EB\u5F0F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventRule.name=\u30A4\u30D9\u30F3\u30C8\u30EB\u30FC\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.eventRule.description=\u30A4\u30D9\u30F3\u30C8\u30D9\u30FC\u30B9\u306E\u30B8\u30E7\u30D6\u3092\u30C8\u30EA\u30AC\u3059\u308B\u305F\u3081\u306B\u30B3\u30FC\u30C7\u30A3\u30CD\u30FC\u30BF\u304C\u4F7F\u7528\u3059\u308B\u30EB\u30FC\u30EB\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.fileWatcherOwner.name=\u30D5\u30A1\u30A4\u30EB\u30A6\u30A9\u30C3\u30C1\u30E3\u30FC\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.fileWatcherOwner.description=\u3053\u306E\u30B8\u30E7\u30D6\u306E\u57FA\u306B\u306A\u3063\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u30A6\u30A9\u30C3\u30C1\u30E3\u30FC\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.fileWatcherName.name=\u30D5\u30A1\u30A4\u30EB\u30A6\u30A9\u30C3\u30C1\u30E3\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.fileWatcherName.description=\u3053\u306E\u30B8\u30E7\u30D6\u306E\u57FA\u306B\u306A\u3063\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u30A6\u30A9\u30C3\u30C1\u30E3\u30FC\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.endDate.name=\u7D42\u4E86\u65E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.endDate.description=\u3053\u306E\u30B8\u30E7\u30D6\u306E\u5B9F\u884C\u304C\u7D42\u4E86\u3059\u308B\u307E\u3067\u306E\u65E5\uFF08\u30A4\u30F3\u30E9\u30A4\u30F3\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u5834\u5408\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobClass.name=\u30B8\u30E7\u30D6\u30AF\u30E9\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobClass.description=\u30B8\u30E7\u30D6\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u30B8\u30E7\u30D6\u30FB\u30AF\u30E9\u30B9\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.enabled.name=\u6709\u52B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.enabled.description=\u30B8\u30E7\u30D6\u304C\u6709\u52B9\u304B\u3069\u3046\u304B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.autoDrop.name=\u81EA\u52D5\u30C9\u30ED\u30C3\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.autoDrop.description=\u3053\u306E\u30B8\u30E7\u30D6\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u524A\u9664\u3055\u308C\u308B\u304B\u3069\u3046\u304B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.restartable.name=\u518D\u8D77\u52D5\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.restartable.description=\u3053\u306E\u30B8\u30E7\u30D6\u3092\u518D\u958B\u3067\u304D\u308B\u304B\u3069\u3046\u304B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.state.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.state.description=\u30B8\u30E7\u30D6\u306E\u73FE\u5728\u306E\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobPriority.name=\u30B8\u30E7\u30D6\u306E\u512A\u5148\u9806\u4F4D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobPriority.description=\u540C\u3058\u30AF\u30E9\u30B9\u5185\u306E\u4ED6\u4EBA\u3068\u306E\u4ED5\u4E8B\u306E\u512A\u5148\u9806\u4F4D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.runCount.name=\u30E9\u30F3\u30AB\u30A6\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.runCount.description=\u3053\u306E\u30B8\u30E7\u30D6\u304C\u5B9F\u884C\u3055\u308C\u305F\u56DE\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.maxRuns.name=\u6700\u5927\u30E9\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.maxRuns.description=\u3053\u306E\u30B8\u30E7\u30D6\u306E\u5B9F\u884C\u304C\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3055\u308C\u308B\u6700\u5927\u56DE\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.failureCount.name=\u5931\u6557\u30AB\u30A6\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.failureCount.description=\u3053\u306E\u30B8\u30E7\u30D6\u304C\u5B9F\u884C\u306B\u5931\u6557\u3057\u305F\u56DE\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.maxFailures.name=\u6700\u5927\u5931\u6557 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.maxFailures.description=\u3053\u306E\u30B8\u30E7\u30D6\u304C\u7834\u640D\u3057\u305F\u3068\u30DE\u30FC\u30AF\u3055\u308C\u308B\u307E\u3067\u306B\u5931\u6557\u3059\u308B\u56DE\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.retryCount.name=\u518D\u8A66\u884C\u56DE\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.retryCount.description=\u30B8\u30E7\u30D6\u304C\u518D\u8A66\u884C\u3055\u308C\u305F\u5834\u5408\u3001\u3053\u306E\u30B8\u30E7\u30D6\u304C\u518D\u8A66\u884C\u3055\u308C\u305F\u56DE\u6570\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.lastStartDate.name=\u6700\u7D42\u958B\u59CB\u65E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.lastStartDate.description=\u30B8\u30E7\u30D6\u306E\u5B9F\u884C\u3092\u958B\u59CB\u3057\u305F\u6700\u7D42\u65E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.lastRunDuration.name=\u524D\u56DE\u306E\u5B9F\u884C\u6642\u9593 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.lastRunDuration.description=\u524D\u56DE\u306E\u4ED5\u4E8B\u306E\u6240\u8981\u6642\u9593 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.nextRunDate.name=\u6B21\u306E\u5B9F\u884C\u65E5 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.nextRunDate.description=\u30B8\u30E7\u30D6\u304C\u5B9F\u884C\u3055\u308C\u308B\u6B21\u306E\u65E5\u4ED8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.scheduleLimit.name=\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5236\u9650 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.scheduleLimit.description=\u307E\u3060\u5B9F\u884C\u3055\u308C\u3066\u3044\u306A\u3044\u30B8\u30E7\u30D6\u304C\u518D\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3055\u308C\u308B\u307E\u3067\u306E\u6642\u9593\uFF08\u5206\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.maxRunDuration.name=\u6700\u5927\u5B9F\u884C\u6642\u9593 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.maxRunDuration.description=\u3053\u306E\u5217\u306F\u5C06\u6765\u306E\u4F7F\u7528\u306E\u305F\u3081\u306B\u4E88\u7D04\u3055\u308C\u3066\u3044\u307E\u3059 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.loggingLevel.name=\u30ED\u30AE\u30F3\u30B0\u30EC\u30D9\u30EB +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.loggingLevel.description=\u3053\u306E\u30B8\u30E7\u30D6\u306B\u95A2\u9023\u3057\u3066\u884C\u308F\u308C\u308B\u30ED\u30AE\u30F3\u30B0\u306E\u91CF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.stopOnWindowClose.name=\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u7D42\u4E86\u6642\u306B\u505C\u6B62 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.stopOnWindowClose.description=\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u30A6\u30A3\u30F3\u30C9\u30A6\u304C\u9589\u3058\u308B\u3068\u3053\u306E\u30B8\u30E7\u30D6\u304C\u505C\u6B62\u3059\u308B\u304B\u3069\u3046\u304B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.instanceStickiness.name=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306E\u7C98\u7740\u6027 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.instanceStickiness.description=\u3053\u306E\u4ED5\u4E8B\u304C\u7C98\u7740\u6027\u3067\u3042\u308B\u304B\u3069\u3046\u304B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.raiseEvents.name=\u30A4\u30D9\u30F3\u30C8\u3092\u767A\u751F\u3055\u305B\u308B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.raiseEvents.description=\u3053\u306E\u30B8\u30E7\u30D6\u306E\u305F\u3081\u306B\u767A\u751F\u3055\u305B\u308B\u30B8\u30E7\u30D6\u30A4\u30D9\u30F3\u30C8\u306E\u30EA\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.system.name=\u30B7\u30B9\u30C6\u30E0 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.system.description=\u3053\u308C\u304C\u30B7\u30B9\u30C6\u30E0\u30B8\u30E7\u30D6\u304B\u3069\u3046\u304B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobWeight.name=\u4ED5\u4E8B\u306E\u91CD\u3055 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.jobWeight.description=\u3053\u306E\u4ED5\u4E8B\u306E\u91CD\u3055 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.nlsEnv.name=NLS\u74B0\u5883 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.nlsEnv.description=\u3053\u306E\u4ED5\u4E8B\u306ENLS\u74B0\u5883 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.source.name=\u30BD\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.source.description=\u30BD\u30FC\u30B9\u30B0\u30ED\u30FC\u30D0\u30EB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u8B58\u5225\u5B50 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.numberOfDestinations.name=\u76EE\u7684\u5730\u306E\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.numberOfDestinations.description= +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.destinationOwner.name=\u884C\u304D\u5148\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.destinationOwner.description=\u5B9B\u5148\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u6240\u6709\u8005\uFF08\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\uFF09\u305D\u306E\u4ED6NULL +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.destination.name=\u5148 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.destination.description=\u3053\u306E\u30B8\u30E7\u30D6\u304C\u5B9F\u884C\u3055\u308C\u308B\u5B9B\u5148 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.credentialOwner.name=\u30AF\u30EC\u30C7\u30F3\u30B7\u30E3\u30EB\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.credentialOwner.description=\u30ED\u30B0\u30A4\u30F3\u8CC7\u683C\u8A3C\u660E\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.credentialName.name=\u8CC7\u683C\u60C5\u5831\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.credentialName.description=\u30ED\u30B0\u30A4\u30F3\u8CC7\u683C\u8A3C\u660E\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.instanceId.name=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9ID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.instanceId.description=\u30B8\u30E7\u30D6\u3092\u5B9F\u884C\u3059\u308B\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306E\u30E6\u30FC\u30B6\u30FC\u8981\u6C42\u30B8\u30E7\u30D6\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.deferredDrop.name=\u9045\u5EF6\u30C9\u30ED\u30C3\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.deferredDrop.description=\u30E6\u30FC\u30B6\u30FC\u306E\u8981\u6C42\u306B\u3088\u308A\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u3053\u306E\u30B8\u30E7\u30D6\u3092\u524A\u9664\u3059\u308B\u304B\u3069\u3046\u304B\u3002 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.allowRunsInRestrictedMode.name=\u5236\u9650\u4ED8\u304D\u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3092\u8A31\u53EF\u3059\u308B +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.allowRunsInRestrictedMode.description= +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob.description.description=\u4ED5\u4E8B\u306B\u95A2\u3059\u308B\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJobArgument.name.name=\u5F15\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJobArgument.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJobArgument.position.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJobArgument.value.name=\u5024 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJobArgument.anyDataValue.name=\u5024\uFF08\u4EFB\u610F\u306E\u30C7\u30FC\u30BF\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJobArgument.outArgument.name=\u30A2\u30A6\u30C8\u5F15\u6570 + +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.programName.name=\u30D7\u30ED\u30B0\u30E9\u30E0\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.programType.name=\u30D7\u30ED\u30B0\u30E9\u30E0\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.programAction.name=\u30D7\u30ED\u30B0\u30E9\u30E0\u30A2\u30AF\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.numberOfArguments.name=\u5F15\u6570\u306E\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.enabled.name=\u6709\u52B9 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.detached.name=\u5206\u96E2\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.scheduleLimit.name=\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5236\u9650 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.priority.name=\u512A\u5148 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.weight.name=\u91CD\u91CF +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.maxRuns.name=\u6700\u5927\u30E9\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.maxFailures.name=\u6700\u5927\u5931\u6557 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.maxRunDuration.name=\u6700\u5927\u5B9F\u884C\u6642\u9593 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.nlsEnv.name=NLS\u74B0\u5883 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgram.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgramArgument.name.name=\u5F15\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgramArgument.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgramArgument.defaultValue.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgramArgument.position.name=\u30DD\u30B8\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgramArgument.metadataAttribute.name=\u30E1\u30BF\u5C5E\u6027 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgramArgument.defaultAnyDataValue.name=\u30C7\u30D5\u30A9\u30EB\u30C8\uFF08\u4EFB\u610F\u306E\u30C7\u30FC\u30BF\uFF09 +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerProgramArgument.outArgument.name=\u30A2\u30A6\u30C8\u5F15\u6570 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivTable.name.name=\u7279\u6A29 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivTable.grantor.name=\u30B0\u30E9\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivTable.grantee.name=\u88AB\u96C7\u7528\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivTable.grantable.name=\u6388\u4E0E\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivTable.hierarchy.name=\u968E\u5C64 +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivUser.user.name=\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.OraclePrivUser.defaultRole.name=\u30C7\u30D5\u30A9\u30EB\u30C8 += +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.lockType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.lockType.description=Oracle\u30A8\u30F3\u30AD\u30E5\u30FC\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.modeHeld.name=\u958B\u50AC\u6E08\u307F +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.modeHeld.description=\u4FDD\u7559\u30E2\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.modeRequest.name=\u8981\u6C42 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.modeRequest.description=\u30E2\u30FC\u30C9\u8981\u6C42 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.lastConvert.name=\u5909\u63DB +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.lastConvert.description=\u6700\u5F8C\u306E\u5909\u63DB +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.blocking.name=\u30D6\u30ED\u30C3\u30AD\u30F3\u30B0 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.blocking.description= +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.ids.name=ID +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLockItem.ids.description=ID1 / ID2 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.wait_sid.name=\u5F85\u3064 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.wait_sid.description=SID\u3092\u5F85\u3064 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.wait_pid.name=W.Pid +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.wait_pid.description=PID\u3092\u5F85\u3064 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.hold_sid.name=\u30DB\u30FC\u30EB\u30C9 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.hold_sid.description=\u30DB\u30FC\u30EB\u30C9SID +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.wait_user.name=\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.wait_user.description=\u30E6\u30FC\u30B6\u30FC\u3092\u5F85\u3064 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.oname.name=Obj +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.oname.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.owner.description=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u6240\u6709\u8005 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.row_lock.name=\u884C +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.row_lock.description=\u884C\u30ED\u30C3\u30AF +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.hold_pid.name=H.Pid +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.hold_pid.description=\u30DB\u30FC\u30EB\u30C9PID +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.hold_user.name=H.\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.hold_user.description=\u30E6\u30FC\u30B6\u30FC\u3092\u4FDD\u7559 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.ltime.name=\u30ED\u30B0\u30AA\u30F3 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.ltime.description=\u30ED\u30B0\u30AA\u30F3\u6642\u9593 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.status.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.status.description=\u30B9\u30C6\u30FC\u30BF\u30B9\u540D +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.event.name=\u30A4\u30D9\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.oracle.model.lock.OracleLock.event.description=\u5F85\u6A5F\u30A4\u30D9\u30F3\u30C8\u540D diff --git a/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/OSGI-INF/l10n/bundle_ru.properties b/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/OSGI-INF/l10n/bundle_ru.properties index e85f19e31eeebe3162571d1bc17e0e983a4fe9be..5073edbf128537fbfd1485e43beec5b20cba0117 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/OSGI-INF/l10n/bundle_ru.properties +++ b/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/OSGI-INF/l10n/bundle_ru.properties @@ -192,7 +192,8 @@ meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.name.description=\u0418\u043C meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.authentication.name=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.authentication.description=\u041E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u0435\u0442, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u0434\u043B\u044F \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0440\u043E\u043B\u0438 meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.name.name=\u0418\u043C\u044F -meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.id.name=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u043B\u044C\u0437-\u043B\u044F +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.id.name=ID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.schemaUser.name=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.schema.name=\u0421\u0445\u0435\u043C\u0430 meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.segmentType.name=\u0422\u0438\u043F meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.partitionName.name=\u0420\u0430\u0437\u0434\u0435\u043B diff --git a/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/pom.xml index bc248b51ce2bddcc56e46ceccf3ee5aa6be89fa5..0294fef0d5d334069a2a9f9dde29dd0f5f596d38 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.oracle.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.oracle.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.phoenix.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.phoenix.nls/META-INF/MANIFEST.MF index c44e8f7a82f9d19640527ec30bb445aec17619b0..247c6fb212a7382a1b943e41817ac78e438f64b7 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.phoenix.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.phoenix.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.phoenix.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.phoenix Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.phoenix.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.phoenix.nls/pom.xml index 073f56af6127c5633ed6f01017ec2ebbb8c43296..1f106803f6f9fede3e0663d2f89157622a91048b 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.phoenix.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.phoenix.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.phoenix.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/META-INF/MANIFEST.MF index e22b2a1f3747b32a7183c0ab946bc490504d9655..f5602ab283dd388e24dd182ed925c58ac2eb194d 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.postgresql.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.postgresql Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..00b9812c16910dbe7a6ae76f5dd4b1a7df93bbdb --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,580 @@ +Bundle-Vendor =JKISS +Bundle-Name =DBeaver PostgreSQL Support + +dialog.connection.header=PostgreSQL\u306E\u63A5\u7D9A\u8A2D\u5B9A + +# editor #= +editor.session_manager.name=\u30BB\u30C3\u30B7\u30E7\u30F3\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC +editor.lock_manager.name=\u30ED\u30C3\u30AF\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC + +# meta #= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canBackward.name=\u5F8C\u65B9\u306B\u30B9\u30AD\u30E3\u30F3\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canBackward.description=\u30A2\u30AF\u30BB\u30B9\u65B9\u5F0F\u306F\u5F8C\u65B9\u30B9\u30AD\u30E3\u30F3\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.handler.name=\u30CF\u30F3\u30C9\u30E9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.handler.description=\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u306B\u95A2\u3059\u308B\u60C5\u5831\u3092\u63D0\u4F9B\u3059\u308B\u30CF\u30F3\u30C9\u30E9\u95A2\u6570\u306EOID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.type.description=\u73FE\u5728\u3001\u5E38\u306B\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30A2\u30AF\u30BB\u30B9\u30E1\u30BD\u30C3\u30C9\u3092\u793A\u3059\u305F\u3081\u306Bi\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u5C06\u6765\u4ED6\u306E\u5024\u304C\u8A31\u53EF\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 + +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canMultiCol.name=\u30DE\u30EB\u30C1\u30AB\u30E9\u30FC\u3067\u304D\u307E\u3059 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canMultiCol.description=\u30A2\u30AF\u30BB\u30B9\u30E1\u30BD\u30C3\u30C9\u306F\u30DE\u30EB\u30C1\u30AB\u30E9\u30E0\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canOrder.name=\u6CE8\u6587\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canOrder.description=\u30A2\u30AF\u30BB\u30B9\u30E1\u30BD\u30C3\u30C9\u306F\u3001\u9806\u5E8F\u4ED8\u304D\u30B9\u30AD\u30E3\u30F3\u3092\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u4ED8\u304D\u5217\u306E\u5024\u3067\u30BD\u30FC\u30C8\u3059\u308B\u3053\u3068\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canOrderByOp.name=\u6CE8\u6587\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059op +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canOrderByOp.description=\u30A2\u30AF\u30BB\u30B9\u30E1\u30BD\u30C3\u30C9\u306F\u3001\u9806\u5E8F\u4ED8\u304D\u30B9\u30AD\u30E3\u30F3\u3092\u3001\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u4ED8\u304D\u5217\u306E\u6F14\u7B97\u5B50\u306E\u7D50\u679C\u3067\u30BD\u30FC\u30C8\u3057\u3066\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canUnique.name=\u30E6\u30CB\u30FC\u30AF\u306B\u3067\u304D\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.canUnique.description=\u30A2\u30AF\u30BB\u30B9\u30E1\u30BD\u30C3\u30C9\u306F\u4E00\u610F\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.clusterable.name=\u30AF\u30E9\u30B9\u30BF\u5316\u53EF\u80FD +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.clusterable.description=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u30AF\u30E9\u30B9\u30BF\u5316\u3067\u304D\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.name.description=\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u306E\u540D\u524D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.objectId.description=\u884C\u8B58\u5225\u5B50 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.operatorStrategies.name=\u6226\u7565 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.operatorStrategies.description=\u3053\u306E\u30A2\u30AF\u30BB\u30B9\u65B9\u5F0F\u306E\u30AA\u30DA\u30EC\u30FC\u30BF\u6226\u7565\u306E\u6570\u3002\u30A2\u30AF\u30BB\u30B9\u65B9\u5F0F\u306B\u56FA\u5B9A\u3055\u308C\u305F\u30AA\u30DA\u30EC\u30FC\u30BF\u6226\u7565\u304C\u306A\u3044\u5834\u5408\u306F\u30BC\u30ED +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.optionalKey.name=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30AD\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.optionalKey.description=\u30A2\u30AF\u30BB\u30B9\u30E1\u30BD\u30C3\u30C9\u306F\u3001\u6700\u521D\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5217\u306B\u5BFE\u3059\u308B\u5236\u7D04\u306A\u3057\u3067\u30B9\u30AD\u30E3\u30F3\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.predLocks.name=Pred\u30ED\u30C3\u30AF +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.predLocks.description=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u7D22\u5F15\u306F\u3001\u304D\u3081\u7D30\u304B\u306A\u8FF0\u8A9E\u30ED\u30C3\u30AF\u3092\u7BA1\u7406\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.searchArray.name=\u691C\u7D22\u914D\u5217 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.searchArray.description=\u30A2\u30AF\u30BB\u30B9\u30E1\u30BD\u30C3\u30C9\u304CScalarArrayOpExpr\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.searchNulls.name=\u30CC\u30EB\u3092\u691C\u7D22 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.searchNulls.description=\u30A2\u30AF\u30BB\u30B9\u30E1\u30BD\u30C3\u30C9\u306FIS NULL / NOT NULL\u691C\u7D22\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.storage.name=\u30B9\u30C8\u30EC\u30FC\u30B8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.storage.description=\u30B9\u30C8\u30EC\u30FC\u30B8\u30C7\u30FC\u30BF\u578B\u3092\u5217\u30C7\u30FC\u30BF\u578B\u3068\u7570\u306A\u308B\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u3059\u304B\uFF1F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.supportRoutines.name=\u30B5\u30DD\u30FC\u30C8\u30EB\u30FC\u30C1\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAccessMethod.supportRoutines.description=\u3053\u306E\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u306E\u30B5\u30DD\u30FC\u30C8\u30EB\u30FC\u30C1\u30F3\u306E\u6570 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.dataType.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.dataType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.defaultValue.name=\u30C7\u30D5\u30A9\u30EB\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.defaultValue.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.description.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.maxLength.name=\u9577\u3055 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.maxLength.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.precision.name=\u7CBE\u5EA6 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.precision.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.required.name=\u30CC\u30EB\u3067\u306A\u3044 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.required.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.scale.name=\u898F\u6A21 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.scale.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.identity.name=\u8EAB\u5143 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.identity.description=\u5C5E\u6027ID\uFF08\u5E38\u306B\u307E\u305F\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\uFF09 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.local.name=\u5730\u5143 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.local.description=\u3053\u306E\u5217\u306F\u3001\u30EA\u30EC\u30FC\u30B7\u30E7\u30F3\u5185\u3067\u30ED\u30FC\u30AB\u30EB\u306B\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002\u5217\u3092\u30ED\u30FC\u30AB\u30EB\u3067\u5B9A\u7FA9\u3057\u3001\u540C\u6642\u306B\u7D99\u627F\u3067\u304D\u308B\u3053\u3068\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.objectId.description=\u5C5E\u6027\u4E00\u610F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.bypassRls.name=\u30D0\u30A4\u30D1\u30B9\u30FB\u30EA\u30FC\u30EB +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.bypassRls.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.canLogin.name=\u30ED\u30B0\u30A4\u30F3\u3067\u304D\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.canLogin.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.connLimit.name=\u30B3\u30FC\u30F3\u30EA\u30DF\u30C3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.connLimit.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.createDatabase.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u4F5C\u6210 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.createDatabase.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.createRole.name=\u5F79\u5272\u306E\u4F5C\u6210 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.createRole.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.inherit.name=\u7D99\u627F\u3059\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.inherit.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.objectId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.password.name=\u30D1\u30B9\u30EF\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.password.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.replication.name=\u8907\u88FD +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.replication.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.superUser.name=\u30B9\u30FC\u30D1\u30FC\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.superUser.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.validUntil.name=\u307E\u3067\u6709\u52B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.validUntil.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRoleMember.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRoleMember.member.name=\u5F79\u5272 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRoleMember.grantor.name=\u30B0\u30E9\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRoleMember.adminOption.name=\u7BA1\u7406\u30AA\u30D7\u30B7\u30E7\u30F3 + +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreCharset.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreCharset.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreCollation.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreCollation.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreCollation.schema.name=\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreCollation.schema.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.align.name=\u6574\u5217 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.align.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.analyzeFunc.name=Analyze Func +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.analyzeFunc.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.arrayDelimiter.name=\u914D\u5217\u30C7\u30EA\u30DF\u30BF +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.arrayDelimiter.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.arrayDim.name=\u914D\u5217\u304C\u8584\u6697\u3044 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.arrayDim.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.arrayItemType.name=\u914D\u5217\u30A2\u30A4\u30C6\u30E0\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.arrayItemType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.baseType.name=\u30D9\u30FC\u30B9\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.baseType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.byValue.name=\u4FA1\u5024\u306B\u3088\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.byValue.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.collationId.name=\u7167\u5408ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.collationId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.defaultValue.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.defaultValue.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.elementType.name=\u8981\u7D20\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.elementType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.inputFunc.name=\u5165\u529BFunc +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.inputFunc.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.modInFunc.name=Mod In Func +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.modInFunc.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.modOutFunc.name=Mod Out Func +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.modOutFunc.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.notNull.name=\u30CC\u30EB\u3067\u306A\u3044 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.notNull.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.outputFunc.name=\u51FA\u529B\u95A2\u6570 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.outputFunc.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.owner.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.preferred.name=\u597D\u307E\u3057\u3044 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.preferred.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.receiveFunc.name=\u53D7\u4FE1\u30D5\u30A1\u30F3\u30AF\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.receiveFunc.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.sendFunc.name=Func\u3092\u9001\u4FE1 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.sendFunc.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.storage.name=\u30B9\u30C8\u30EC\u30FC\u30B8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.storage.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.typeCategory.name=\u30BF\u30A4\u30D7\u30AB\u30C6\u30B4\u30EA +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.typeCategory.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.typeMod.name=\u30BF\u30A4\u30D7Mod +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.typeMod.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.typeType.name=\u30BF\u30A4\u30D7\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.typeType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.enumValues.name=\u5217\u6319\u578B\u306E\u5024 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDataType.enumValues.description=\u53EF\u80FD\u306A\u5217\u6319\u5024\u306E\u30EA\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.allowConnect.name=\u63A5\u7D9A\u3092\u8A31\u53EF\u3059\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.allowConnect.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.collate.name=\u7167\u5408 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.collate.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.connectionLimit.name=\u63A5\u7D9A\u5236\u9650 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.connectionLimit.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.ctype.name=Ctype +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.ctype.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.dBA.name=DBA +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.dBA.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.defaultEncoding.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.defaultEncoding.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.defaultTablespace.name=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u8868\u9818\u57DF +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.defaultTablespace.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.template.name=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.template.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.schema.name=\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.schema.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.version.name=\u30D0\u30FC\u30B8\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.version.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.handler.name=\u30CF\u30F3\u30C9\u30E9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.handler.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.options.name=\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.options.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.owner.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.validator.name=\u30D0\u30EA\u30C7\u30FC\u30BF\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.validator.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.foreignDataWrapper.name=\u5916\u90E8\u30C7\u30FC\u30BF\u30E9\u30C3\u30D1\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.foreignDataWrapper.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.options.name=\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.options.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.owner.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.type.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.version.name=\u30D0\u30FC\u30B8\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignServer.version.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreGenericTrigger.manipulation.name=\u64CD\u4F5C +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreGenericTrigger.manipulation.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreGenericTrigger.objectDefinitionText.name=\u30BD\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreGenericTrigger.objectDefinitionText.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreGenericTrigger.orientation.name=\u30AA\u30EA\u30A8\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreGenericTrigger.orientation.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreGenericTrigger.timing.name=\u30BF\u30A4\u30DF\u30F3\u30B0 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreGenericTrigger.timing.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.accessMethod.name=\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.accessMethod.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.checkXMin.name=X Min\u3092\u30C1\u30A7\u30C3\u30AF\u3059\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.checkXMin.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.clustered.name=\u30AF\u30E9\u30B9\u30BF\u5316\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.clustered.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.description.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.exclusion.name=\u9664\u5916 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.exclusion.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.immediate.name=\u5373\u6642 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.immediate.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.primary.name=\u4E00\u6B21 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.primary.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.ready.name=\u6E96\u5099\u5B8C\u4E86 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.ready.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.unique.name=\u30E6\u30CB\u30FC\u30AF +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.unique.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.valid.name=\u6709\u52B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.valid.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.tablespace.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.tablespace.description=\u7D22\u5F15\u8868\u30B9\u30DA\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.objectDefinitionText.name=DDL +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndex.objectDefinitionText.description=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5B9A\u7FA9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.ascending.name=\u4E0A\u6607 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.ascending.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.nullable.name=Nullable +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.nullable.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.ordinalPosition.name=\u5E8F\u5217 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.ordinalPosition.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.tableColumn.name=\u30C6\u30FC\u30D6\u30EB\u306E\u5217 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.tableColumn.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreIndexColumn.operatorClass.name=\u30AA\u30DA\u30EC\u30FC\u30BF\u30AF\u30E9\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.handlerId.name=\u30CF\u30F3\u30C9\u30E9\u30FCID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.handlerId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.inlineHandlerId.name=\u30A4\u30F3\u30E9\u30A4\u30F3\u30CF\u30F3\u30C9\u30E9ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.inlineHandlerId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.objectId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.ownerId.name=\u30AA\u30FC\u30CA\u30FCID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.ownerId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.trusted.name=\u4FE1\u983C\u3067\u304D\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.trusted.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.userDefined.name=\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u306E +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.userDefined.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.validatorId.name=\u30D0\u30EA\u30C7\u30FC\u30BF\u30FCID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreLanguage.validatorId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.aggregate.name=\u96C6\u8A08 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.aggregate.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.body.name=\u4F53 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.body.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.estRows.name=Est\u884C +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.estRows.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.execCost.name=\u30A8\u30B0\u30BC\u30AF\u30C6\u30A3\u30D6\u30B3\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.execCost.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.language.name=\u8A00\u8A9E +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.language.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.leakproof.name=\u6F0F\u308C\u9632\u6B62 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.leakproof.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.objectDefinitionText.name=\u30BD\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.objectDefinitionText.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.owner.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.procTransform.name=Proc\u5909\u63DB +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.procTransform.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.procVolatile.name=Proc Volatile +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.procVolatile.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.returnType.name=\u623B\u308A\u5024\u306E\u578B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.returnType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.returnsSet.name=\u8FD4\u54C1\u30BB\u30C3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.returnsSet.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.securityDefiner.name=\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u5B9A\u7FA9\u8005 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.securityDefiner.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.strict.name=\u53B3\u683C +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.strict.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.varArrayType.name=\u30D0\u30FC\u30EB\u914D\u5217\u578B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.varArrayType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.window.name=\u7A93 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure.window.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedureParameter.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedureParameter.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedureParameter.ordinalPosition.name=\u5E8F\u5217 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedureParameter.ordinalPosition.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedureParameter.parameterKind.name=\u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u7A2E\u985E +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedureParameter.parameterKind.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedureParameter.parameterType.name=\u30D1\u30E9\u30E1\u30FC\u30BF\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedureParameter.parameterType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.dataTypes.name=\u30C7\u30FC\u30BF\u578B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.dataTypes.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.database.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.database.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.description.description=\u30B9\u30AD\u30FC\u30DE\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.owner.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.incrementBy.name=\u5897\u52A0\u5358\u4F4D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.incrementBy.description=\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u5024\u3092\u30A4\u30F3\u30AF\u30EA\u30E1\u30F3\u30C8\u3059\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.lastValue.name=\u6700\u5F8C\u306E\u5024 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.lastValue.description=\u30C7\u30A3\u30B9\u30AF\u306B\u66F8\u304D\u8FBC\u307E\u308C\u305F\u6700\u5F8C\u306E\u30B7\u30FC\u30B1\u30F3\u30B9\u5024\ n\u30AD\u30E3\u30C3\u30B7\u30E5\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u3053\u306E\u5024\u306F\u30B7\u30FC\u30B1\u30F3\u30B9\u304B\u3089\u6E21\u3055\u308C\u305F\u6700\u5F8C\u306E\u5024\u3088\u308A\u3082\u5927\u304D\u304F\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\ n\u30B7\u30FC\u30B1\u30F3\u30B9\u304C\u307E\u3060\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306F\u30CC\u30EB\u3067\u3059\u3002\ n\u307E\u305F\u3001\u30B7\u30FC\u30B1\u30F3\u30B9\u306B\u5BFE\u3057\u3066USAGE\u6A29\u9650\u307E\u305F\u306FSELECT\u6A29\u9650\u3092\u6301\u3063\u3066\u3044\u308B\u5834\u5408\u3001\u5024\u306FNULL\u3067\u3059\u3002 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.maxValue.name=\u6700\u5927\u5024 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.maxValue.description=\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u6700\u5927\u5024 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.minValue.name=\u6700\u5C0F\u5024 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.minValue.description=\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u6700\u5C0F\u5024 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.cycled.name=\u30B5\u30A4\u30AF\u30EB +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence$AdditionalInfo.cycled.description="\u30B7\u30FC\u30B1\u30F3\u30B9\u30B5\u30A4\u30AF\u30EB\u306E\u6709\u7121" +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.hasOids.name=OID\u3092\u6301\u3063\u3066\u3044\u308B +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.hasOids.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.subTables.name=\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.subTables.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.superTables.name=\u30B9\u30FC\u30D1\u30FC\u30C6\u30FC\u30D6\u30EB +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.superTables.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.tablespace.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.tablespace.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.objectId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.owner.description=\u30C6\u30FC\u30D6\u30EB\u6240\u6709\u8005\uFF08\u4F5C\u6210\u8005\uFF09 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.description.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintBase.objectDefinitionText.name=DDL +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintBase.objectDefinitionText.description=\u5236\u7D04\u5B9A\u7FA9\u30C6\u30AD\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintBase.description.name=\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintBase.description.description=\u5236\u7D04\u306E\u30B3\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraint.source.name=\u5F0F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraint.source.description=CHECK\u5236\u7D04\u306E\u5F0F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintColumn.attribute.name=\u5C5E\u6027 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintColumn.attribute.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintColumn.ordinalPosition.name=\u5E8F\u5217 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraintColumn.ordinalPosition.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeign.foreignOptions.name=\u5916\u56FD\u306E\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeign.foreignOptions.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeign.foreignServer.name=\u5916\u90E8\u30B5\u30FC\u30D0\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeign.foreignServer.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey.associatedEntity.name=\u95A2\u9023\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey.associatedEntity.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey.deleteRule.name=\u30EB\u30FC\u30EB\u306E\u524A\u9664 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey.deleteRule.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey.referencedConstraint.name=\u53C2\u7167\u3055\u308C\u308B\u5236\u7D04 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey.referencedConstraint.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey.updateRule.name=\u30EB\u30FC\u30EB\u306E\u66F4\u65B0 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey.updateRule.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKeyColumn.referencedColumn.name=\u53C2\u7167\u5217 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKeyColumn.referencedColumn.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableInheritance.associatedEntity.name=\u95A2\u9023\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableInheritance.associatedEntity.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableInheritance.sequenceNum.name=\u30B7\u30FC\u30B1\u30F3\u30B9\u756A\u53F7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableInheritance.sequenceNum.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.rowCount.name=\u884C\u6570 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.rowCount.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.rowCountEstimate.name=\u884C\u6570\u898B\u7A4D\u3082\u308A +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.rowCountEstimate.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.diskSpace.name=\u30C7\u30A3\u30B9\u30AF\u30B9\u30DA\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.diskSpace.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.partKeys.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u30AD\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.partKeys.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.options.name=\u30AA\u30D7\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.options.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.owner.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.enabledState.name=\u6709\u52B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.enabledState.description=session_replication_role\u30E2\u30FC\u30C9\u3067\u30C8\u30EA\u30AC\u30FC\u304C\u8D77\u52D5\u3059\u308B\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3002 O +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.actionTiming.name=\u30BF\u30A4\u30DF\u30F3\u30B0 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.manipulationTypes.name=\u64CD\u4F5C +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.type.description=\u30C8\u30EA\u30AC\u30FC\u30BF\u30A4\u30D7\uFF08ROW\u307E\u305F\u306FSTATEMENT\uFF09 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.columnRefs.name=\u5217 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.columnRefs.description=\u8868\u306E\u5217\u540D\uFF08\u30C8\u30EA\u30AC\u30FC\u304C\u5217\u56FA\u6709\u306E\u5834\u5408\uFF09 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.objectDefinitionText.name=\u30BD\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.objectDefinitionText.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.objectId.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.table.name=\u8868 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.table.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.whenExpression.name=\u5F0F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.whenExpression.description=\u30C8\u30EA\u30AC\u30FC\u306EWHEN\u6761\u4EF6\u306E\u5F0F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.function.name=\u95A2\u6570 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger.function.description=\u547C\u3073\u51FA\u3055\u308C\u308B\u95A2\u6570 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreView.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreView.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreView.objectDefinitionText.name=\u30BD\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreView.objectDefinitionText.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreViewBase.name.name=\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreViewBase.name.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreViewBase.objectDefinitionText.name=\u30BD\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreViewBase.objectDefinitionText.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.cost.name=\u30B3\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.cost.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.entity.name=\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3 +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.entity.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.nodeType.name=\u30CE\u30FC\u30C9\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.nodeType.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.actualRows.name=\u884C +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.totalTime.name=\u6642\u9593 +meta.org.jkiss.dbeaver.ext.postgresql.model.plan.PostgrePlanNode.condition.name=\u8ABF\u5B50 +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.appName.name=\u30A2\u30D7\u30EA\u540D +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.appName.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.backendStart.name=\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u306E\u958B\u59CB +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.backendStart.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.briefQuery.name=\u7C21\u5358\u306A\u8CEA\u554F +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.briefQuery.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.clientHost.name=\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30DB\u30B9\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.clientHost.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.clientPort.name=\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30DD\u30FC\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.clientPort.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.db.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.db.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.pid.name=PID +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.pid.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.queryStart.name=\u30AF\u30A8\u30EA\u306E\u958B\u59CB +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.queryStart.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.state.name=\u72B6\u614B +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.state.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.stateChange.name=\u5DDE\u306E\u5909\u66F4 +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.stateChange.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.user.name=\u30E6\u30FC\u30B6\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.user.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.xactStart.name=Xact Start +meta.org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession.xactStart.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.wait_pid.name=PID\u3092\u5F85\u3064 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.wait_pid.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.wait_user.name=\u30E6\u30FC\u30B6\u30FC\u3092\u5F85\u3064 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.wait_user.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.hold_pid.name=\u30DB\u30FC\u30EB\u30C9PID +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.hold_pid.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.hold_user.name=\u30E6\u30FC\u30B6\u30FC\u3092\u4FDD\u7559 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.hold_user.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.wait_statement.name=\u5F85\u6A5F\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.wait_statement.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.statement_in.name=\u4FDD\u7559\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLock.statement_in.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.mode.name=\u30E2\u30FC\u30C9 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.mode.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.pid.name=PID +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.pid.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.detail.name=\u30DA\u30FC\u30B8/ Tpl +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.detail.description=\u30DA\u30FC\u30B8/\u30BF\u30D7\u30EB +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.datname.name=\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.datname.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.locktype.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.locktype.description= +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.relation.name=Rel\u3002 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.relation.description=\u95A2\u4FC2 +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.tid.name=TID +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.tid.description=\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3ID +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.granted.name=+ +meta.org.jkiss.dbeaver.ext.postgresql.model.lock.PostgreLockItem.granted.description=\u4ED8\u4E0E\u3055\u308C\u305F +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorClass.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorClass.default.name=\u30C7\u30D5\u30A9\u30EB\u30C8 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorClass.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorClass.keyType.name=\u30AD\u30FC\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorClass.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorClass.namespace.name=\u30B9\u30AD\u30FC\u30DE +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorClass.family.name=\u5BB6\u65CF +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorFamily.objectId.name=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorFamily.owner.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreOperatorFamily.namespace.name=\u30B9\u30AD\u30FC\u30DE + +# data source provider #= +datasource.postgresql.description=PostgreSQL JDBC\u30B3\u30CD\u30AF\u30BF + +tree.accessMethod.node.name=\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5 +tree.accessMethods.node.name=\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5 +tree.administer.node.name=\u7BA1\u7406\u8005 +tree.attribute.node.name=\u5C5E\u6027 +tree.attributes.node.name=\u5C5E\u6027 +tree.collation.node.name=\u7167\u5408 +tree.collations.node.name=\u7167\u5408 +tree.column.node.name=\u30AB\u30E9\u30E0 +tree.columns.node.name=\u5217 +tree.constraint.columns.node.name=\u5236\u7D04\u5217 +tree.constraint.node.name=\u5236\u7D04 +tree.constraints.node.name=\u5236\u7D04 +tree.database.node.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +tree.databases.node.name=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 +tree.encoding.node.name=\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +tree.encodings.node.name=\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 +tree.extension.node.name=\u62E1\u5F35 +tree.extensions.node.name=\u62E1\u5F35\u6A5F\u80FD +tree.foreignDataWrapper.node.name=\u5916\u90E8\u30C7\u30FC\u30BF\u30E9\u30C3\u30D1\u30FC +tree.foreignDataWrappers.node.name=\u5916\u90E8\u30C7\u30FC\u30BF\u30E9\u30C3\u30D1\u30FC +tree.foreignServer.node.name=\u5916\u90E8\u30B5\u30FC\u30D0\u30FC +tree.foreignServers.node.name=\u5916\u90E8\u30B5\u30FC\u30D0\u30FC +tree.foreign_key.node.name=\u5916\u90E8\u30AD\u30FC +tree.foreign_key_columns.node.name=\u5916\u90E8\u30AD\u30FC\u5217 +tree.foreign_keys.node.name=\u5916\u90E8\u30AD\u30FC +tree.index.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +tree.index_columns.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5217 +tree.indexes.node.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 +tree.information.node.name=\u30B7\u30B9\u30C6\u30E0\u60C5\u5831 +tree.language.node.name=\u8A00\u8A9E +tree.languages.node.name=\u8A00\u8A9E +tree.mview.node.name=\u30DE\u30C6\u30EA\u30A2\u30E9\u30A4\u30BA\u30C9\u30FB\u30D3\u30E5\u30FC +tree.mviews.node.name=\u30DE\u30C6\u30EA\u30A2\u30E9\u30A4\u30BA\u30C9\u30FB\u30D3\u30E5\u30FC +tree.package.node.name=\u30D1\u30C3\u30B1\u30FC\u30B8 +tree.packages.node.name=\u30D1\u30C3\u30B1\u30FC\u30B8 +tree.procedure.node.name=\u95A2\u6570 +tree.procedure_columns.node.name=\u95A2\u6570\u306E\u30D1\u30E9\u30E1\u30FC\u30BF +tree.procedures.node.name=\u6A5F\u80FD +tree.reference.node.name=\u53C2\u7167 +tree.reference_columns.node.name=\u53C2\u7167\u5217 +tree.references.node.name=\u53C2\u8003\u6587\u732E +tree.partition.node.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.partition_columns.node.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5217 +tree.partitions.node.name=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3 +tree.tablechildren.node.name=\u5B50\u4F9B\u7528\u30C6\u30FC\u30D6\u30EB +tree.tablechildren_columns.node.name=\u5B50\u30C6\u30FC\u30D6\u30EB\u306E\u5217 +tree.rules.node.name=\u30EB\u30FC\u30EB +tree.rules_columns.node.name=\u30EB\u30FC\u30EB\u306E\u5217 +tree.schema.node.name=\u30B9\u30AD\u30FC\u30DE +tree.schemas.node.name=\u30B9\u30AD\u30FC\u30DE +tree.sequence.node.name=\u30B7\u30FC\u30B1\u30F3\u30B9 +tree.sequences.node.name=\u30B7\u30FC\u30B1\u30F3\u30B9 +tree.sessions.node.name=\u30BB\u30C3\u30B7\u30E7\u30F3 +tree.locks.node.name=\u30ED\u30C3\u30AF +tree.table.node.name=\u8868 +tree.tables.node.name=\u30C6\u30FC\u30D6\u30EB +tree.tablespace.node.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +tree.tablespaces.node.name=\u30C6\u30FC\u30D6\u30EB\u30B9\u30DA\u30FC\u30B9 +tree.trigger.node.name=\u5F15\u304D\u91D1 +tree.triggers.node.name=\u30C8\u30EA\u30AC\u30FC +tree.tview.node.name=\u30D3\u30E5\u30FC +tree.tviews.node.name=\u30D3\u30E5\u30FC +tree.type.node.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 +tree.types.node.name=\u30C7\u30FC\u30BF\u578B +tree.role.node.name=\u5F79\u5272 +tree.roles.node.name=\u30ED\u30FC\u30EB +tree.role.member.node.name=\u5F79\u5272 +tree.role.members.node.name=\u30E1\u30F3\u30D0\u30FC +tree.role.belong.node.name=\u5F79\u5272 +tree.role.belongs.node.name=\u30ED\u30FC\u30EB +tree.opClasses.node.name=\u30AA\u30DA\u30EC\u30FC\u30BF\u30AF\u30E9\u30B9 +tree.opClass.node.name=\u6F14\u7B97\u5B50\u30AF\u30E9\u30B9 +tree.opFamilies.node.name=\u30AA\u30DA\u30EC\u30FC\u30BF\u30D5\u30A1\u30DF\u30EA\u30FC +tree.opFamily.node.name=\u30AA\u30DA\u30EC\u30FC\u30BF\u30D5\u30A1\u30DF\u30EA\u30FC + +driver.postgresql.description=PostgreSQL\u6A19\u6E96\u30C9\u30E9\u30A4\u30D0 + +# data type provider #= +provider.data.type.postgresql.name=PostgreSQL\u30C7\u30FC\u30BF\u578B\u30D7\u30ED\u30D0\u30A4\u30C0 +provider.data.type.postgresql.description=PostgreSQL\u30C7\u30FC\u30BF\u578B\u30D7\u30ED\u30D0\u30A4\u30C0 + +# database editor #= +db.editor.role.permission.name=\u30A2\u30AF\u30BB\u30B9\u8A31\u53EF +db.editor.role.permission.description=\u30A2\u30AF\u30BB\u30B9\u8A31\u53EF +db.editor.table.permission.name=\u30A2\u30AF\u30BB\u30B9\u8A31\u53EF +db.editor.table.permission.description=\u30A2\u30AF\u30BB\u30B9\u8A31\u53EF +db.editor.source.name=\u30BD\u30FC\u30B9 +db.editor.source.description=\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9 +db.editor.ddl.name=DDL +db.editor.ddl.description=DDL + +# network handler #= +handler.ssl.name=SSL +handler.ssl.description=\u30BB\u30AD\u30E5\u30A2\u30BD\u30B1\u30C3\u30C8\u30EC\u30A4\u30E4\u30FC + +# menu tools #= +tools.backup.db.name=\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7 +tools.backup.db.description=\u8F38\u51FA\u3059\u308B +tools.restore.db.name=\u30EA\u30B9\u30C8\u30A2 +tools.restore.db.description=\u30A4\u30F3\u30DD\u30FC\u30C8 +tools.execute.script.name=\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B +tools.execute.script.description=\u30CD\u30A4\u30C6\u30A3\u30D6\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u3067\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B +tools.analyze.name=\u5206\u6790\u3059\u308B +tools.analyze.description=\u30C6\u30FC\u30D6\u30EB\u306E\u5206\u6790 +tools.vacuum.name=\u771F\u7A7A +tools.vacuum.description=\u771F\u7A7A\u30C6\u30FC\u30D6\u30EB +tools.truncate.name=\u5207\u308A\u8A70\u3081\u308B +tools.truncate.description=\u30C6\u30FC\u30D6\u30EB\u3092\u5207\u308A\u6368\u3066\u308B diff --git a/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/pom.xml index b0b1d209c6eb7c91c451e905b71b6f8d627f3c8c..64fa5e0ab4997d8b833604560f574f1f9886c7de 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.postgresql.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.postgresql.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.sample.database.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.sample.database.nls/META-INF/MANIFEST.MF index 84e150a485be4ecec18a52c73a534e7cd4443b13..71fe97d0ccc5f308e3a9f5561eb580fb580e3352 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.sample.database.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.sample.database.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.sample.database.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.sample.database Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.sample.database.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.sample.database.nls/pom.xml index 680f32ea22ed56cf9a1f250115b9b861c48f5cd0..24455d6a3beb538d031a92cd3d5a4f079cdcb7a1 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.sample.database.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.sample.database.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.sample.database.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.sqlite.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.sqlite.nls/META-INF/MANIFEST.MF index 7315a0af605d49f5ad7c28899f702910d1007e3b..835b30508c02dc1123d68a444165391bec9cffb2 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.sqlite.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.sqlite.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.sqlite.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.sqlite Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.sqlite.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.sqlite.nls/pom.xml index d3f8e2f1fdc7b171b5a6ed391e2a88f4f07dc574..7ef15c1400d361aef838169c685a1e346a92e576 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.sqlite.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.sqlite.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.sqlite.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.teradata.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.teradata.nls/META-INF/MANIFEST.MF index 986067e2ff700b6df3ba5deded1a84be6c38f6a8..df1766d0fec8298e0016475e1b5e08cb8a765e65 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.teradata.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.teradata.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.teradata.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.teradata Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.teradata.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.teradata.nls/pom.xml index bc15be5aab1efdbbcdea79997ba6316728c2a977..225ffbd69f6e94d0dac6a509218e531afa6b365c 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.teradata.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.teradata.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.teradata.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.ui.locks.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.ui.locks.nls/META-INF/MANIFEST.MF index d6c093fb8518d239ac79c07d204237c3dd7c9fb9..47c66dc6805754f7535ee01a12d458e7369f420f 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.ui.locks.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.ui.locks.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.ui.locks.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.ui.locks Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.ui.locks.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.ui.locks.nls/pom.xml index e939dcda224e46d0667f1cc81914ff5ca389e7f1..6a46c49f0325eae40ac47b7bb6a3ec1c68fb12d8 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.ui.locks.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.ui.locks.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.ui.locks.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.ui.svg.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.ui.svg.nls/META-INF/MANIFEST.MF index a8064e165cf7356dc7675c2aef657d1e81b085f6..30344ffcb9003c220ced2812f5ab6e6b5a833345 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.ui.svg.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.ui.svg.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.ui.svg.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.ui.svg Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.ui.svg.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.ui.svg.nls/pom.xml index 6c63cc362650ff02b1949e57ffa09a14576b26db..ab531434f783f52aa48acd03594f1791af6df323 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.ui.svg.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.ui.svg.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.ui.svg.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.vertica.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.vertica.nls/META-INF/MANIFEST.MF index f8d0a44b5b524acfa4709555720ffd8dd1ab69cd..7e5087c5f83de10b331ff25cb7eafd4603879bcc 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.vertica.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.vertica.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.vertica.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.vertica Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.vertica.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.vertica.nls/pom.xml index 2db1b5fe77e377016adcd6b9fde309b40f669cc4..35331382705c250006f71c5d0394f968c309a0f2 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.vertica.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.vertica.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.vertica.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ext.wmi.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ext.wmi.nls/META-INF/MANIFEST.MF index 499cfefb4cb90274c54f7afb8624f7ec425e6cef..67588487414115ed6b5bc3c7ed9fc7fc8719c523 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.wmi.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ext.wmi.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.wmi.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ext.wmi Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ext.wmi.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ext.wmi.nls/pom.xml index 1227899b0f48a72416235e7510b3d1d9b1eec700..6bef1bb24521aeca158ede707235a115d38b21b5 100644 --- a/nls/bundles/org.jkiss.dbeaver.ext.wmi.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ext.wmi.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ext.wmi.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.model.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.model.nls/META-INF/MANIFEST.MF index 859224c7e36c7617f21495d4b0d3b9a0adf27ae3..fdc4278c4166495af3e62d7afbcf6c4080b075c8 100644 --- a/nls/bundles/org.jkiss.dbeaver.model.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.model.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.model.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.model Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.model.nls/OSGI-INF/l10n/bundle_ja.properties b/nls/bundles/org.jkiss.dbeaver.model.nls/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000000000000000000000000000000000000..d2e983cffd8cbdae8058408675118511bba33acd --- /dev/null +++ b/nls/bundles/org.jkiss.dbeaver.model.nls/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,77 @@ +# Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + +Bundle-Vendor = JKISS +Bundle-Name = DBeaver Model + +extension-point.org.jkiss.dbeaver.application.name =DBeaver\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3 + +meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=\u8868 +meta.org.jkiss.dbeaver.model.data.DBDValueLocator.uniqueKey.name=\u30AD\u30FC +meta.org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTable.name.name=\u30C6\u30FC\u30D6\u30EB\u540D +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.name.name=\u5217\u540D +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.typeName.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.maxLength.name=\u9577\u3055 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.maxLength.description=\u30D0\u30A4\u30C8\u5358\u4F4D\u306E\u30C7\u30FC\u30BF\u578B\u306E\u9577\u3055\u3002\u6570\u5024\u578B\u306E\u5834\u5408\u306F\u3001\u6570\u5024\u7CBE\u5EA6\uFF08\u6700\u5927\u6841\u6570\uFF09\u3068\u540C\u3058\u3067\u3059\u3002 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.required.name=\u30CC\u30EB\u3067\u306A\u3044 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.defaultValue.name=\u30C7\u30D5\u30A9\u30EB\u30C8 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableConstraint.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableForeignKey.referencedTable.name=\u53C2\u7167\u30C6\u30FC\u30D6\u30EB +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableForeignKey.deleteRule.name=\u524A\u9664\u6642 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableForeignKey.updateRule.name=\u66F4\u65B0\u6642 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableForeignKey.referencedConstraint.name=Ref\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableIndex.name.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u540D +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableIndex.table.name=\u8868 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableIndex.indexType.name=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableObject.table.name=\u8868 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.name.description=\u30BD\u30FC\u30B9\u5217\u540D +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.label.name=\u30E9\u30D9\u30EB +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.label.description=\u5217\u30E9\u30D9\u30EB\uFF08\u540D\u524D\u304CSQL\u30AF\u30A8\u30EA\u3067\u518D\u5B9A\u7FA9\u3055\u308C\u305F\u5834\u5408\u3001\u540D\u524D\u3068\u7570\u306A\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\uFF09 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.typeName.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.ordinalPosition.name=\uFF03 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.ordinalPosition.description=\u5217\u306E\u9806\u5E8F\u306E\u4F4D\u7F6E +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.required.name=\u30CC\u30EB\u3067\u306A\u3044 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.autoGenerated.name=\u30AA\u30FC\u30C8 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.autoGenerated.description=\u81EA\u52D5\u751F\u6210\uFF08\u81EA\u52D5\u30A4\u30F3\u30AF\u30EA\u30E1\u30F3\u30C8\uFF09\u5217 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.entityName.name=\u30C6\u30FC\u30D6\u30EB\u540D +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.scale.name=\u898F\u6A21 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.precision.name=\u7CBE\u5EA6 +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.maxLength.name=\u6700\u5927\u9577 +meta.org.jkiss.dbeaver.model.impl.local.LocalResultSetColumn.ordinalPosition.name=\uFF03 +meta.org.jkiss.dbeaver.model.impl.local.LocalResultSetColumn.label.name=\u30E9\u30D9\u30EB +meta.org.jkiss.dbeaver.model.impl.local.LocalResultSetColumn.typeName.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.model.impl.local.LocalResultSetColumn.entityName.name=\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3 +meta.org.jkiss.dbeaver.model.impl.local.LocalResultSetColumn.autoGenerated.name=\u751F\u6210\u3055\u308C\u305F + +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.name.name=\u5217\u540D +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.typeName.name=\u30C7\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.ordinalPosition.name=\uFF03 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.maxLength.name=\u9577\u3055 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.maxLength.description=\u5217\u306E\u6700\u5927\u9577 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.required.name=Null\u3067\u306A\u3044 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.scale.name=\u898F\u6A21 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.scale.description=\u6570\u5024\u30C7\u30FC\u30BF\u578B\u306E\u30B9\u30B1\u30FC\u30EB\uFF08\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570\u306E\u6700\u5927\u5024\uFF09 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.precision.name=\u7CBE\u5EA6 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractAttribute.autoGenerated.name=\u81EA\u52D5\u751F\u6210 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractProcedure.name.name=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u540D +meta.org.jkiss.dbeaver.model.impl.struct.AbstractProcedure.description.name=\u30D7\u30ED\u30B7\u30FC\u30B8\u30E3\u306E\u8AAC\u660E +meta.org.jkiss.dbeaver.model.impl.struct.AbstractTable.name.name=\u30C6\u30FC\u30D6\u30EB\u540D +meta.org.jkiss.dbeaver.model.impl.struct.AbstractTableConstraint.name.name=\u540D +meta.org.jkiss.dbeaver.model.impl.struct.AbstractTableConstraint.table.name=\u30AA\u30FC\u30CA\u30FC +meta.org.jkiss.dbeaver.model.impl.struct.AbstractTableConstraint.type.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractTrigger.name.name=\u30C8\u30EA\u30AC\u30FC\u540D +meta.org.jkiss.dbeaver.model.impl.struct.AbstractTrigger.actionTiming.name=\u30BF\u30A4\u30DF\u30F3\u30B0 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractTrigger.manipulationType.name=\u30BF\u30A4\u30D7 +meta.org.jkiss.dbeaver.model.impl.struct.AbstractTrigger.description.name=\u30C8\u30EA\u30AC\u306E\u8AAC\u660E +meta.org.jkiss.dbeaver.model.navigator.DBNRoot.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.navigator.DBNDatabaseObject.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.navigator.DBNProjectDatabases.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.navigator.DBNLocalFolder.name.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.navigator.DBNResource.nodeName.name=\u540D\u524D +meta.org.jkiss.dbeaver.model.navigator.DBNResource.resourcePath.name=\u30D1\u30B9 +meta.org.jkiss.dbeaver.model.navigator.DBNResource.resourceLocation.name=\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3 +meta.org.jkiss.dbeaver.model.navigator.DBNResource.resourceLastModified.name=\u6700\u7D42\u66F4\u65B0\u65E5 +meta.org.jkiss.dbeaver.model.navigator.DBNResource.resourceSize.name=\u30B5\u30A4\u30BA diff --git a/nls/bundles/org.jkiss.dbeaver.model.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.model.nls/pom.xml index 8451dca38680c5ff422973594dd17438a4d40fa6..c86e3cfbbfc258724c108ebc83b2d62f0cdb983d 100644 --- a/nls/bundles/org.jkiss.dbeaver.model.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.model.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.model.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.runtime.ide.core.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.runtime.ide.core.nls/META-INF/MANIFEST.MF index 7320c80a4fd8e8a1d50c22ae1ee9035014173ac1..27f052537417a963465cb57b0f8959445d08f08e 100644 --- a/nls/bundles/org.jkiss.dbeaver.runtime.ide.core.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.runtime.ide.core.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.runtime.ide.core.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.runtime.ide.core Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.runtime.ide.core.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.runtime.ide.core.nls/pom.xml index e6a1c3240fc904db60be6cc1cf281e02a3828efd..b92f0b115d9cdb6dbf7d88c62d34c43a89adb93f 100644 --- a/nls/bundles/org.jkiss.dbeaver.runtime.ide.core.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.runtime.ide.core.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.runtime.ide.core.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.dbeaver.ui.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.dbeaver.ui.nls/META-INF/MANIFEST.MF index 970fcbd3c551fc4c2fa1dad2e4291f60f396caf1..1f82d8e179a2079d4b42d0e38e31bb808883aeb1 100644 --- a/nls/bundles/org.jkiss.dbeaver.ui.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.dbeaver.ui.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ui.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.dbeaver.ui Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.dbeaver.ui.nls/pom.xml b/nls/bundles/org.jkiss.dbeaver.ui.nls/pom.xml index 5ba383f9c0ec6cc571717d34b52cf681ddb02d84..3ce8dbba552408cd087d07d6653d8ff51b745426 100644 --- a/nls/bundles/org.jkiss.dbeaver.ui.nls/pom.xml +++ b/nls/bundles/org.jkiss.dbeaver.ui.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.dbeaver.ui.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.utils.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.utils.nls/META-INF/MANIFEST.MF index fa6a815429e19ed3216253424ef7d599b430e838..ee3e68c17844d18ccf86d1e3e4f6bf894eee4786 100644 --- a/nls/bundles/org.jkiss.utils.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.utils.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.utils.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.utils Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.utils.nls/pom.xml b/nls/bundles/org.jkiss.utils.nls/pom.xml index 6bded91d47ad6901cc394d9d6fb65147e4e1eeb4..02525a4828e167d63414738776d5784eea6ce02e 100644 --- a/nls/bundles/org.jkiss.utils.nls/pom.xml +++ b/nls/bundles/org.jkiss.utils.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.utils.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/bundles/org.jkiss.wmi.nls/META-INF/MANIFEST.MF b/nls/bundles/org.jkiss.wmi.nls/META-INF/MANIFEST.MF index 2774d7f53dca03c3694a3c8da13af64633309670..5479373cafe4edfcd3a906f2ef15f996d415dc7f 100644 --- a/nls/bundles/org.jkiss.wmi.nls/META-INF/MANIFEST.MF +++ b/nls/bundles/org.jkiss.wmi.nls/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.wmi.nls -Bundle-Version: 1.0.16 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.17 +Bundle-Release-Date: 20180604 Fragment-Host: org.jkiss.wmi Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: JKISS diff --git a/nls/bundles/org.jkiss.wmi.nls/pom.xml b/nls/bundles/org.jkiss.wmi.nls/pom.xml index 55dc64be2dc99ce9551d2da59c26bc33cdc4c1ec..cc079921f9a411019e92e3399b579ba783c4540e 100644 --- a/nls/bundles/org.jkiss.wmi.nls/pom.xml +++ b/nls/bundles/org.jkiss.wmi.nls/pom.xml @@ -9,6 +9,6 @@ ../../../ org.jkiss.wmi.nls - 1.0.16 + 1.0.17 eclipse-plugin diff --git a/nls/features/org.jkiss.dbeaver.ce.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ce.nls.feature/feature.xml index 1f01626843c55e14f76638e635856222f2cad4a0..378a77255dbfc0b4fcc123096c514c9217952683 100644 --- a/nls/features/org.jkiss.dbeaver.ce.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ce.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ce.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ce.nls.feature/pom.xml index 40038d4e62efd8e5e2596bf35b9863c3b65e0c6b..d3894c8a25126a08f93b57e4cbfb0668eb2204b2 100644 --- a/nls/features/org.jkiss.dbeaver.ce.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ce.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ce.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ext.db2.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ext.db2.nls.feature/feature.xml index 846848995965bde88a5afea0bf5d8f4ec9f2750f..619d3bf71bb480313c078e676b2a8b9d3cfb9c6d 100644 --- a/nls/features/org.jkiss.dbeaver.ext.db2.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ext.db2.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ext.db2.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ext.db2.nls.feature/pom.xml index 7806d2d914dbe2011cef032b91ac51507bd41322..b410741ba373d801b1e4142ecdfc12664759265b 100644 --- a/nls/features/org.jkiss.dbeaver.ext.db2.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ext.db2.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ext.db2.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ext.exasol.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ext.exasol.nls.feature/feature.xml index 2c82ebb82479a2ecc2975ad6eaecea922d10b14e..06a92bc61695e1cfd923d829aee98c1a63bba0a3 100644 --- a/nls/features/org.jkiss.dbeaver.ext.exasol.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ext.exasol.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ext.exasol.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ext.exasol.nls.feature/pom.xml index 56a475158ae7c8e1f869f2ef7c76996e14532e64..41adf44a5455e3d62b2b2eaf9b448a957868b371 100644 --- a/nls/features/org.jkiss.dbeaver.ext.exasol.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ext.exasol.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ext.exasol.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ext.generic.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ext.generic.nls.feature/feature.xml index 254e3168e3df9434596a5b1362893cf84654f81f..9431eb2dcfb35ac91afd34e0c9c9f11250e87d3c 100644 --- a/nls/features/org.jkiss.dbeaver.ext.generic.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ext.generic.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ext.generic.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ext.generic.nls.feature/pom.xml index 86858274f7056640d9b3b2e211e1f2627700b54c..f5bcb15ebb24a4227178ea9c5130e5d7ceb3dc10 100644 --- a/nls/features/org.jkiss.dbeaver.ext.generic.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ext.generic.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ext.generic.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ext.mysql.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ext.mysql.nls.feature/feature.xml index b9295f3959f27bbd2c33c24a270f58f572ff9ece..89574372eeab039e5a410708011f3631d026d1c7 100644 --- a/nls/features/org.jkiss.dbeaver.ext.mysql.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ext.mysql.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ext.mysql.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ext.mysql.nls.feature/pom.xml index 05320f39957aa475d57ce11ecb29efe570dfb206..0957376a384c770853f1e1bed01f17641e9f3bbb 100644 --- a/nls/features/org.jkiss.dbeaver.ext.mysql.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ext.mysql.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ext.mysql.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ext.office.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ext.office.nls.feature/feature.xml index 4cf1e625a101e7a7a1962cd333b6e629e958fc41..361197fd9d9feb93dfcff41924b6ceea699de407 100644 --- a/nls/features/org.jkiss.dbeaver.ext.office.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ext.office.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ext.office.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ext.office.nls.feature/pom.xml index a973f009d9bd2016fd1508532c529fc28e2627bc..37115605583fbb9334a31a4ff51b2d73eefd12e6 100644 --- a/nls/features/org.jkiss.dbeaver.ext.office.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ext.office.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ext.office.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ext.oracle.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ext.oracle.nls.feature/feature.xml index 61bc6ba9e459a6ffc2b1bd29ff743619223dee10..d3bff7fb12005a1a02adb3d1aacffb2f7da7c078 100644 --- a/nls/features/org.jkiss.dbeaver.ext.oracle.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ext.oracle.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ext.oracle.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ext.oracle.nls.feature/pom.xml index 55023aef7376f0f05d63c6a082df25e05b59a2e9..87dbb0d1bc8a368cc61b5bc4715ae12aa59c3fdc 100644 --- a/nls/features/org.jkiss.dbeaver.ext.oracle.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ext.oracle.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ext.oracle.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ext.ui.svg.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ext.ui.svg.nls.feature/feature.xml index 62b827774344e38d728d9e415b1a22baf863296b..dbf2ba4ee94747ba4d7bd3de5287b3f0b5f5cdb6 100644 --- a/nls/features/org.jkiss.dbeaver.ext.ui.svg.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ext.ui.svg.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ext.ui.svg.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ext.ui.svg.nls.feature/pom.xml index 99004ba2231c88dd2771ba12ba02e59e38615747..db940f05b6f3c6f17fa93e0e351a0aaf8ab4d4be 100644 --- a/nls/features/org.jkiss.dbeaver.ext.ui.svg.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ext.ui.svg.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ext.ui.svg.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ext.wmi.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ext.wmi.nls.feature/feature.xml index 87afd4c45ae63e7cc6c04cca8480d098991e947d..3e4a8925b4ca308616ff1315129424559cf174fb 100644 --- a/nls/features/org.jkiss.dbeaver.ext.wmi.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ext.wmi.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ext.wmi.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ext.wmi.nls.feature/pom.xml index 4038ebb5e7639819f7c8a9aa729cde623e5a4749..fe745de0f21ec4fd65eae14bd32ef6543988f04b 100644 --- a/nls/features/org.jkiss.dbeaver.ext.wmi.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ext.wmi.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ext.wmi.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.ide.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.ide.nls.feature/feature.xml index 5a2a80deeed4321b67b5bdd6e726f169c61f30ad..50094333a3fce47549cfa67580b4795b3c195ed7 100644 --- a/nls/features/org.jkiss.dbeaver.ide.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.ide.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.ide.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.ide.nls.feature/pom.xml index a9856d7b9dde99dbdd054ef2f878e835896b4a3a..df16368d0958f80e7672705ce58978df5ab12643 100644 --- a/nls/features/org.jkiss.dbeaver.ide.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.ide.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.ide.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.rcp.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.rcp.nls.feature/feature.xml index 6536b29b060926be312da64c3004cc413491d3d9..c6ff5a370e8af17e29d4139368e13b4f3e9b3bce 100644 --- a/nls/features/org.jkiss.dbeaver.rcp.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.rcp.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.rcp.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.rcp.nls.feature/pom.xml index 7e11dec974670a025d200815aa39d2a1dd3d023c..6ccf6b8ad8d50b64e150810338433193c5394299 100644 --- a/nls/features/org.jkiss.dbeaver.rcp.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.rcp.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.rcp.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.runtime.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.runtime.nls.feature/feature.xml index eea6477bc17f46741c7d4f1316f6c3e989a8157f..20a78a26ed0eb337d033726c39237c3eb38c38ce 100644 --- a/nls/features/org.jkiss.dbeaver.runtime.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.runtime.nls.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/nls/features/org.jkiss.dbeaver.runtime.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.runtime.nls.feature/pom.xml index 8dad19cdf895952b1cee0517a4ae0c7d7a26c40e..1b7192bc3b40386d103510f74c295e3e9548158f 100644 --- a/nls/features/org.jkiss.dbeaver.runtime.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.runtime.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.runtime.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/nls/features/org.jkiss.dbeaver.standalone.nls.feature/feature.xml b/nls/features/org.jkiss.dbeaver.standalone.nls.feature/feature.xml index 7286e549f0e74120b660d931ce684de49910ab5a..5b02fce9c5356a3d614c0fe6bcd98061677873db 100644 --- a/nls/features/org.jkiss.dbeaver.standalone.nls.feature/feature.xml +++ b/nls/features/org.jkiss.dbeaver.standalone.nls.feature/feature.xml @@ -2,7 +2,7 @@ @@ -40,6 +40,7 @@ + --> diff --git a/nls/features/org.jkiss.dbeaver.standalone.nls.feature/pom.xml b/nls/features/org.jkiss.dbeaver.standalone.nls.feature/pom.xml index 27948eabe8aec8e91bbc7e76040cf2f6387139b8..a05edbaf5f916a0b8e9630805636c4bf72696fdd 100644 --- a/nls/features/org.jkiss.dbeaver.standalone.nls.feature/pom.xml +++ b/nls/features/org.jkiss.dbeaver.standalone.nls.feature/pom.xml @@ -10,7 +10,7 @@ ../../../ org.jkiss.dbeaver.standalone.nls.feature - 1.0.16 + 1.0.17 eclipse-feature diff --git a/plugins/org.jkiss.dbeaver.core.application/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.core.application/META-INF/MANIFEST.MF index fbca9777158e45ac0d5a960522a3653ace5ee15e..19d6b7b135f69d0df6514781808b37d8b4d19292 100644 --- a/plugins/org.jkiss.dbeaver.core.application/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.core.application/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.core.application;singleton:=true -Bundle-Version: 5.0.6 -Bundle-Release-Date: 20180528 +Bundle-Version: 5.1.0 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.jkiss.dbeaver.core.application Bundle-ClassPath: . diff --git a/plugins/org.jkiss.dbeaver.core.application/pom.xml b/plugins/org.jkiss.dbeaver.core.application/pom.xml index 237b1dbd6617dd55eae9c13c47326c546d06cdd4..7e24a0d057b0478a9ee906905522ea79603b9301 100644 --- a/plugins/org.jkiss.dbeaver.core.application/pom.xml +++ b/plugins/org.jkiss.dbeaver.core.application/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.core.application - 5.0.6 + 5.1.0 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchAdvisor.java b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchAdvisor.java index e85a194b596f48c3e24772c8753b964f067e2600..cc8e80ac57107b5ee1ae0908bf29fc4d22eb9c9f 100644 --- a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchAdvisor.java +++ b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchAdvisor.java @@ -69,7 +69,7 @@ public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor { MYLYN_PREF_PAGE_ID, // Disable Install/Update - "org.eclipse.equinox.internal.p2.ui.sdk.ProvisioningPreferencePage", + //"org.eclipse.equinox.internal.p2.ui.sdk.ProvisioningPreferencePage", // Team preferences - not needed in CE "org.eclipse.team.ui.TeamPreferences", diff --git a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchWindowAdvisor.java b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchWindowAdvisor.java index c799019453fc182a9f1ead1fff0f0bc9f27825e1..c9da6e25f1c9f6cd17ef4deb53c513bcad5b26b0 100644 --- a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchWindowAdvisor.java +++ b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/ApplicationWorkbenchWindowAdvisor.java @@ -40,11 +40,11 @@ import org.eclipse.ui.part.MarkerTransfer; import org.eclipse.ui.part.ResourceTransfer; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.app.DBPProjectListener; import org.jkiss.dbeaver.registry.ProjectRegistry; import org.jkiss.dbeaver.registry.WorkbenchHandlerRegistry; import org.jkiss.dbeaver.ui.IWorkbenchWindowInitializer; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.perspective.AbstractPageListener; import org.jkiss.dbeaver.utils.GeneralUtils; @@ -233,7 +233,7 @@ public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor im if (isRunWorkbenchInitializers()) { // Open New Connection wizard - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { for (IWorkbenchWindowInitializer wwInit : WorkbenchHandlerRegistry.getInstance().getWorkbenchWindowInitializers()) { diff --git a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/DBeaverApplication.java b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/DBeaverApplication.java index ecb66ad7b44f228cf01c531204d5f232676b5114..ce4bfe7ac8d43a815ea9c84aea0f77c4d0439ad6 100644 --- a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/DBeaverApplication.java +++ b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/DBeaverApplication.java @@ -141,6 +141,8 @@ public class DBeaverApplication implements IApplication, DBPApplication { initDebugWriter(); log.debug(GeneralUtils.getProductTitle() + " is starting"); //$NON-NLS-1$ + log.debug("OS: " + System.getProperty(StandardConstants.ENV_OS_NAME) + " " + System.getProperty(StandardConstants.ENV_OS_VERSION) + " (" + System.getProperty(StandardConstants.ENV_OS_ARCH) + ")"); + log.debug("Java version: " + System.getProperty(StandardConstants.ENV_JAVA_VERSION) + " by " + System.getProperty(StandardConstants.ENV_JAVA_VENDOR) + " (" + System.getProperty(StandardConstants.ENV_JAVA_ARCH) + "bit)"); log.debug("Install path: '" + SystemVariablesResolver.getInstallPath() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ log.debug("Instance path: '" + instanceLoc.getURL() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ log.debug("Memory available " + (runtime.totalMemory() / (1024 * 1024)) + "Mb/" + (runtime.maxMemory() / (1024 * 1024)) + "Mb"); diff --git a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/rpc/DBeaverInstanceServer.java b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/rpc/DBeaverInstanceServer.java index 86366f4d1fa76bf76997a27ec15bba61019e1b04..deac96e5b8a35607dcf6b6154d4b27f1c1510d1b 100644 --- a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/rpc/DBeaverInstanceServer.java +++ b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/rpc/DBeaverInstanceServer.java @@ -22,7 +22,6 @@ import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceFolder; import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration; import org.jkiss.dbeaver.registry.DataSourceDescriptor; @@ -31,6 +30,7 @@ import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.registry.driver.DriverDescriptor; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.ActionUtils; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler; import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.sql.handlers.OpenHandler; @@ -69,9 +69,9 @@ public class DBeaverInstanceServer implements IInstanceController { public void openExternalFiles(final String[] fileNames) { log.debug("Open external file(s) [" + Arrays.toString(fileNames) + "]"); - final IWorkbenchWindow window = DBeaverUI.getActiveWorkbenchWindow(); + final IWorkbenchWindow window = UIUtils.getActiveWorkbenchWindow(); final Shell shell = window.getShell(); - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { for (String filePath : fileNames) { File file = new File(filePath); if (file.exists()) { @@ -89,7 +89,7 @@ public class DBeaverInstanceServer implements IInstanceController { public void openDatabaseConnection(String connectionSpec) throws RemoteException { log.debug("Open external database connection [" + connectionSpec + "]"); - final IWorkbenchWindow workbenchWindow = DBeaverUI.getActiveWorkbenchWindow(); + final IWorkbenchWindow workbenchWindow = UIUtils.getActiveWorkbenchWindow(); DataSourceRegistry dsRegistry = DBeaverCore.getInstance().getProjectRegistry().getActiveDataSourceRegistry(); String driverName = null, url = null, host = null, port = null, server = null, database = null, user = null, password = null; @@ -184,7 +184,7 @@ public class DBeaverInstanceServer implements IInstanceController { if (openConsole) { DataSourceDescriptor finalDs = ds; - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { OpenHandler.openSQLConsole(workbenchWindow, finalDs, finalDs.getName(), ""); workbenchWindow.getShell().forceActive(); }); @@ -218,8 +218,8 @@ public class DBeaverInstanceServer implements IInstanceController { public void closeAllEditors() { log.debug("Close all open editor tabs"); - DBeaverUI.syncExec(() -> { - IWorkbenchWindow window = DBeaverUI.getActiveWorkbenchWindow(); + UIUtils.syncExec(() -> { + IWorkbenchWindow window = UIUtils.getActiveWorkbenchWindow(); if (window != null) { IWorkbenchPage page = window.getActivePage(); if (page != null) { @@ -234,7 +234,7 @@ public class DBeaverInstanceServer implements IInstanceController { log.debug("Execute workbench command " + commandId); try { - ActionUtils.runCommand(commandId, DBeaverUI.getActiveWorkbenchWindow()); + ActionUtils.runCommand(commandId, UIUtils.getActiveWorkbenchWindow()); } catch (Exception e) { throw new RemoteException("Can't execute command '" + commandId + "'", e); } diff --git a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/update/DBeaverVersionChecker.java b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/update/DBeaverVersionChecker.java index ac983fc0618ac011bf0c0a332384f51aef7558d9..2a97a69d247c1b17f2acbe8301e11172d910d50a 100644 --- a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/update/DBeaverVersionChecker.java +++ b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/update/DBeaverVersionChecker.java @@ -22,10 +22,10 @@ import org.eclipse.core.runtime.Status; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.AbstractJob; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.registry.updater.VersionDescriptor; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.utils.GeneralUtils; import java.io.IOException; @@ -102,11 +102,11 @@ public class DBeaverVersionChecker extends AbstractJob { private void showUpdaterDialog(final VersionDescriptor versionDescriptor) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { VersionUpdateDialog dialog = new VersionUpdateDialog( - DBeaverUI.getActiveWorkbenchShell(), + UIUtils.getActiveWorkbenchShell(), versionDescriptor); dialog.open(); } diff --git a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/update/VersionUpdateDialog.java b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/update/VersionUpdateDialog.java index c3014fa17cc5ed0e034a72a386973cfa98b8c855..8223fadf52b50e9a1d04c606961aae3f62c68311 100644 --- a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/update/VersionUpdateDialog.java +++ b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/update/VersionUpdateDialog.java @@ -29,7 +29,6 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.registry.updater.VersionDescriptor; import org.jkiss.dbeaver.ui.ActionUtils; import org.jkiss.dbeaver.ui.UIUtils; @@ -143,7 +142,7 @@ class VersionUpdateDialog extends Dialog { UIUtils.launchProgram(newVersion.getBaseURL()); } } else if (buttonId == IDialogConstants.PROCEED_ID) { - final IWorkbenchWindow window = DBeaverUI.getActiveWorkbenchWindow(); + final IWorkbenchWindow window = UIUtils.getActiveWorkbenchWindow(); CheckForUpdateAction.activateStandardHandler(window); try { ActionUtils.runCommand(CheckForUpdateAction.P2_UPDATE_COMMAND, PlatformUI.getWorkbench().getActiveWorkbenchWindow()); diff --git a/plugins/org.jkiss.dbeaver.core.eclipse/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.core.eclipse/META-INF/MANIFEST.MF index 0b5ad765e74473a7a60ab8852842927cd3ae3e56..28a6546def2ef35e0c6011064919616a097746fe 100644 --- a/plugins/org.jkiss.dbeaver.core.eclipse/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.core.eclipse/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.core.eclipse;singleton:=true -Bundle-Version: 5.0.6 -Bundle-Release-Date: 20180528 +Bundle-Version: 5.1.0 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.ui, org.jkiss.dbeaver.core, diff --git a/plugins/org.jkiss.dbeaver.core.eclipse/pom.xml b/plugins/org.jkiss.dbeaver.core.eclipse/pom.xml index 0637a545a22f7b6178414a054f6510d2f016e624..b38a30feacbdfbcd6a29cd61e399e8811088022c 100644 --- a/plugins/org.jkiss.dbeaver.core.eclipse/pom.xml +++ b/plugins/org.jkiss.dbeaver.core.eclipse/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.core.eclipse - 5.0.6 + 5.1.0 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF index abfb3fd5a879e15255c647286025d41a7cad9de2..9fcc3a6bf6e9afeacc676b1ef84c84067c40a8fe 100644 --- a/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.core;singleton:=true -Bundle-Version: 5.0.6 -Bundle-Release-Date: 20180528 +Bundle-Version: 5.1.0 +Bundle-Release-Date: 20180604 Bundle-Activator: org.jkiss.dbeaver.core.DBeaverActivator Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.8 @@ -48,7 +48,6 @@ Export-Package: org.jkiss.dbeaver, org.jkiss.dbeaver.ui.controls.lightgrid, org.jkiss.dbeaver.ui.controls.querylog, org.jkiss.dbeaver.ui.controls.resultset, - org.jkiss.dbeaver.ui.controls.resultset.panel, org.jkiss.dbeaver.ui.controls.resultset.plaintext, org.jkiss.dbeaver.ui.controls.resultset.spreadsheet, org.jkiss.dbeaver.ui.controls.resultset.view, diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties index e401e79fc8a2f6d56b48bcc329434dbbdead5cf1..667b2ed9a5f50b8176d0ccea5edea5e1cf26d417 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties @@ -45,6 +45,7 @@ language.fr.label=French language.de.label=German language.es.label=Spanish language.it.label=Italian +language.ja.label=Japanese editor.sql.name=SQL Editor editor.folder.name=Folder Editor @@ -626,9 +627,14 @@ handler.socks_proxy.label = SOCKS Proxy presentation.spreadsheet.label = Grid presentation.plaintext.label = Text -panel.value-view.label = Value viewer -panel.column-aggregate.label = Aggregate columns +panel.value-view.label = Value +panel.value-view.description = Results cell value viewer +panel.column-aggregate.label = Calc +panel.column-aggregate.description = Result cells calculations (SUM, MAX, AVG, etc) panel.results-metadata.label = Metadata +panel.results-metadata.description = ResultSet metadata description +panel.results-grouping.label = Grouping +panel.results-grouping.description = Results grouping (GROUP BY) search.result.view.page.metadata.result.name = Database Metadata Search Result diff --git a/plugins/org.jkiss.dbeaver.core/build.properties b/plugins/org.jkiss.dbeaver.core/build.properties index 6d41f04ce0cb4d63d8fa9638b05cde9d0fb4f9e9..41c57f35ff4e44df2f4fa88a3d427fccbdc1117b 100644 --- a/plugins/org.jkiss.dbeaver.core/build.properties +++ b/plugins/org.jkiss.dbeaver.core/build.properties @@ -3,11 +3,11 @@ output.. = target/classes/ bin.includes = .,\ META-INF/,\ OSGI-INF/,\ + icons/,\ about.ini,\ about.properties,\ css/,\ docs/,\ - icons/,\ plugin.xml,\ templates/,\ schema/ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort.png b/plugins/org.jkiss.dbeaver.core/icons/misc/sort.png deleted file mode 100644 index beb40f720d796577edeb530ccc00009a65a55ccb..0000000000000000000000000000000000000000 Binary files a/plugins/org.jkiss.dbeaver.core/icons/misc/sort.png and /dev/null differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort@2x.png b/plugins/org.jkiss.dbeaver.core/icons/misc/sort@2x.png deleted file mode 100644 index a94e206b938cea8224ea7ec10206099cd4d2e0fe..0000000000000000000000000000000000000000 Binary files a/plugins/org.jkiss.dbeaver.core/icons/misc/sort@2x.png and /dev/null differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_decrease.png b/plugins/org.jkiss.dbeaver.core/icons/misc/sort_decrease.png deleted file mode 100644 index f3f84eeb8eb9996cc6ca769139cc2aeed89962f7..0000000000000000000000000000000000000000 Binary files a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_decrease.png and /dev/null differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_decrease@2x.png b/plugins/org.jkiss.dbeaver.core/icons/misc/sort_decrease@2x.png deleted file mode 100644 index fe3e0ebf2561cf505318cc7864d667f09ebc70ca..0000000000000000000000000000000000000000 Binary files a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_decrease@2x.png and /dev/null differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_increase.png b/plugins/org.jkiss.dbeaver.core/icons/misc/sort_increase.png deleted file mode 100644 index 9278a851fb4cd9e363e8193c67a66f40a6cb2dbd..0000000000000000000000000000000000000000 Binary files a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_increase.png and /dev/null differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_increase@2x.png b/plugins/org.jkiss.dbeaver.core/icons/misc/sort_increase@2x.png deleted file mode 100644 index 829ce6e94b6e2909d2bbd471fbc8658f180f76c4..0000000000000000000000000000000000000000 Binary files a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_increase@2x.png and /dev/null differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_unknown.png b/plugins/org.jkiss.dbeaver.core/icons/misc/sort_unknown.png deleted file mode 100644 index a71b6b78693a86cd8917a2e557f31d02819c33ae..0000000000000000000000000000000000000000 Binary files a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_unknown.png and /dev/null differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_unknown@2x.png b/plugins/org.jkiss.dbeaver.core/icons/misc/sort_unknown@2x.png deleted file mode 100644 index 5821799224fefec1b27cbd7d53852440771b91d0..0000000000000000000000000000000000000000 Binary files a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_unknown@2x.png and /dev/null differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/readme.txt b/plugins/org.jkiss.dbeaver.core/icons/readme.txt new file mode 100644 index 0000000000000000000000000000000000000000..67993a678304f1a99f3433b46951558296772438 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/icons/readme.txt @@ -0,0 +1,4 @@ +Some icons left here for backward compatibility. + +Editor icons pathes are saved in workbench so we should keep them here for a few more versions. +Search icons can't be located in different plugins - Eclipse limitation. diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_text.png b/plugins/org.jkiss.dbeaver.core/icons/search/data.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_text.png rename to plugins/org.jkiss.dbeaver.core/icons/search/data.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_text@2x.png b/plugins/org.jkiss.dbeaver.core/icons/search/data@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_text@2x.png rename to plugins/org.jkiss.dbeaver.core/icons/search/data@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/databases.png b/plugins/org.jkiss.dbeaver.core/icons/search/metadata.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/databases.png rename to plugins/org.jkiss.dbeaver.core/icons/search/metadata.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/databases@2x.png b/plugins/org.jkiss.dbeaver.core/icons/search/metadata@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/databases@2x.png rename to plugins/org.jkiss.dbeaver.core/icons/search/metadata@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/plugin.xml b/plugins/org.jkiss.dbeaver.core/plugin.xml index 284e696f11f35c3ed6fa0d387d0b69224b6b7ae7..417b79526210de664d88321f4edc79aa0dbd6700 100644 --- a/plugins/org.jkiss.dbeaver.core/plugin.xml +++ b/plugins/org.jkiss.dbeaver.core/plugin.xml @@ -120,8 +120,8 @@ properties="active,hasData,hasMoreData,canCopy,canPaste,canCut,canMove,editable,changed,canToggle,canSwitchPresentation,canNavigateLink,canNavigateHistory,supportsCount" type="org.eclipse.ui.IWorkbenchPart"/> @@ -158,28 +158,28 @@ category="org.jkiss.dbeaver.core.category" class="org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorView" allowMultiple="false" - icon="icons/databases.png" + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/databases.png" name="%view.database.navigator.title"/> @@ -345,79 +345,79 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -1555,7 +1555,7 @@ - + @@ -1755,7 +1755,7 @@ - + @@ -1800,7 +1800,7 @@ - + @@ -2076,7 +2076,7 @@ - + @@ -2165,7 +2165,7 @@ - + @@ -2344,7 +2344,7 @@ - + - + @@ -2632,7 +2632,7 @@ @@ -2837,6 +2837,10 @@ + + + + @@ -3133,7 +3137,7 @@ @@ -3143,7 +3147,7 @@ @@ -3157,7 +3161,7 @@ @@ -3167,7 +3171,7 @@ @@ -3181,7 +3185,7 @@ @@ -3191,7 +3195,7 @@ @@ -3244,7 +3248,7 @@ label="%editor.dbdata.name" description="%editor.dbdata.description" position="additions_start" - icon="icons/sql/sql_table.png"> + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/sql_table.png"> @@ -3527,7 +3531,7 @@ @@ -3538,7 +3542,7 @@ @@ -3549,7 +3553,7 @@ id="stream.xml" class="org.jkiss.dbeaver.tools.transfer.stream.impl.DataExporterXML" description="%dataTransfer.processor.xml.description" - icon="icons/misc/xml.png" + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/xml.png" label="%dataTransfer.processor.xml.name"> @@ -3559,7 +3563,7 @@ id="stream.dbunit" class="org.jkiss.dbeaver.tools.transfer.stream.impl.DataExporterDbUnit" description="%dataTransfer.processor.dbunit.description" - icon="icons/misc/xml.png" + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/xml.png" label="%dataTransfer.processor.dbunit.name"> @@ -3573,7 +3577,7 @@ id="stream.json" class="org.jkiss.dbeaver.tools.transfer.stream.impl.DataExporterJSON" description="%dataTransfer.processor.json.description" - icon="icons/misc/json.png" + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/json.png" label="%dataTransfer.processor.json.name"> @@ -3585,7 +3589,7 @@ id="stream.html" class="org.jkiss.dbeaver.tools.transfer.stream.impl.DataExporterHTML" description="%dataTransfer.processor.html.description" - icon="icons/misc/html.png" + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/html.png" label="%dataTransfer.processor.html.name"> @@ -3596,7 +3600,7 @@ id="stream.csv" class="org.jkiss.dbeaver.tools.transfer.stream.impl.DataExporterCSV" description="%dataTransfer.processor.csv.description" - icon="icons/misc/csv.png" + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/csv.png" label="%dataTransfer.processor.csv.name"> @@ -3614,7 +3618,7 @@ id="stream.markdown.table" class="org.jkiss.dbeaver.tools.transfer.stream.impl.DataExporterMarkdownTable" description="%dataTransfer.processor.markdownTable.description" - icon="icons/misc/markdown.png" + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/markdown.png" label="%dataTransfer.processor.markdownTable.name"> @@ -3628,7 +3632,7 @@ id="stream.sql" class="org.jkiss.dbeaver.tools.transfer.stream.impl.DataExporterSQL" description="%dataTransfer.processor.sql.description" - icon="icons/misc/sql.png" + icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/sql.png" label="%dataTransfer.processor.sql.name"> @@ -3644,7 +3648,7 @@ @@ -3658,11 +3662,11 @@ - + - + @@ -3687,7 +3691,7 @@ @@ -3696,7 +3700,7 @@ @@ -3708,28 +3712,36 @@ + class="org.jkiss.dbeaver.ui.controls.resultset.panel.valueviewer.ValueViewerPanel"> + class="org.jkiss.dbeaver.ui.controls.resultset.panel.aggregate.AggregateColumnsPanel"> + + + class="org.jkiss.dbeaver.ui.controls.resultset.panel.grouping.GroupingPanel"> @@ -3781,6 +3793,7 @@ + @@ -3789,14 +3802,14 @@ @@ -3805,14 +3818,14 @@ point="org.eclipse.search.searchResultViewPages"> @@ -3833,7 +3846,7 @@ diff --git a/plugins/org.jkiss.dbeaver.core/pom.xml b/plugins/org.jkiss.dbeaver.core/pom.xml index 9d1349ab59c7ccc49e7e40c9e6b23904d72ecef9..d4335dabff607754182e2bacc0dd0992785247d7 100644 --- a/plugins/org.jkiss.dbeaver.core/pom.xml +++ b/plugins/org.jkiss.dbeaver.core/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.core - 5.0.6 + 5.1.0 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java index b5fc0f217e83b0998aa91df0454a3acbc5cd34ef..33763fb0b90ab14faabdc6e31e17a2fee8394948 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java @@ -66,6 +66,7 @@ public final class DBeaverPreferences public static final String CONFIRM_ORDER_RESULTSET = "order_resultset"; //$NON-NLS-1$ public static final String CONFIRM_RS_FETCH_ALL = "fetch_all_rows"; //$NON-NLS-1$ public static final String CONFIRM_RS_EDIT_CLOSE = "close_resultset_edit"; //$NON-NLS-1$ + public static final String CONFIRM_RS_PANEL_RESET = "reset_panels_content"; //$NON-NLS-1$ public static final String CONFIRM_TXN_DISCONNECT = "disconnect_txn"; //$NON-NLS-1$ public static final String CONFIRM_ENTITY_EDIT_CLOSE = "close_entity_edit"; //$NON-NLS-1$ public static final String CONFIRM_ENTITY_DELETE = "entity_delete"; //$NON-NLS-1$ diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java index 1d88f24c598fd988ea409c825b34e73909925280..6f75b9590763e944d931f2fc43c963fa1f9dc837 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java @@ -119,6 +119,10 @@ public class CoreMessages extends NLS { public static String confirm_close_resultset_edit_message; public static String confirm_close_resultset_edit_toggleMessage; + public static String confirm_reset_panels_content_title; + public static String confirm_reset_panels_content_message; + public static String confirm_reset_panels_content_toggleMessage; + public static String confirm_disconnect_txn_title; public static String confirm_disconnect_txn_message; public static String confirm_disconnect_txn_toggleMessage; @@ -261,6 +265,10 @@ public class CoreMessages extends NLS { public static String controls_resultset_filter_title; public static String controls_resultset_filter_warning_custom_order_disabled; + public static String controls_resultset_grouping_edit; + public static String controls_resultset_grouping_remove_column; + public static String controls_resultset_grouping_clear; + public static String controls_resultset_viewer_action_edit; public static String controls_resultset_viewer_action_order_filter; public static String controls_resultset_viewer_action_custom_filter; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties index ebd7a35a711e46d7dbe9bea4058d57048a0fb15a..2681e6977a0c4608da93144096b304e76f63dcdd 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties @@ -90,6 +90,10 @@ confirm_close_resultset_edit_message = Result set was edited. Do you want to sav confirm_close_resultset_edit_title = Save result set edit confirm_close_resultset_edit_toggleMessage = Remember choice +confirm_reset_panels_content_title = Panels content will be lost. Are you sure you want to continue? +confirm_reset_panels_content_message = Proceed and reset panels content +confirm_reset_panels_content_toggleMessage = Remember choice + confirm_close_editor_edit_message = "{0}" was changed. Do you want to save these changes? confirm_close_editor_edit_title = Save editor changes confirm_close_editor_edit_toggleMessage = Remember choice @@ -243,6 +247,10 @@ controls_resultset_filter_label_orderby = Order by controls_resultset_filter_label_where = Where controls_resultset_filter_title = Result Set Order/Filter Settings controls_resultset_filter_warning_custom_order_disabled = Data filters and custom orderings are disabled for custom queries +controls_resultset_grouping_edit = Edit grouping columns +controls_resultset_grouping_remove_column = Remove grouping column +controls_resultset_grouping_clear = Clear grouping + controls_resultset_viewer_action_custom_filter = Advanced ... controls_resultset_viewer_action_edit = Edit ... #controls_resultset_viewer_action_export = Export Resultset ... diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverActivator.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverActivator.java index e7ea98115ea3d4de9c6b46005739b13e88520feb..efb694912a9d07c4a511744123aefb1b1eeaa12f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverActivator.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverActivator.java @@ -99,17 +99,6 @@ public class DBeaverActivator extends AbstractUIPlugin { return new File(getInstance().getStateLocation().toFile(), fileName); } - /** - * Returns an image descriptor for the image file at the given - * plug-in relative path - * - * @param path the path - * @return the image descriptor - */ - public static ImageDescriptor getImageDescriptor(String path) { - return imageDescriptorFromPlugin(DBeaverCore.PLUGIN_ID, path); - } - /** * Returns the plugin's resource bundle, * diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverUI.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverUI.java index 2eace570c6adf0661c6d28de5e89c4fc6af7b5d6..7a6f030de42738c4eee4c70575bc0646f0117c5a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverUI.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverUI.java @@ -19,31 +19,29 @@ package org.jkiss.dbeaver.core; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.ProgressMonitorDialog; -import org.eclipse.jface.operation.IRunnableContext; -import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.*; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; import org.eclipse.ui.services.IDisposable; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPErrorAssistant; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.access.DBAAuthInfo; import org.jkiss.dbeaver.model.access.DBAPasswordChangeInfo; -import org.jkiss.dbeaver.model.runtime.*; -import org.jkiss.dbeaver.runtime.DummyRunnableContext; -import org.jkiss.dbeaver.runtime.RunnableContextDelegate; +import org.jkiss.dbeaver.model.runtime.DBRProcessDescriptor; +import org.jkiss.dbeaver.model.runtime.DBRProcessListener; import org.jkiss.dbeaver.runtime.ui.DBPPlatformUI; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; -import org.jkiss.dbeaver.ui.AbstractUIJob; -import org.jkiss.dbeaver.ui.SharedTextColors; import org.jkiss.dbeaver.ui.TrayIconHandler; import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.datasource.DataSourceInvalidateHandler; import org.jkiss.dbeaver.ui.dialogs.StandardErrorDialog; import org.jkiss.dbeaver.ui.dialogs.connection.BaseAuthDialog; @@ -54,7 +52,6 @@ import org.jkiss.dbeaver.ui.views.process.ShellProcessView; import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.dbeaver.utils.RuntimeUtils; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -68,7 +65,6 @@ public class DBeaverUI implements DBPPlatformUI { private static DBeaverUI instance; - private SharedTextColors sharedTextColors; private TrayIconHandler trayItem; private final List globalDisposables = new ArrayList<>(); private WorkbenchContextListener contextListener; @@ -91,23 +87,7 @@ public class DBeaverUI implements DBPPlatformUI { } } - public static SharedTextColors getSharedTextColors() { - return getInstance().sharedTextColors; - } - - public static void run( - IRunnableContext runnableContext, - boolean fork, - boolean cancelable, - final DBRRunnableWithProgress runnableWithProgress) - throws InvocationTargetException, InterruptedException { - runnableContext.run(fork, cancelable, - monitor -> runnableWithProgress.run(RuntimeUtils.makeMonitor(monitor))); - } - private void dispose() { - this.sharedTextColors.dispose(); - if (trayItem != null) { trayItem.hide(); } @@ -125,12 +105,11 @@ public class DBeaverUI implements DBPPlatformUI { } private void initialize() { - this.sharedTextColors = new SharedTextColors(); this.trayItem = new TrayIconHandler(); DBUserInterface.setInstance(this); // Register context listener - asyncExec(() -> contextListener = WorkbenchContextListener.registerInWorkbench()); + UIUtils.asyncExec(() -> contextListener = WorkbenchContextListener.registerInWorkbench()); /* // Global focus lister for debug Display.getCurrent().addFilter(SWT.FocusIn, new Listener() { @@ -149,62 +128,7 @@ public class DBeaverUI implements DBPPlatformUI { } } - public static AbstractUIJob runUIJob(String jobName, final DBRRunnableWithProgress runnableWithProgress) { - return runUIJob(jobName, 0, runnableWithProgress); - } - - public static AbstractUIJob runUIJob(String jobName, int timeout, final DBRRunnableWithProgress runnableWithProgress) { - AbstractUIJob job = new AbstractUIJob(jobName) { - @Override - public IStatus runInUIThread(DBRProgressMonitor monitor) { - try { - runnableWithProgress.run(monitor); - } catch (InvocationTargetException e) { - return GeneralUtils.makeExceptionStatus(e); - } catch (InterruptedException e) { - return Status.CANCEL_STATUS; - } - return Status.OK_STATUS; - } - }; - job.setSystem(true); - job.schedule(timeout); - return job; - } - - @NotNull - public static IWorkbenchWindow getActiveWorkbenchWindow() { - IWorkbench workbench = PlatformUI.getWorkbench(); - IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); - if (window != null) { - return window; - } - IWorkbenchWindow[] windows = workbench.getWorkbenchWindows(); - if (windows.length > 0) { - return windows[0]; - } - throw new IllegalStateException("No workbench window"); - } - - public static Shell getActiveWorkbenchShell() { - IWorkbench workbench = PlatformUI.getWorkbench(); - IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); - if (window != null) { - return window.getShell(); - } else { - return Display.getDefault().getActiveShell(); - } - } - - public static Display getDisplay() { - try { - return PlatformUI.getWorkbench().getDisplay(); - } catch (Exception e) { - return Display.getDefault(); - } - } - -/* + /* public static void runWithProgress(IWorkbenchPartSite site, final DBRRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException { @@ -227,90 +151,8 @@ public class DBeaverUI implements DBPPlatformUI { } */ - public static DBRRunnableContext getDefaultRunnableContext() { - IWorkbench workbench = PlatformUI.getWorkbench(); - if (workbench != null && workbench.getActiveWorkbenchWindow() != null) { - return new RunnableContextDelegate(workbench.getActiveWorkbenchWindow()); - } else { - return (fork, cancelable, runnable) -> runnable.run(new VoidProgressMonitor()); - } - } - - /** - * Runs task in Eclipse progress service. - * NOTE: this call can't be canceled if it will block in IO - */ - public static void runInProgressService(final DBRRunnableWithProgress runnable) - throws InvocationTargetException, InterruptedException { - getDefaultRunnableContext().run(true, true, runnable::run); - } - - /** - * Runs task in Eclipse progress dialog. - * NOTE: this call can't be canceled if it will block in IO - */ - public static void runInProgressDialog(final DBRRunnableWithProgress runnable) throws InvocationTargetException { - try { - IRunnableContext runnableContext; - IWorkbench workbench = PlatformUI.getWorkbench(); - IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); - if (workbenchWindow != null) { - runnableContext = new ProgressMonitorDialog(workbench.getActiveWorkbenchWindow().getShell()); - } else { - runnableContext = workbench.getProgressService(); - } - runnableContext.run(true, true, monitor -> runnable.run(RuntimeUtils.makeMonitor(monitor))); - } catch (InterruptedException e) { - // do nothing - } - } - - public static void runInUI(IRunnableContext context, final DBRRunnableWithProgress runnable) { - try { - PlatformUI.getWorkbench().getProgressService().runInUI(context, - monitor -> runnable.run(RuntimeUtils.makeMonitor(monitor)), DBeaverActivator.getWorkspace().getRoot()); - } catch (InvocationTargetException e) { - DBUserInterface.getInstance().showError(null, null, e.getTargetException()); - } catch (InterruptedException e) { - // do nothing - } - } - - public static void runInUI(final DBRRunnableWithProgress runnable) { - IWorkbench workbench = PlatformUI.getWorkbench(); - IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); - IRunnableContext context = window != null ? window : DummyRunnableContext.INSTANCE; - runInUI(context, runnable); - } - - public static void asyncExec(Runnable runnable) { - try { - getDisplay().asyncExec(runnable); - } catch (Exception e) { - log.debug(e); - } - } - - public static void syncExec(Runnable runnable) { - try { - getDisplay().syncExec(runnable); - } catch (Exception e) { - log.debug(e); - } - } - - public static T syncExec(RunnableWithResult runnable) { - try { - getDisplay().syncExec(runnable); - return runnable.getResult(); - } catch (Exception e) { - log.debug(e); - return null; - } - } - public static void notifyAgent(String message, int status) { - if (!DBeaverCore.getGlobalPreferenceStore().getBoolean(DBeaverPreferences.AGENT_LONG_OPERATION_NOTIFY)) { + if (!ModelPreferences.getPreferences().getBoolean(DBeaverPreferences.AGENT_LONG_OPERATION_NOTIFY)) { // Notifications disabled return; } @@ -337,11 +179,11 @@ public class DBeaverUI implements DBPPlatformUI { // log.debug(message); Runnable runnable = () -> { // Display the dialog - StandardErrorDialog dialog = new StandardErrorDialog(DBeaverUI.getActiveWorkbenchShell(), + StandardErrorDialog dialog = new StandardErrorDialog(UIUtils.getActiveWorkbenchShell(), title, message, RuntimeUtils.stripStack(status), IStatus.ERROR); dialog.open(); }; - DBeaverUI.syncExec(runnable); + UIUtils.syncExec(runnable); return UserResponse.OK; } @@ -384,7 +226,7 @@ public class DBeaverUI implements DBPPlatformUI { return new UITask() { @Override public DBAAuthInfo runTask() { - final Shell shell = DBeaverUI.getActiveWorkbenchShell(); + final Shell shell = UIUtils.getActiveWorkbenchShell(); final BaseAuthDialog authDialog = new BaseAuthDialog(shell, prompt, passwordOnly); if (!passwordOnly) { authDialog.setUserName(userName); @@ -405,7 +247,7 @@ public class DBeaverUI implements DBPPlatformUI { return new UITask() { @Override public DBAPasswordChangeInfo runTask() { - final Shell shell = DBeaverUI.getActiveWorkbenchShell(); + final Shell shell = UIUtils.getActiveWorkbenchShell(); final PasswordChangeDialog passwordChangeDialog = new PasswordChangeDialog(shell, prompt, userName, oldPassword); if (passwordChangeDialog.open() == IDialogConstants.OK_ID) { return passwordChangeDialog.getPasswordInfo(); @@ -436,10 +278,10 @@ public class DBeaverUI implements DBPPlatformUI { showError("Execute process", processDescriptor.getName(), e); } if (processDescriptor.getCommand().isShowProcessPanel()) { - asyncExec(() -> { + UIUtils.asyncExec(() -> { try { final ShellProcessView processView = - (ShellProcessView) DBeaverUI.getActiveWorkbenchWindow().getActivePage().showView( + (ShellProcessView) UIUtils.getActiveWorkbenchWindow().getActivePage().showView( ShellProcessView.VIEW_ID, ShellProcessView.getNextId(), IWorkbenchPage.VIEW_VISIBLE @@ -454,6 +296,6 @@ public class DBeaverUI implements DBPPlatformUI { @Override public void executeInUI(Runnable runnable) { - syncExec(runnable); + UIUtils.syncExec(runnable); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/WorkbenchContextListener.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/WorkbenchContextListener.java index 53b6ac3f2f5d591f75f4e928774472f63a0ebf65..d80b9ce3c38aa44643563ac0e008569e41e87f71 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/WorkbenchContextListener.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/WorkbenchContextListener.java @@ -173,7 +173,9 @@ class WorkbenchContextListener implements IWindowListener, IPageListener, IPartL } try { contextService.deferUpdates(true); - if (part.getAdapter(INavigatorModelView.class) != null) { + if (part instanceof INavigatorModelView) { + // We check for instanceof (do not use adapter) because otherwise it become active + // for all entity editor and clashes with SQL editor and other complex stuff. if (activationNavigator != null) { //log.debug("Double activation of navigator context"); contextService.deactivateContext(activationNavigator); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceDescriptorManager.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceDescriptorManager.java index 970d45237e245f60a9afd1894792734478dc2ab2..7430a13eeda47090ea8ecec820ae1b77180e4fe6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceDescriptorManager.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceDescriptorManager.java @@ -17,7 +17,6 @@ package org.jkiss.dbeaver.registry; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDataSourceFolder; import org.jkiss.dbeaver.model.DBPObject; @@ -29,6 +28,7 @@ import org.jkiss.dbeaver.model.impl.DBSObjectCache; import org.jkiss.dbeaver.model.impl.edit.AbstractObjectManager; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSObject; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler; import org.jkiss.dbeaver.ui.dialogs.connection.CreateConnectionDialog; import org.jkiss.dbeaver.ui.dialogs.connection.NewConnectionWizard; @@ -101,11 +101,11 @@ public class DataSourceDescriptorManager extends AbstractObjectManager MAX_RETRY_COUNT) { + throw new IOException("Too many redirects (" + retryNumber + ")"); + } else if (retryNumber > 1) { + log.debug("Retry number " + retryNumber); + } log.debug("Open [" + urlString + "]"); DBPPreferenceStore prefs = DBeaverCore.getGlobalPreferenceStore(); @@ -65,6 +75,7 @@ public class WebUtils { final HttpURLConnection httpConnection = (HttpURLConnection) connection; httpConnection.setRequestMethod("GET"); //$NON-NLS-1$ httpConnection.setInstanceFollowRedirects(true); + HttpURLConnection.setFollowRedirects(true); connection.setRequestProperty( "User-Agent", //$NON-NLS-1$ GeneralUtils.getProductTitle()); @@ -80,6 +91,10 @@ public class WebUtils { final HttpURLConnection httpConnection = (HttpURLConnection) connection; final int responseCode = httpConnection.getResponseCode(); if (responseCode != 200) { + if (responseCode == HttpURLConnection.HTTP_MOVED_TEMP || responseCode == HttpURLConnection.HTTP_MOVED_PERM || responseCode == HttpURLConnection.HTTP_SEE_OTHER) { + String newUrl = connection.getHeaderField("Location"); + return openURLConnection(newUrl, authInfo, retryNumber + 1); + } throw new IOException("Can't open '" + urlString + "': " + httpConnection.getResponseMessage()); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/ProcedureParameterBindDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/ProcedureParameterBindDialog.java index 4b4cac3feb07f5ae1349016d23deb04a3b03b8cd..673a415cefaa3956467f8e052d78c23f0be9499f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/ProcedureParameterBindDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/ProcedureParameterBindDialog.java @@ -22,7 +22,6 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.model.struct.rdb.DBSProcedure; @@ -140,7 +139,7 @@ public class ProcedureParameterBindDialog extends StatusDialog { }; if (!parameters.isEmpty()) { - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { paramTable.select(0); tableEditor.showEditor(paramTable.getItem(0), 1); }); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java index 860286ec3e1d15e987fe6f969ab7b6b883ca2e37..5031b588b9afda93cb4044dfe162a0cdd16d9a62 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java @@ -33,7 +33,6 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataKind; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBUtils; @@ -855,7 +854,7 @@ public class SQLQueryJob extends DataSourceJob @Override protected Integer runTask() { MessageDialogWithToggle dialog = new MessageDialogWithToggle( - DBeaverUI.getActiveWorkbenchShell(), + UIUtils.getActiveWorkbenchShell(), "Confirm query execution", null, "You are in '" + connectionType.getName() + "' connection.\nDo you confirm query execution?", diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryParameterBindDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryParameterBindDialog.java index 0245b28f85d6ebc92b1ecda1181119f83e4a59e8..b3e80e37912a89efa6acb01de5b50074ab3c4304 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryParameterBindDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryParameterBindDialog.java @@ -21,7 +21,6 @@ import org.eclipse.jface.dialogs.StatusDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.sql.SQLQueryParameter; import org.jkiss.dbeaver.ui.DBeaverIcons; @@ -151,12 +150,9 @@ public class SQLQueryParameterBindDialog extends StatusDialog { }; if (!parameters.isEmpty()) { - DBeaverUI.asyncExec(new Runnable() { - @Override - public void run() { - paramTable.select(0); - tableEditor.showEditor(paramTable.getItem(0), 2); - } + UIUtils.asyncExec(() -> { + paramTable.select(0); + tableEditor.showEditor(paramTable.getItem(0), 2); }); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/commands/SQLCommandInclude.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/commands/SQLCommandInclude.java index 14be416716daffe07520055e68ed66becd6cd08a..e6b0bc227491ee1ec7bb3470bab428063d7ff456 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/commands/SQLCommandInclude.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/commands/SQLCommandInclude.java @@ -20,9 +20,6 @@ import org.eclipse.ui.IURIEditorInput; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.ide.IDEEncoding; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.DBeaverPreferences; -import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.exec.DBCSession; import org.jkiss.dbeaver.model.exec.DBCStatistics; @@ -33,6 +30,7 @@ import org.jkiss.dbeaver.model.sql.SQLScriptContext; import org.jkiss.dbeaver.model.sql.eval.ScriptVariablesResolver; import org.jkiss.dbeaver.runtime.sql.SQLControlCommandHandler; import org.jkiss.dbeaver.runtime.sql.SQLQueryListener; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.StringEditorInput; import org.jkiss.dbeaver.ui.editors.sql.SQLEditor; import org.jkiss.dbeaver.ui.editors.sql.handlers.OpenHandler; @@ -75,10 +73,10 @@ public class SQLCommandInclude implements SQLControlCommandHandler { } final File finalIncFile = incFile; final boolean statusFlag[] = new boolean[1]; - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { - final IWorkbenchWindow workbenchWindow = DBeaverUI.getActiveWorkbenchWindow(); + final IWorkbenchWindow workbenchWindow = UIUtils.getActiveWorkbenchWindow(); final IncludeEditorInput input = new IncludeEditorInput(finalIncFile, fileContents); SQLEditor sqlEditor = OpenHandler.openSQLConsole( workbenchWindow, @@ -128,7 +126,7 @@ public class SQLCommandInclude implements SQLControlCommandHandler { @Override public void onEndScript(DBCStatistics statistics, boolean hasErrors) { - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { workbenchWindow.getActivePage().closeEditor(editor, false); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsExecutor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsExecutor.java index fbb9c16560997e8ab9a4400bbbc4b4950879a6e4..7014aceb3353d9e215eb45b45bee0aad03f35f04 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsExecutor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsExecutor.java @@ -19,6 +19,7 @@ package org.jkiss.dbeaver.tools.compare; import org.eclipse.core.runtime.IStatus; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.DBConstants; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPNamedObject; import org.jkiss.dbeaver.model.DBPSystemObject; @@ -225,6 +226,7 @@ public class CompareObjectsExecutor { break; } } + boolean compareScripts = compareLazyProperties && settings.isCompareScripts(); compareLazyProperties = compareLazyProperties && settings.isCompareLazyProperties(); // Load all properties @@ -238,8 +240,24 @@ public class CompareObjectsExecutor { nodeProperties = new IdentityHashMap<>(); propertyValues.put(databaseObject, nodeProperties); } - PropertyCollector propertySource = new PropertyCollector(databaseObject, compareLazyProperties); + PropertyCollector propertySource = new PropertyCollector(databaseObject, compareLazyProperties || compareScripts); for (ObjectPropertyDescriptor prop : properties) { + if (prop.isLazy()) { + if (!compareLazyProperties) { + if (compareScripts) { + // Only DBPScriptObject methods + if (!prop.getId().equals(DBConstants.PARAM_OBJECT_DEFINITION_TEXT) && !prop.getId().equals(DBConstants.PARAM_EXTENDED_DEFINITION_TEXT)) { + continue; + } + } else { + continue; + } + } + } else { + if (prop.isHidden()) { + continue; + } + } Object propertyValue = propertySource.getPropertyValue(monitor, databaseObject, prop); synchronized (PROPS_LOCK) { if (propertyValue instanceof DBPNamedObject) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsPageSettings.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsPageSettings.java index 76d5bc5e54be3bd026ae623c2ef8b79b0587a52d..19c5903797cc70043db44e6857148297956cce5f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsPageSettings.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsPageSettings.java @@ -33,6 +33,7 @@ class CompareObjectsPageSettings extends ActiveWizardPage private Button skipSystemObjects; private Button compareLazyProperties; private Button compareOnlyStructure; + private Button compareScriptProperties; CompareObjectsPageSettings() { super("Compare objects"); @@ -105,6 +106,14 @@ class CompareObjectsPageSettings extends ActiveWizardPage settings.setCompareOnlyStructure(compareOnlyStructure.getSelection()); } }); + compareScriptProperties = UIUtils.createCheckbox(compareSettings, "Compare scripts/procedures", settings.isCompareScripts()); + compareScriptProperties.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) + { + settings.setCompareScripts(compareScriptProperties.getSelection()); + } + }); } setControl(composite); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsSettings.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsSettings.java index 4318d3e04a895651ef348d37afc7bae10446293e..35f7a2d073449864661c3eeae8ddfab26562e768 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsSettings.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsSettings.java @@ -32,13 +32,11 @@ public class CompareObjectsSettings { FILE("Save to file"); private final String title; - private OutputType(String title) - { + private OutputType(String title) { this.title = title; } - public String getTitle() - { + public String getTitle() { return title; } } @@ -47,82 +45,76 @@ public class CompareObjectsSettings { private boolean skipSystemObjects = true; private boolean compareLazyProperties = false; private boolean compareOnlyStructure = false; + private boolean compareScripts = false; private boolean showOnlyDifferences = false; private OutputType outputType = OutputType.BROWSER; private String outputFolder = DialogUtils.getCurDialogFolder(); - public CompareObjectsSettings(List nodes) - { + public CompareObjectsSettings(List nodes) { this.nodes = nodes; } - public List getNodes() - { + public List getNodes() { return nodes; } - public boolean isSkipSystemObjects() - { + public boolean isSkipSystemObjects() { return skipSystemObjects; } - public void setSkipSystemObjects(boolean skipSystemObjects) - { + public void setSkipSystemObjects(boolean skipSystemObjects) { this.skipSystemObjects = skipSystemObjects; } - public boolean isCompareLazyProperties() - { + public boolean isCompareLazyProperties() { return compareLazyProperties; } - public void setCompareLazyProperties(boolean compareLazyProperties) - { + public void setCompareLazyProperties(boolean compareLazyProperties) { this.compareLazyProperties = compareLazyProperties; } - public boolean isCompareOnlyStructure() - { + public boolean isCompareOnlyStructure() { return compareOnlyStructure; } - public void setCompareOnlyStructure(boolean compareOnlyStructure) - { + public void setCompareOnlyStructure(boolean compareOnlyStructure) { this.compareOnlyStructure = compareOnlyStructure; } - public boolean isShowOnlyDifferences() - { + public boolean isCompareScripts() { + return compareScripts; + } + + public void setCompareScripts(boolean compareScripts) { + this.compareScripts = compareScripts; + } + + public boolean isShowOnlyDifferences() { return showOnlyDifferences; } - public void setShowOnlyDifferences(boolean showOnlyDifferences) - { + public void setShowOnlyDifferences(boolean showOnlyDifferences) { this.showOnlyDifferences = showOnlyDifferences; } - public OutputType getOutputType() - { + public OutputType getOutputType() { return outputType; } - public void setOutputType(OutputType outputType) - { + public void setOutputType(OutputType outputType) { this.outputType = outputType; } - public String getOutputFolder() - { + public String getOutputFolder() { return outputFolder; } - public void setOutputFolder(String outputFolder) - { + public void setOutputFolder(String outputFolder) { this.outputFolder = outputFolder; } - void loadFrom(IDialogSettings dialogSettings) - { + void loadFrom(IDialogSettings dialogSettings) { if (dialogSettings.get("skipSystem") != null) { skipSystemObjects = dialogSettings.getBoolean("skipSystem"); } @@ -135,6 +127,9 @@ public class CompareObjectsSettings { if (dialogSettings.get("showDifference") != null) { showOnlyDifferences = dialogSettings.getBoolean("showDifference"); } + if (dialogSettings.get("compareScripts") != null) { + compareScripts = dialogSettings.getBoolean("compareScripts"); + } if (dialogSettings.get("outputType") != null) { outputType = OutputType.valueOf(dialogSettings.get("outputType")); } @@ -143,11 +138,11 @@ public class CompareObjectsSettings { } } - void saveTo(IDialogSettings dialogSettings) - { + void saveTo(IDialogSettings dialogSettings) { dialogSettings.put("skipSystem", skipSystemObjects); dialogSettings.put("compareLazy", compareLazyProperties); dialogSettings.put("compareStructure", compareOnlyStructure); + dialogSettings.put("compareScripts", compareScripts); dialogSettings.put("showDifference", showOnlyDifferences); dialogSettings.put("outputType", outputType.name()); dialogSettings.put("outputFolder", outputFolder); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsWizard.java index 936283eaebe6f8691df06a51deeedcab85cc5ad0..a3dcdc75133ba6d1ed35659ce5036a8130dd6e28 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareObjectsWizard.java @@ -25,7 +25,6 @@ import org.eclipse.ui.IExportWizard; import org.eclipse.ui.IWorkbench; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; @@ -97,7 +96,7 @@ public class CompareObjectsWizard extends Wizard implements IExportWizard { // Compare final CompareObjectsExecutor executor = new CompareObjectsExecutor(settings); try { - DBeaverUI.run(getContainer(), true, true, new DBRRunnableWithProgress() { + UIUtils.run(getContainer(), true, true, new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareReportRenderer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareReportRenderer.java index a36030bfe5bec583c2c46b3098d3a01b0c06c99f..4bfc0812aa2316b93803a237214f352598163602 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareReportRenderer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/compare/CompareReportRenderer.java @@ -108,7 +108,7 @@ public class CompareReportRenderer { styles.append("table {font-family:\"Lucida Sans Unicode\", \"Lucida Grande\", Sans-Serif;font-size:12px;text-align:left;} "); styles.append(".missing {color:red;} .differs {color:red;} "); styles.append(".object td,th {border-top:solid 1px; border-right:solid 1px; border-color: black; white-space:nowrap;} "); - styles.append(".property td,th {border-right:solid 1px; border-color: black; white-space:pre; } "); + styles.append(".property td,th {border-top:dashed 1px; border-right:solid 1px; border-color: black; white-space:pre; } "); styles.append(".struct {border-top:none; !important } "); // styles.append(".object:first-child {border:none; } "); // styles.append(".property:first-child {border:none; } "); @@ -152,6 +152,7 @@ public class CompareReportRenderer { xml.startElement("tr"); xml.addAttribute("class", "object level" + line.depth); + xml.addAttribute("valign", "top"); xml.startElement("td"); xml.addText(line.structure.getNodeType()); xml.endElement(); @@ -206,6 +207,7 @@ public class CompareReportRenderer { } xml.startElement("tr"); xml.addAttribute("class", "property level" + (line.depth + 1) + (differs ? " differs" : "")); + xml.addAttribute("valign", "top"); xml.startElement("td"); xml.addText(reportProperty.property.getDisplayName()); xml.endElement(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectCreateWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectCreateWizard.java index a5e96f0b5fe2a87f90031c8b051088cb547781ee..7daa40161091f9d8293538e05d1e7c2a505ab0bf 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectCreateWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectCreateWizard.java @@ -29,10 +29,10 @@ import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverNature; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.preferences.PrefPageProjectSettings; import org.jkiss.dbeaver.ui.preferences.WizardPrefPage; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -75,7 +75,7 @@ public class ProjectCreateWizard extends BasicNewProjectResourceWizard implement public boolean performFinish() { if (super.performFinish()) { try { - DBeaverUI.run(getContainer(), true, true, new DBRRunnableWithProgress() { + UIUtils.run(getContainer(), true, true, new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizard.java index 5cd9e4d7a16d74e4021db4e61d3e8214ee68537d..378b27611ebed5d79e892d8fc3ac02b067823019 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizard.java @@ -28,7 +28,6 @@ import org.eclipse.ui.IWorkbench; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.connection.DBPDriverLibrary; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; @@ -37,6 +36,7 @@ import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.registry.RegistryConstants; import org.jkiss.dbeaver.registry.driver.DriverDescriptor; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.utils.ContentUtils; import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -81,7 +81,7 @@ public class ProjectExportWizard extends Wizard implements IExportWizard { public boolean performFinish() { final ProjectExportData exportData = mainPage.getExportData(); try { - DBeaverUI.run(getContainer(), true, true, new DBRRunnableWithProgress() { + UIUtils.run(getContainer(), true, true, new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizardPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizardPage.java index b73dccc8de14727bfa923bf9065e980e491f7ab1..1d6fbbfc96e828392ed8282a2cd3aaa37750330e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizardPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizardPage.java @@ -32,7 +32,6 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.UIUtils; @@ -89,7 +88,7 @@ class ProjectExportWizardPage extends WizardPage { } Set projectList = new LinkedHashSet<>(); - final ISelection selection = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getSelection(); + final ISelection selection = UIUtils.getActiveWorkbenchWindow().getActivePage().getSelection(); if (selection != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { for (Iterator iter = ((IStructuredSelection) selection).iterator(); iter.hasNext(); ) { Object element = iter.next(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectImportWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectImportWizard.java index 1d4fca74a07dc6d88545a8eb66dec0a492ea4e27..588144038e728ab17cc9c3a286f5b6db881b4343 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectImportWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectImportWizard.java @@ -28,7 +28,6 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.connection.DBPDriverLibrary; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; @@ -77,7 +76,7 @@ public class ProjectImportWizard extends Wizard implements IImportWizard { @Override public boolean performFinish() { try { - DBeaverUI.run(getContainer(), true, true, new DBRRunnableWithProgress() { + UIUtils.run(getContainer(), true, true, new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportWizard.java index a12829358d38128071a2e6ad65d02b264f55235a..e8ed7d908dc810dbc4464ef67d3cea80c96d9836 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsExportWizard.java @@ -27,12 +27,12 @@ import org.eclipse.ui.IExportWizard; import org.eclipse.ui.IWorkbench; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.UIIcon; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.utils.IOUtils; import java.io.File; @@ -71,7 +71,7 @@ public class ScriptsExportWizard extends Wizard implements IExportWizard { public boolean performFinish() { final ScriptsExportData exportData = mainPage.getExportData(); try { - DBeaverUI.run(getContainer(), true, true, new DBRRunnableWithProgress() { + UIUtils.run(getContainer(), true, true, new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsImportWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsImportWizard.java index 0390f6418d2c56922cc2f0b3e8f05353792ad220..421ac01debb6773ff6966841c979c6c928d1f8ad 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsImportWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/scripts/ScriptsImportWizard.java @@ -30,7 +30,6 @@ import org.eclipse.ui.IWorkbench; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; @@ -76,7 +75,7 @@ public class ScriptsImportWizard extends Wizard implements IImportWizard { final ScriptsImportData importData = pageMain.getImportData(); final ScriptsImporter importer = new ScriptsImporter(importData); try { - DBeaverUI.run(getContainer(), true, true, importer); + UIUtils.run(getContainer(), true, true, importer); } catch (InterruptedException ex) { return false; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/ColumnsMappingDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/ColumnsMappingDialog.java index 581841424a9d84b05c3685b157914b72564d44c2..081ff790d96b04588dd090668446575b6792d63f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/ColumnsMappingDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/ColumnsMappingDialog.java @@ -30,7 +30,6 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.TableItem; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDataTypeProvider; import org.jkiss.dbeaver.model.DBPEvaluationContext; @@ -165,7 +164,7 @@ public class ColumnsMappingDialog extends StatusDialog { DatabaseMappingAttribute mapping = (DatabaseMappingAttribute) cell.getElement(); cell.setText(mapping.getTargetName()); if (mapping.mappingType == DatabaseMappingType.unspecified) { - cell.setBackground(DBeaverUI.getSharedTextColors().getColor(SharedTextColors.COLOR_WARNING)); + cell.setBackground(UIUtils.getSharedTextColors().getColor(SharedTextColors.COLOR_WARNING)); } else { cell.setBackground(null); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerPageMapping.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerPageMapping.java index 107d78082447b9fcf507ca4f4077900dc3ab80c0..a42d3ad36f0fc038d6c1f431c1f7164bf186bec3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerPageMapping.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerPageMapping.java @@ -31,7 +31,6 @@ import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPEvaluationContext; @@ -360,7 +359,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage { + UIUtils.syncExec(() -> { TextTransfer textTransfer = TextTransfer.getInstance(); - new Clipboard(DBeaverUI.getDisplay()).setContents( + new Clipboard(UIUtils.getDisplay()).setContents( new Object[]{outputBuffer.toString()}, new Transfer[]{textTransfer}); }); @@ -342,7 +341,7 @@ public class StreamTransferConsumer implements IDataTransferConsumer extends AbstractJob { } finally { loadFinished = true; - DBeaverUI.asyncExec(new LoadFinisher(result, error)); + UIUtils.asyncExec(new LoadFinisher(result, error)); } return Status.OK_STATUS; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/SimpleCommandContext.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/SimpleCommandContext.java index 6976d22659ac9c6b51116f3f4a2e1da42a2722b3..663f38a878e7d689fdc516f071c9cb8915ce4da5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/SimpleCommandContext.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/SimpleCommandContext.java @@ -18,7 +18,6 @@ package org.jkiss.dbeaver.ui; import org.eclipse.ui.IWorkbenchCommandConstants; import org.eclipse.ui.commands.ICommandService; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.impl.edit.AbstractCommandContext; @@ -34,7 +33,7 @@ public class SimpleCommandContext extends AbstractCommandContext { protected void refreshCommandState() { - ICommandService commandService = DBeaverUI.getActiveWorkbenchWindow().getService(ICommandService.class); + ICommandService commandService = UIUtils.getActiveWorkbenchWindow().getService(ICommandService.class); if (commandService != null) { commandService.refreshElements(IWorkbenchCommandConstants.EDIT_UNDO, null); commandService.refreshElements(IWorkbenchCommandConstants.EDIT_REDO, null); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/TrayIconHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/TrayIconHandler.java index d33caa264a84f8b9de3b3cbf135e81f0067a621c..4b9da0ee421b0f3176eb87a97a01d211fce97870 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/TrayIconHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/TrayIconHandler.java @@ -19,7 +19,6 @@ package org.jkiss.dbeaver.ui; import org.eclipse.core.runtime.IStatus; import org.eclipse.swt.widgets.Shell; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -98,10 +97,10 @@ public class TrayIconHandler { } private void showMainWindow() { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { - Shell activeShell = DBeaverUI.getActiveWorkbenchShell(); + Shell activeShell = UIUtils.getActiveWorkbenchShell(); if (activeShell != null){ if (activeShell.getMinimized()) { activeShell.setMinimized(false); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/DataSourcePropertyTester.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/DataSourcePropertyTester.java index 894a1a9af0741f8f8dc54fee15f8a9e5b78e6537..04d1ec5e46e300f547f6c7c364e91e13447518ec 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/DataSourcePropertyTester.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/DataSourcePropertyTester.java @@ -25,7 +25,6 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreCommands; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPContextProvider; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBUtils; @@ -35,6 +34,7 @@ import org.jkiss.dbeaver.model.qm.QMUtils; import org.jkiss.dbeaver.runtime.IPluginService; import org.jkiss.dbeaver.runtime.qm.DefaultExecutionHandler; import org.jkiss.dbeaver.ui.ActionUtils; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.sql.SQLEditor; /** @@ -104,7 +104,7 @@ public class DataSourcePropertyTester extends PropertyTester // Update commands final ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class); if (commandService != null) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { commandService.refreshElements(commandID, null); @@ -187,7 +187,7 @@ public class DataSourcePropertyTester extends PropertyTester } private void updateUI(Runnable runnable) { - DBeaverUI.asyncExec(runnable); + UIUtils.asyncExec(runnable); } } @@ -197,11 +197,11 @@ public class DataSourcePropertyTester extends PropertyTester * Making each editor QM listener is too expensive. */ private static void updateEditorsDirtyFlag() { - IEditorReference[] editors = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getEditorReferences(); + IEditorReference[] editors = UIUtils.getActiveWorkbenchWindow().getActivePage().getEditorReferences(); for (IEditorReference ref : editors) { final IEditorPart editor = ref.getEditor(false); if (editor instanceof SQLEditor) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { ((SQLEditor) editor).updateDirtyFlag(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceHandler.java index 75c81847c440c02a005298bd9d4131573af40ba5..5a8e3005691589aed2ed4065a30698f953bb0be7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceHandler.java @@ -28,7 +28,6 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.access.DBAAuthInfo; import org.jkiss.dbeaver.model.exec.*; @@ -43,6 +42,7 @@ import org.jkiss.dbeaver.runtime.jobs.ConnectJob; import org.jkiss.dbeaver.runtime.jobs.DisconnectJob; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; import org.jkiss.dbeaver.ui.editors.entity.handlers.SaveChangesHandler; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -94,7 +94,7 @@ public class DataSourceHandler if (onFinish != null) { onFinish.onTaskFinished(result); } else if (!result.isOK()) { - DBeaverUI.asyncExec(() -> DBUserInterface.getInstance().showError( + UIUtils.asyncExec(() -> DBUserInterface.getInstance().showError( connectJob.getName(), null,//NLS.bind(CoreMessages.runtime_jobs_connect_status_error, dataSourceContainer.getName()), result)); @@ -128,7 +128,7 @@ public class DataSourceHandler // Schedule in UI because connect may be initiated during application startup // and UI is still not initiated. In this case no progress dialog will appear // to be sure run in UI async - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { connectJob.schedule(); @@ -222,7 +222,7 @@ public class DataSourceHandler } }); // Run in UI thread to update actions (some Eclipse magic) - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { disconnectJob.schedule(); @@ -263,7 +263,7 @@ public class DataSourceHandler if (commitTxn == null) { // Ask for confirmation TransactionCloseConfirmer closeConfirmer = new TransactionCloseConfirmer(context.getDataSource().getContainer().getName()); - DBeaverUI.syncExec(closeConfirmer); + UIUtils.syncExec(closeConfirmer); switch (closeConfirmer.result) { case IDialogConstants.YES_ID: commitTxn = true; @@ -276,7 +276,7 @@ public class DataSourceHandler } } final boolean commit = commitTxn; - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { closeActiveTransaction(monitor, context, commit); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceInvalidateHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceInvalidateHandler.java index 6e15ecaf50ed0f0f8651af25e4c80c2a26015783..146131e5173360e75fc8f63d40dfb6002eff6d95 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceInvalidateHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceInvalidateHandler.java @@ -28,7 +28,6 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.handlers.HandlerUtil; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.IDataSourceContainerProviderEx; @@ -36,6 +35,7 @@ import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.runtime.jobs.DisconnectJob; import org.jkiss.dbeaver.runtime.jobs.InvalidateJob; import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.AbstractDataSourceHandler; import org.jkiss.dbeaver.ui.dialogs.ConnectionLostDialog; import org.jkiss.dbeaver.ui.dialogs.StandardErrorDialog; @@ -108,7 +108,7 @@ public class DataSourceInvalidateHandler extends AbstractDataSourceHandler // "Invalidate data source [" + context.getDataSource().getContainer().getName() + "]", // "Error while connecting to the datasource",// + "\nTime spent: " + RuntimeUtils.formatExecutionTime(invalidateJob.getTimeSpent()), // error); - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { @@ -151,7 +151,7 @@ public class DataSourceInvalidateHandler extends AbstractDataSourceHandler ConnectionRecoverDialog dialog = new ConnectionRecoverDialog(shell, title, message == null ? title : message, error); dialog.open(); }; - DBeaverUI.syncExec(runnable); + UIUtils.syncExec(runnable); } private static class ConnectionRecoverDialog extends StandardErrorDialog { @@ -161,7 +161,7 @@ public class DataSourceInvalidateHandler extends AbstractDataSourceHandler ConnectionRecoverDialog(Shell shell, String title, String message, DBException error) { super( - shell == null ? DBeaverUI.getActiveWorkbenchShell() : shell, + shell == null ? UIUtils.getActiveWorkbenchShell() : shell, title, message, GeneralUtils.makeExceptionStatus(error), diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceToolsContributor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceToolsContributor.java index d76e17c6361d7b09e491c3c84a7bd2577cfd5d0f..58fa0ed735464a4015c7f17803d2766cf1ac0277 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceToolsContributor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceToolsContributor.java @@ -23,13 +23,13 @@ import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.registry.tools.ToolDescriptor; import org.jkiss.dbeaver.registry.tools.ToolGroupDescriptor; import org.jkiss.dbeaver.registry.tools.ToolsRegistry; import org.jkiss.dbeaver.ui.ActionUtils; import org.jkiss.dbeaver.ui.DBeaverIcons; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.common.EmptyListAction; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorActionExecuteTool; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -46,7 +46,7 @@ public class DataSourceToolsContributor extends DataSourceMenuContributor @Override protected void fillContributionItems(List menuItems) { - IWorkbenchPart activePart = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActivePart(); + IWorkbenchPart activePart = UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart(); if (activePart == null) { return; } @@ -69,7 +69,7 @@ public class DataSourceToolsContributor extends DataSourceMenuContributor { boolean hasTools = false; if (!CommonUtils.isEmpty(tools)) { - IWorkbenchWindow workbenchWindow = DBeaverUI.getActiveWorkbenchWindow(); + IWorkbenchWindow workbenchWindow = UIUtils.getActiveWorkbenchWindow(); if (workbenchWindow.getActivePage() != null) { IWorkbenchPart activePart = workbenchWindow.getActivePage().getActivePart(); if (activePart != null) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceTransactionModeContributor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceTransactionModeContributor.java index 81a2a3a4558357682193780f1daaaec37f4b5224..c59892c24d85f1928c78b131bd609c698208eb45 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceTransactionModeContributor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/datasource/DataSourceTransactionModeContributor.java @@ -25,12 +25,12 @@ import org.eclipse.ui.menus.CommandContributionItem; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreCommands; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.exec.DBCTransactionManager; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.ActionUtils; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.AbstractDataSourceHandler; import org.jkiss.utils.CommonUtils; @@ -43,7 +43,7 @@ public class DataSourceTransactionModeContributor extends DataSourceMenuContribu @Override protected void fillContributionItems(final List menuItems) { - IWorkbenchWindow window = DBeaverUI.getActiveWorkbenchWindow(); + IWorkbenchWindow window = UIUtils.getActiveWorkbenchWindow(); if (window == null) { return; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorActionExecuteTool.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorActionExecuteTool.java index 8df3e048e82bc8003109e8266ce23ef365e96325..1654f1fcb5748bfb1478cc06269f3667ca0e34b1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorActionExecuteTool.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorActionExecuteTool.java @@ -21,11 +21,11 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.registry.tools.ToolDescriptor; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.tools.IExternalTool; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.navigator.NavigatorUtils; import java.util.Collection; @@ -48,7 +48,7 @@ public class NavigatorActionExecuteTool implements IActionDelegate { if (!selection.isEmpty()) { List selectedObjects = NavigatorUtils.getSelectedObjects(selection); - executeTool(DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActivePart(), selectedObjects); + executeTool(UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart(), selectedObjects); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerCopyAbstract.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerCopyAbstract.java index a13e33e2fbc9c2d9db3e50ebccefa2cecc6ee62c..b8315e2490d9060e3f3dbed86ba533bfcaea5548 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerCopyAbstract.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerCopyAbstract.java @@ -29,7 +29,6 @@ import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.commands.IElementUpdater; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.menus.UIElement; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPNamedObject; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNNode; @@ -37,6 +36,7 @@ import org.jkiss.dbeaver.model.navigator.DBNResource; import org.jkiss.dbeaver.ui.ClipboardData; import org.jkiss.dbeaver.ui.CopyMode; import org.jkiss.dbeaver.ui.IClipboardSource; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.ObjectPropertyTester; import org.jkiss.dbeaver.ui.dnd.DatabaseObjectTransfer; import org.jkiss.dbeaver.ui.dnd.TreeNodeTransfer; @@ -60,7 +60,7 @@ public abstract class NavigatorHandlerCopyAbstract extends AbstractHandler imple final IWorkbenchWindow workbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event); final IWorkbenchPart activePart = HandlerUtil.getActivePart(event); - DBeaverUI.syncExec(() -> + UIUtils.syncExec(() -> copySelection(workbenchWindow, activePart, selection)); return null; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerLinkEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerLinkEditor.java index aca6fd9ec9153d9fc85d94077635c63647681a32..1623f27cef2c076a84d0fec55c21847a4dddd2e9 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerLinkEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerLinkEditor.java @@ -24,7 +24,6 @@ import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.handlers.HandlerUtil; import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBUtils; @@ -36,6 +35,7 @@ import org.jkiss.dbeaver.model.navigator.DBNResource; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.model.struct.DBSObject; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.IDatabaseEditorInput; import org.jkiss.dbeaver.ui.editors.ProjectFileEditorInput; @@ -89,7 +89,7 @@ public class NavigatorHandlerLinkEditor extends AbstractHandler { } final NavigatorViewBase view = navigatorView; - DBeaverUI.runInUI(activePage.getWorkbenchWindow(), new DBRRunnableWithProgress() { + UIUtils.runInUI(activePage.getWorkbenchWindow(), new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerLocalFolderCreate.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerLocalFolderCreate.java index 6ecae6d8d9fbf14ea16cada898bc7fdfe4f000e4..3c995da6272a10e103b643f05ac733b5c1a966f6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerLocalFolderCreate.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerLocalFolderCreate.java @@ -25,13 +25,13 @@ import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.handlers.HandlerUtil; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceFolder; import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry; import org.jkiss.dbeaver.model.navigator.DBNDataSource; import org.jkiss.dbeaver.model.navigator.DBNLocalFolder; import org.jkiss.dbeaver.model.navigator.DBNModel; import org.jkiss.dbeaver.model.navigator.DBNProjectDatabases; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.EnterNameDialog; import org.jkiss.dbeaver.ui.navigator.database.NavigatorViewBase; import org.jkiss.utils.CommonUtils; @@ -92,7 +92,7 @@ public class NavigatorHandlerLocalFolderCreate extends AbstractHandler { if (parentFolder != null && activePart instanceof NavigatorViewBase) { final TreeViewer viewer = ((NavigatorViewBase) activePart).getNavigatorViewer(); if (viewer != null) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { viewer.expandToLevel(parentFolder, 1); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectBase.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectBase.java index 5e3e59ea403b91f6b7bfd3259d64c390850e3302..ae5d2f3de4d1a0b2ce4929aeef5d7aa0e66bade9 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectBase.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectBase.java @@ -24,7 +24,6 @@ import org.eclipse.ui.IWorkbenchWindow; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.edit.DBECommand; import org.jkiss.dbeaver.model.edit.DBECommandContext; @@ -148,7 +147,7 @@ public abstract class NavigatorHandlerObjectBase extends AbstractHandler { if (node == null) { NodeLoader nodeLoader = new NodeLoader(model, Collections.singleton(object)); try { - DBeaverUI.runInProgressService(nodeLoader); + UIUtils.runInProgressService(nodeLoader); } catch (InvocationTargetException e) { log.warn("Can't load node for object '" + object.getName() + "'", e.getTargetException()); } catch (InterruptedException e) { @@ -179,7 +178,7 @@ public abstract class NavigatorHandlerObjectBase extends AbstractHandler { if (!missingObjects.isEmpty()) { NodeLoader nodeLoader = new NodeLoader(model, missingObjects); try { - DBeaverUI.runInProgressService(nodeLoader); + UIUtils.runInProgressService(nodeLoader); } catch (InvocationTargetException e) { log.warn("Can't load node for objects " + missingObjects.size(), e.getTargetException()); } catch (InterruptedException e) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectCreateBase.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectCreateBase.java index dd9176745dcc117579c19bd37ef575d6d33c2235..5c95e4e9dd28f69555a5cbb61e407d6d3ead7416 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectCreateBase.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectCreateBase.java @@ -22,7 +22,6 @@ import org.eclipse.core.runtime.Status; import org.eclipse.ui.IWorkbenchWindow; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPObject; import org.jkiss.dbeaver.model.DBPRefreshableObject; @@ -169,7 +168,7 @@ public abstract class NavigatorHandlerObjectCreateBase extends NavigatorHandlerO } // Open object in UI thread - DBeaverUI.syncExec(this::openNewObject); + UIUtils.syncExec(this::openNewObject); return Status.OK_STATUS; } catch (Exception e) { @@ -178,7 +177,7 @@ public abstract class NavigatorHandlerObjectCreateBase extends NavigatorHandlerO } private void openNewObject() { - IWorkbenchWindow workbenchWindow = DBeaverUI.getActiveWorkbenchWindow(); + IWorkbenchWindow workbenchWindow = UIUtils.getActiveWorkbenchWindow(); try { final DBNDatabaseNode newChild = DBeaverCore.getInstance().getNavigatorModel().findNode(newObject); if (newChild != null) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectCreateCopy.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectCreateCopy.java index b03a5ce869ddc659743a66c2d06dd98a7bb56262..414188c122bd145adb4cacc88dc4a2d8cb3e7032 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectCreateCopy.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectCreateCopy.java @@ -32,13 +32,13 @@ import org.eclipse.swt.dnd.FileTransfer; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.handlers.HandlerUtil; import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.DBNResource; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dnd.TreeNodeTransfer; import org.jkiss.dbeaver.ui.navigator.NavigatorUtils; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -99,7 +99,7 @@ public class NavigatorHandlerObjectCreateCopy extends NavigatorHandlerObjectCrea assert targetResource != null; final IContainer targetFolder = targetResource instanceof IContainer ? (IContainer) targetResource : targetResource.getParent(); try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { @@ -162,7 +162,7 @@ public class NavigatorHandlerObjectCreateCopy extends NavigatorHandlerObjectCrea assert targetResource != null; final IContainer targetFolder = targetResource instanceof IContainer ? (IContainer) targetResource : targetResource.getParent(); try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectOpen.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectOpen.java index 9c84e264cddfe7e4bf932329ab82c11798a2ef5b..ce14fd30853b4ca38fb55a83c91dca7153621e89 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectOpen.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectOpen.java @@ -36,7 +36,6 @@ import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.app.DBPResourceHandler; import org.jkiss.dbeaver.model.edit.DBEObjectEditor; import org.jkiss.dbeaver.model.navigator.*; @@ -114,7 +113,7 @@ public class NavigatorHandlerObjectOpen extends NavigatorHandlerObjectBase imple { DBNDatabaseNode node = NavigatorHandlerObjectOpen.getNodeByObject(object); if (node != null) { - return NavigatorHandlerObjectOpen.openEntityEditor(node, null, DBeaverUI.getActiveWorkbenchWindow()); + return NavigatorHandlerObjectOpen.openEntityEditor(node, null, UIUtils.getActiveWorkbenchWindow()); } return null; } @@ -241,7 +240,7 @@ public class NavigatorHandlerObjectOpen extends NavigatorHandlerObjectBase imple private static void refreshDatabaseNode(@NotNull DBNDatabaseNode selectedNode) throws InvocationTargetException, InterruptedException { final DBNDatabaseNode nodeToRefresh = selectedNode; - DBeaverUI.runInProgressService(monitor -> { + UIUtils.runInProgressService(monitor -> { try { nodeToRefresh.refreshNode(monitor, nodeToRefresh); } catch (DBException e) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerRefresh.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerRefresh.java index 6668ed19f6235f4d5b4319b1a507d15fbb2bcf29..b8159fa0d57cd61a2c2126fc36f412c8ffc8d140 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerRefresh.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerRefresh.java @@ -32,7 +32,6 @@ import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.handlers.HandlerUtil; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNEvent; @@ -42,12 +41,10 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.IRefreshablePart; import org.jkiss.dbeaver.ui.UIConfirmation; -import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; -import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.IDatabaseEditorInput; import org.jkiss.dbeaver.ui.navigator.INavigatorModelView; -import org.jkiss.dbeaver.ui.navigator.NavigatorUtils; import java.util.*; @@ -148,7 +145,7 @@ public class NavigatorHandlerRefresh extends AbstractHandler { node = node.getParentNode(); } - IEditorPart nodeEditor = NavigatorHandlerObjectOpen.findEntityEditor(DBeaverUI.getActiveWorkbenchWindow(), node); + IEditorPart nodeEditor = NavigatorHandlerObjectOpen.findEntityEditor(UIUtils.getActiveWorkbenchWindow(), node); if (nodeEditor != null && nodeEditor.isDirty()) { if (!new UIConfirmation() { @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerToggleView.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerToggleView.java index d4d531728b85daed068b9dc68a66ef05f732269c..aa44873c5745358629b4ea5ba03b6c6df190502c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerToggleView.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerToggleView.java @@ -25,7 +25,6 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.commands.IElementUpdater; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.menus.UIElement; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.UIUtils; @@ -54,7 +53,7 @@ public class NavigatorHandlerToggleView extends AbstractHandler implements IElem @Override public void updateElement(UIElement element, Map parameters) { final String viewId = (String) parameters.get("viewId"); - final IViewPart view = DBeaverUI.getActiveWorkbenchWindow().getActivePage().findView(viewId); + final IViewPart view = UIUtils.getActiveWorkbenchWindow().getActivePage().findView(viewId); element.setChecked(view != null); } } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IProgressControlProvider.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/IProgressControlProvider.java similarity index 93% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IProgressControlProvider.java rename to plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/IProgressControlProvider.java index c7cbe19bb41dd12b8cb1efdc29356cd4fa8bcabd..f72d9db467ec771357e3386f5a13690dee5c4d1a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IProgressControlProvider.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/IProgressControlProvider.java @@ -1,30 +1,30 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.ui.controls.ProgressPageControl; - -/** - * IProgressControlProvider - */ -public interface IProgressControlProvider -{ - @Nullable - ProgressPageControl getProgressControl(); +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui.controls; + +import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.ui.controls.ProgressPageControl; + +/** + * IProgressControlProvider + */ +public interface IProgressControlProvider +{ + @Nullable + ProgressPageControl getProgressControl(); } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectCompilerLogViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectCompilerLogViewer.java index 8f925df7871f7c9d0702d92757e274e52d86e60d..72d3878ccf103c24034cb767d4c9f96e3bfc29e4 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectCompilerLogViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectCompilerLogViewer.java @@ -26,7 +26,6 @@ import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.IWorkbenchCommandConstants; import org.eclipse.ui.internal.WorkbenchMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.exec.compile.DBCCompileError; import org.jkiss.dbeaver.model.exec.compile.DBCCompileLogBase; import org.jkiss.dbeaver.ui.UIUtils; @@ -66,7 +65,7 @@ public class ObjectCompilerLogViewer extends DBCCompileLogBase { public void layoutLog() { - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { if (!infoTable.isDisposed()) { @@ -82,7 +81,7 @@ public class ObjectCompilerLogViewer extends DBCCompileLogBase { protected void log(final int type, final Object message, final Throwable t) { super.log(type, message, t); - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { if (infoTable == null || infoTable.isDisposed()) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectEditorPageControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectEditorPageControl.java index 1d7de25f4675bf1f51513c3dc5404f8c0a74bda4..b37d13459744ae366f95b2f946a647830576c892 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectEditorPageControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectEditorPageControl.java @@ -27,6 +27,7 @@ import org.jkiss.dbeaver.model.edit.DBEObjectManager; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry; +import org.jkiss.dbeaver.ui.ISearchExecutor; import org.jkiss.dbeaver.ui.editors.IDatabaseEditor; public class ObjectEditorPageControl extends ProgressPageControl { @@ -101,6 +102,24 @@ public class ObjectEditorPageControl extends ProgressPageControl { } } + @Override + protected ISearchExecutor getSearchRunner() { + ISearchExecutor searchRunner = super.getSearchRunner(); + if (searchRunner != null) { + return searchRunner; + } + return new ISearchExecutor() { + @Override + public boolean performSearch(String searchString, int options) { + return false; + } + + @Override + public void cancelSearch() { + + } + }; + } /* @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectViewerRenderer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectViewerRenderer.java index 2c7d7dce3771069be6d8af5559ccbcba7f138e67..cda31e0598f69e18753926cdc7131af95cd2cd94 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectViewerRenderer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ObjectViewerRenderer.java @@ -201,7 +201,7 @@ public abstract class ObjectViewerRenderer { } else { textBounds = ((TableItem) event.item).getTextBounds(event.index); } - linkLayout.draw(gc, textBounds.x, textBounds.y + 1); + linkLayout.draw(gc, textBounds.x, textBounds.y); } } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ProgressPageControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ProgressPageControl.java index 49b69c9f0b36a1ce57b07d0526edb7938dff6c2d..564e1f24b2d93a91a7facbaee6ba9ee779e41e63 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ProgressPageControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ProgressPageControl.java @@ -39,7 +39,6 @@ import org.eclipse.ui.part.MultiPageEditorSite; import org.eclipse.ui.progress.UIJob; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.ProxyProgressMonitor; import org.jkiss.dbeaver.model.runtime.load.ILoadVisualizer; @@ -358,7 +357,7 @@ public class ProgressPageControl extends Composite implements ISearchContextProv ((GridLayout)searchControlsComposite.getLayout()).numColumns = 2; searchText = new Text(searchControlsComposite, SWT.BORDER); - UIUtils.addDefaultEditActionsSupport(DBeaverUI.getActiveWorkbenchWindow(), this.searchText); + UIUtils.addDefaultEditActionsSupport(UIUtils.getActiveWorkbenchWindow(), this.searchText); if (curSearchText != null) { searchText.setText(curSearchText); searchText.setSelection(curSearchText.length()); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ScriptSelectorPanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ScriptSelectorPanel.java index 62798578f753ce73e30f8757d297d9c3a2bf7fa3..7fcd072690f2ad0cf2cd5b098f3bc91cb7074590 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ScriptSelectorPanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ScriptSelectorPanel.java @@ -38,7 +38,6 @@ import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.progress.UIJob; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBConstants; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.DBPDataSourceContainer; @@ -269,7 +268,7 @@ public class ScriptSelectorPanel { final TreeItem item = (TreeItem) event.item; final ResourceInfo ri = (ResourceInfo) item.getData(); if (ri != null && !ri.isDirectory() && CommonUtils.isEmpty(item.getText(2))) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { if (!item.isDisposed()) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StringEditorTable.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StringEditorTable.java new file mode 100644 index 0000000000000000000000000000000000000000..677034ac2f8bd09b15793c9d75cac31fa9f01a00 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StringEditorTable.java @@ -0,0 +1,182 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls; + +import org.eclipse.jface.fieldassist.ContentProposalAdapter; +import org.eclipse.jface.fieldassist.IContentProposalProvider; +import org.eclipse.jface.fieldassist.TextContentAdapter; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.*; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.*; +import org.jkiss.code.NotNull; +import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.model.DBPImage; +import org.jkiss.dbeaver.ui.DBeaverIcons; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.utils.CommonUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * Table with editable string rows + */ +public class StringEditorTable { + + public static Table createEditableList( + @NotNull Composite parent, + @NotNull String name, + @Nullable List values, + @Nullable DBPImage icon, + @Nullable IContentProposalProvider proposalProvider) + { + Group group = UIUtils.createControlGroup(parent, name, 2, GridData.FILL_BOTH, 0); + + final Table valueTable = new Table(group, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); + final GridData gd = new GridData(GridData.FILL_BOTH); + gd.widthHint = 300; + gd.heightHint = 100; + valueTable.setLayoutData(gd); + // valueTable.setHeaderVisible(true); + valueTable.setLinesVisible(true); + + final TableColumn valueColumn = UIUtils.createTableColumn(valueTable, SWT.LEFT, CoreMessages.dialog_filter_table_column_value); + + valueTable.addControlListener(new ControlAdapter() { + @Override + public void controlResized(ControlEvent e) { + valueColumn.setWidth(valueTable.getClientArea().width); + } + }); + + fillFilterValues(valueTable, values, icon); + + final CustomTableEditor tableEditor = new CustomTableEditor(valueTable) { + { + firstTraverseIndex = 0; + lastTraverseIndex = 0; + //editOnEnter = false; + } + @Override + protected Control createEditor(Table table, int index, TableItem item) { + Text editor = new Text(table, SWT.BORDER); + editor.setText(item.getText()); + editor.addModifyListener(e -> { + // Save value immediately. This solves MacOS problems with focus events. + saveEditorValue(editor, index, item); + }); + if (proposalProvider != null) { + setProposalAdapter(UIUtils.installContentProposal( + editor, + new TextContentAdapter(), + proposalProvider, + true, + false)); + } + return editor; + } + @Override + protected void saveEditorValue(Control control, int index, TableItem item) { + item.setText(((Text) control).getText().trim()); + } + }; + + Composite buttonsGroup = UIUtils.createPlaceholder(group, 1, 5); + buttonsGroup.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + final Button addButton = new Button(buttonsGroup, SWT.PUSH); + addButton.setText(CoreMessages.dialog_filter_button_add); + addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + Button removeButton = new Button(buttonsGroup, SWT.PUSH); + removeButton.setText(CoreMessages.dialog_filter_button_remove); + removeButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + removeButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + int selectionIndex = valueTable.getSelectionIndex(); + if (selectionIndex >= 0) { + tableEditor.closeEditor(); + valueTable.remove(selectionIndex); + removeButton.setEnabled(valueTable.getSelectionIndex() >= 0); + } + } + }); + removeButton.setEnabled(false); + + final Button clearButton = new Button(buttonsGroup, SWT.PUSH); + clearButton.setText(CoreMessages.dialog_filter_button_clear); + clearButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + clearButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + tableEditor.closeEditor(); + valueTable.removeAll(); + removeButton.setEnabled(false); + } + }); + + addButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + TableItem newItem = new TableItem(valueTable, SWT.LEFT); + if (icon != null) { + newItem.setImage(DBeaverIcons.getImage(icon)); + } + valueTable.setSelection(newItem); + tableEditor.closeEditor(); + tableEditor.showEditor(newItem); + removeButton.setEnabled(true); + } + }); + + valueTable.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + int selectionIndex = valueTable.getSelectionIndex(); + removeButton.setEnabled(selectionIndex >= 0); + } + }); + return valueTable; + } + + public static void fillFilterValues(Table valueTable, List values, DBPImage icon) { + valueTable.removeAll(); + if (!CommonUtils.isEmpty(values)) { + for (String value : values) { + TableItem tableItem = new TableItem(valueTable, SWT.LEFT); + tableItem.setText(value); + if (icon != null) { + tableItem.setImage(DBeaverIcons.getImage(icon)); + } + } + } + } + + public static List collectValues(Table table) { + List values = new ArrayList<>(); + for (TableItem item : table.getItems()) { + String value = item.getText().trim(); + if (value.isEmpty() || value.equals("%")) { //$NON-NLS-1$ + continue; + } + values.add(value); + } + return values; + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ViewerColumnController.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ViewerColumnController.java index d8521698287b44c3e85f2ddc90698c5181a208d0..b6787016132b0bf4fb217901992d1b46160d5c91 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ViewerColumnController.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ViewerColumnController.java @@ -28,6 +28,7 @@ import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.ui.ILabelProviderEx; import org.jkiss.dbeaver.ui.ILazyLabelProvider; import org.jkiss.dbeaver.ui.UIIcon; @@ -173,10 +174,13 @@ public class ViewerColumnController { try { boolean needRefresh = false; for (ColumnInfo columnInfo : columns) { + boolean columnExists = (columnInfo.column != null); + if (columnExists != columnInfo.visible) { + needRefresh = true; + } if (columnInfo.column != null) { columnInfo.column.dispose(); columnInfo.column = null; - needRefresh = true; } } createVisibleColumns(); @@ -190,7 +194,7 @@ public class ViewerColumnController { } }); } - if (needRefresh) { + if (needRefresh && pack) { viewer.refresh(); for (ColumnInfo columnInfo : getVisibleColumns()) { if (columnInfo.column instanceof TreeColumn) { @@ -359,7 +363,17 @@ public class ViewerColumnController { private void readColumnsConfiguration() { final Collection savedConfig = ViewerColumnRegistry.getInstance().getSavedConfig(configId); - if (savedConfig == null) { + if (savedConfig == null || savedConfig.isEmpty()) { + return; + } + boolean hasVisible = false; + for (ViewerColumnRegistry.ColumnState savedState : savedConfig) { + if (savedState.visible) { + hasVisible = true; + break; + } + } + if (!hasVisible) { return; } for (ColumnInfo columnInfo : columns) { @@ -548,6 +562,26 @@ public class ViewerColumnController { super.okPressed(); } + @Override + protected void createButtonsForButtonBar(Composite parent) { + createButton(parent, IDialogConstants.DETAILS_ID, CoreMessages.dialog_edit_driver_button_reset_to_defaults, false); + super.createButtonsForButtonBar(parent); + } + + @Override + protected void buttonPressed(int buttonId) { + if (buttonId == IDialogConstants.DETAILS_ID) { + resetToDefaults(); + } + super.buttonPressed(buttonId); + } + + private void resetToDefaults() { + for (TableItem item : colTable.getItems()) { + ColumnInfo ci = (ColumnInfo) item.getData(); + item.setChecked(ci.defaultVisible); + } + } } private static class ColumnInfoComparator implements Comparator { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/folders/TabbedFolderList.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/folders/TabbedFolderList.java index 294bf60f121136a3307fed0a10bbd6b7c3781517..8d5a5cb8cd86d1d6b03dac1af370e09d14f0bf62 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/folders/TabbedFolderList.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/folders/TabbedFolderList.java @@ -40,7 +40,6 @@ import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.UIUtils; @@ -718,7 +717,7 @@ public class TabbedFolderList extends Composite { */ private void initColours() { Display display = Display.getCurrent(); - ISharedTextColors sharedColors = DBeaverUI.getSharedTextColors(); + ISharedTextColors sharedColors = UIUtils.getSharedTextColors(); ColorRegistry colorRegistry = UIUtils.getColorRegistry(); @@ -770,7 +769,7 @@ public class TabbedFolderList extends Composite { @Override public void setBackground(Color color) { super.setBackground(color); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { initColours(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java index 0049fb6ce0d575f722546a70105e88c73b8d9c85..18b791b13c53235618f835ca997c4f2eb6ba92a8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java @@ -26,7 +26,6 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPImage; import org.jkiss.dbeaver.model.DBPObject; @@ -44,6 +43,7 @@ import org.jkiss.dbeaver.model.struct.DBSWrapper; import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry; import org.jkiss.dbeaver.runtime.properties.PropertySourceAbstract; import org.jkiss.dbeaver.runtime.properties.PropertySourceEditable; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.controls.ListContentProvider; import org.jkiss.dbeaver.ui.controls.ObjectViewerRenderer; @@ -102,7 +102,7 @@ public abstract class NodeListControl extends ObjectListControl impleme protected void openNodeEditor(DBNNode node) { IServiceLocator serviceLocator = workbenchSite != null ? workbenchSite : - DBeaverUI.getActiveWorkbenchWindow(); + UIUtils.getActiveWorkbenchWindow(); NavigatorUtils.executeNodeAction(DBXTreeNodeHandler.Action.open, node, serviceLocator); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java index 4a6e2820d5a38152bb254adb288c29c3b31d8ce4..3530185a864eb92acd349d70718a42bc384a428b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java @@ -40,7 +40,6 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPImage; import org.jkiss.dbeaver.model.DBPNamedObject; import org.jkiss.dbeaver.model.DBValueFormatting; @@ -1140,7 +1139,7 @@ public abstract class ObjectListControl extends ProgressPageControl if (!isDisposed()) { // Make refresh of whole table // Some other objects could also be updated implicitly with our lazy loader - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { if (!isDisposed()) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/GridColumn.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/GridColumn.java index 5899cab15d3bcc720245a774307fe67f8bdf1169..a02a85188bed9a144925fe0c97edfc8098e27053 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/GridColumn.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/GridColumn.java @@ -128,7 +128,9 @@ class GridColumn { int filterEnd = bounds.width - (sortBounds == null ? GridColumnRenderer.ARROW_MARGIN : sortBounds.width + GridColumnRenderer.IMAGE_SPACING); int filterBegin = filterEnd - filterBounds.width; - return x >= filterBegin && x <= filterEnd && y < bounds.y + (filterBounds == null ? 0 : filterBounds.height); + return + x >= filterBegin && x <= filterEnd && + y < bounds.y + (filterBounds == null ? 0 : filterBounds.height) + GridColumnRenderer.TOP_MARGIN; } public boolean isOverSortArrow(int x, int y) @@ -140,10 +142,12 @@ class GridColumn { if (y < bounds.y || y > bounds.y + bounds.height) { return false; } - int arrowEnd = bounds.width - rightMargin; + int arrowEnd = bounds.width - rightMargin + GridColumnRenderer.IMAGE_SPACING; Rectangle sortBounds = GridColumnRenderer.getSortControlBounds(); int arrowBegin = arrowEnd - sortBounds.width; - return x >= arrowBegin && x <= arrowEnd && y < bounds.y + sortBounds.height; + return + x >= arrowBegin && x <= arrowEnd && + y <= bounds.y + sortBounds.height + GridColumnRenderer.TOP_MARGIN; } public boolean isOverIcon(int x, int y) { @@ -217,7 +221,7 @@ class GridColumn { x += textWidth + rightMargin; } if (isSortable()) { - x += rightMargin + GridColumnRenderer.getSortControlBounds().width; + x += rightMargin + GridColumnRenderer.getSortControlBounds().width + GridColumnRenderer.IMAGE_SPACING; } x+= GridColumnRenderer.getFilterControlBounds().width; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/GridColumnRenderer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/GridColumnRenderer.java index 0e8f5edd5be95ae3b0af6f4ce479a8c9292234d3..ad0ce4b0fd42d1fe04a54ee5e27111788ef2ed96 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/GridColumnRenderer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/GridColumnRenderer.java @@ -43,7 +43,7 @@ class GridColumnRenderer extends AbstractRenderer public static final Image IMAGE_ASTERISK = DBeaverIcons.getImage(UIIcon.SORT_UNKNOWN); public static final Image IMAGE_DESC = DBeaverIcons.getImage(UIIcon.SORT_DECREASE); public static final Image IMAGE_ASC = DBeaverIcons.getImage(UIIcon.SORT_INCREASE); - public static final Image IMAGE_FILTER = DBeaverIcons.getImage(UIIcon.FILTER); + public static final Image IMAGE_FILTER = DBeaverIcons.getImage(UIIcon.FILTER_SMALL); public static final int SORT_WIDTH = IMAGE_DESC.getBounds().width; public static final int FILTER_WIDTH = IMAGE_FILTER.getBounds().width; @@ -153,6 +153,7 @@ class GridColumnRenderer extends AbstractRenderer sortBounds.x = bounds.x + bounds.width - ARROW_MARGIN - sortBounds.width; sortBounds.y = y; } + sortBounds.x += IMAGE_SPACING; paintSort(gc, sortBounds, sortOrder); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java index a120138de270bf31d19f7f797b85d00dc8cb1b78..c7dc4d2305d8a767cfb6baab1aa4f7b411b8e479 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java @@ -221,6 +221,7 @@ public abstract class LightGrid extends Canvas { private int headerHeight = 0; private boolean hoveringOnHeader = false; + private boolean hoveringOnColumnIcon = false; private boolean hoveringOnColumnSorter = false; private boolean hoveringOnColumnFilter = false; private boolean hoveringOnLink = false; @@ -1927,6 +1928,8 @@ public abstract class LightGrid extends Canvas { { boolean overSorter = false, overResizer = false, overFilter = false; hoveringOnHeader = false; + boolean overIcon = false; + if (y <= headerHeight) { int x2 = 0; @@ -1947,7 +1950,6 @@ public abstract class LightGrid extends Canvas { overSorter = true; } - } else { if (x > getRowHeaderWidth()) { for (GridColumn column : columns) { @@ -1964,7 +1966,12 @@ public abstract class LightGrid extends Canvas { overFilter = true; break; } - + + if (column.isOverIcon(x, y)) { + overIcon = true; + break; + } + x2 += column.getWidth(); if (x2 >= (x - COLUMN_RESIZER_THRESHOLD) && x2 <= (x + COLUMN_RESIZER_THRESHOLD)) { overResizer = true; @@ -1997,8 +2004,11 @@ public abstract class LightGrid extends Canvas { setCursor(null); } hoveringOnColumnSorter = overSorter; + } else if (overIcon != hoveringOnColumnIcon) { + setCursor(overIcon ? sortCursor : null); + hoveringOnColumnIcon = overIcon; } - + if(overFilter != hoveringOnColumnFilter) { if(overFilter) setCursor(sortCursor); @@ -2755,7 +2765,7 @@ public abstract class LightGrid extends Canvas { if (isListening(SWT.DragDetect)) { if (hoveringOnHeaderDragArea && hoveringColumn != null) { - if (e.button == 1 && hoveringColumn.isOverIcon(e.x, e.y)) { + if (e.button == 1 && (hoveringColumn.isOverIcon(e.x, e.y) || selectedColumns.contains(hoveringColumn))) { if (dragDetect(e)) { // Drag and drop started headerColumnDragStarted = true; @@ -4311,7 +4321,7 @@ public abstract class LightGrid extends Canvas { private void addDragAndDropSupport() { - final int operations = DND.DROP_MOVE;//DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK | DND.DROP_DEFAULT; + final int operations = DND.DROP_MOVE | DND.DROP_COPY;// | DND.DROP_MOVE | DND.DROP_LINK | DND.DROP_DEFAULT; final DragSource source = new DragSource(this, operations); source.setTransfer(GridColumnTransfer.INSTANCE, TextTransfer.getInstance()); @@ -4344,9 +4354,27 @@ public abstract class LightGrid extends Canvas { public void dragSetData (DragSourceEvent event) { if (draggingColumn != null) { if (GridColumnTransfer.INSTANCE.isSupportedType(event.dataType)) { - event.data = draggingColumn.getElement(); + List elements = new ArrayList<>(); + if (isDragSingleColumn()) { + elements.add(draggingColumn.getElement()); + } else { + for (GridColumn col : selectedColumns) { + elements.add(col.getElement()); + } + } + event.data = elements; } else if (TextTransfer.getInstance().isSupportedType(event.dataType)) { - event.data = getLabelProvider().getText(draggingColumn.getElement()); + // Copy all selected columns + if (selectedColumns.size() > 1 && !isDragSingleColumn()) { + StringBuilder text = new StringBuilder(); + for (GridColumn column : selectedColumns) { + if (text.length() > 0) text.append(", "); + text.append(getLabelProvider().getText(column.getElement())); + } + event.data = text.toString(); + } else { + event.data = getLabelProvider().getText(draggingColumn.getElement()); + } } } } @@ -4454,10 +4482,14 @@ public abstract class LightGrid extends Canvas { }); } + private boolean isDragSingleColumn() { + return draggingColumn != null && !selectedColumns.contains(draggingColumn); + } + - public final static class GridColumnTransfer extends LocalObjectTransfer { + public final static class GridColumnTransfer extends LocalObjectTransfer> { - private static final GridColumnTransfer INSTANCE = new GridColumnTransfer(); + public static final GridColumnTransfer INSTANCE = new GridColumnTransfer(); private static final String TYPE_NAME = "LighGrid.GridColumn Transfer" + System.currentTimeMillis() + ":" + INSTANCE.hashCode();//$NON-NLS-1$ private static final int TYPEID = registerType(TYPE_NAME); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java index 076df18e6c88d6a1229f6c9e333d97cd9c78492e..c68ac57dc9eb14075012c7c7b2f938bfca73e705 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java @@ -45,7 +45,6 @@ import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreCommands; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; @@ -66,7 +65,6 @@ import org.jkiss.dbeaver.ui.dialogs.sql.BaseSQLDialog; import org.jkiss.dbeaver.ui.editors.sql.handlers.OpenHandler; import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.dbeaver.utils.PrefUtils; -import org.jkiss.dbeaver.utils.RuntimeUtils; import org.jkiss.utils.ArrayUtils; import org.jkiss.utils.CommonUtils; import org.jkiss.utils.LongKeyMap; @@ -646,7 +644,7 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPrefere return; } // Run in UI thread - DBeaverUI.asyncExec(() -> updateMetaInfo(events)); + UIUtils.asyncExec(() -> updateMetaInfo(events)); } private synchronized void updateMetaInfo(final List events) @@ -909,7 +907,7 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPrefere } if (sql.length() > 0) { OpenHandler.openSQLConsole( - DBeaverUI.getActiveWorkbenchWindow(), + UIUtils.getActiveWorkbenchWindow(), dsContainer, "QueryManager", sql.toString() diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/AbstractPresentation.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/AbstractPresentation.java index 30722a1aee1d7cff51023aceaf2830a1a0541973..8edd5acdcc85fd57d9ebd6d5f5204e44d4376d26 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/AbstractPresentation.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/AbstractPresentation.java @@ -199,6 +199,9 @@ public abstract class AbstractPresentation implements IResultSetPresentation, IS performHorizontalScroll(e.count); } }); + + // Register DnD handlers for this presentation + controller.getDecorator().registerDragAndDrop(this); } protected void performHorizontalScroll(int scrollCount) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterSettingsDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterSettingsDialog.java index cbaabd8a9b9f54757bbcb8fbca0173d4b390ba1b..4ebe383b877ccf412e48f36f2a11ec5218bfacdd 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterSettingsDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterSettingsDialog.java @@ -32,7 +32,6 @@ import org.eclipse.ui.ISharedImages; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.DBValueFormatting; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; @@ -324,7 +323,7 @@ class FilterSettingsDialog extends HelpEnabledDialog { refreshData(); // Pack UI - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { UIUtils.packColumns(columnsViewer.getTree()); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetContainer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetContainer.java index 78d47c05974219e705d8f4ad5cc2e36826e1c6a6..ba450a3298a440217e3d222e4a71070e2ca81e6a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetContainer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetContainer.java @@ -60,4 +60,6 @@ public interface IResultSetContainer { */ void openNewContainer(DBRProgressMonitor monitor, @NotNull DBSDataContainer dataContainer, @NotNull DBDDataFilter newFilter); + IResultSetDecorator createResultSetDecorator(); + } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java index 6744a37f0c279f1b2d37cf406a39438f25f6a0fa..0e7a70b23e65f9629f03bba0c748d910689dbaf5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java @@ -19,6 +19,7 @@ package org.jkiss.dbeaver.ui.controls.resultset; import org.eclipse.jface.action.IMenuManager; import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IWorkbenchPartSite; import org.jkiss.code.NotNull; @@ -54,6 +55,9 @@ public interface IResultSetController extends DBPContextProvider { @NotNull IResultSetContainer getContainer(); + @NotNull + IResultSetDecorator getDecorator(); + @NotNull ResultSetModel getModel(); @@ -63,6 +67,8 @@ public interface IResultSetController extends DBPContextProvider { @NotNull DBDDataReceiver getDataReceiver(); + public Composite getControl(); + boolean hasData(); boolean isHasMoreData(); @@ -164,6 +170,8 @@ public interface IResultSetController extends DBPContextProvider { @NotNull IResultSetPresentation getActivePresentation(); + void setEmptyPresentation(); + IResultSetPanel getVisiblePanel(); IResultSetPanel[] getActivePanels(); @@ -186,4 +194,8 @@ public interface IResultSetController extends DBPContextProvider { void lockActionsByFocus(Control lockedBy); IResultSetSelection getSelection(); + + void addListener(IResultSetListener listener); + + void removeListener(IResultSetListener listener); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetDecorator.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..9f47de1a3a0650fd88b60c8ccf082dcda1ab088b --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetDecorator.java @@ -0,0 +1,42 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui.controls.resultset; + +import org.eclipse.jface.action.IContributionManager; + +/** + * ResultSet decorator. + */ +public interface IResultSetDecorator { + + long FEATURE_NONE = 0; + long FEATURE_FILTERS = 1; + long FEATURE_STATUS_BAR = 2; + long FEATURE_PANELS = 4; + long FEATURE_EDIT = 5; + + long getDecoratorFeatures(); + + String getEmptyDataMessage(); + + String getEmptyDataDescription(); + + void fillContributions(IContributionManager contributionManager); + + void registerDragAndDrop(IResultSetPresentation presentation); +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetListener.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetListener.java index 6f164b12b67bb55757f86beb6761dfd2d061ad44..77459b26d30c2e81f54002bb7933e0ea11d2155a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetListener.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetListener.java @@ -17,11 +17,16 @@ package org.jkiss.dbeaver.ui.controls.resultset; +import org.eclipse.jface.viewers.SelectionChangedEvent; + /** * Result set provider */ public interface IResultSetListener { + void handleResultSetLoad(); void handleResultSetChange(); + + void handleResultSetSelectionChange(SelectionChangedEvent event); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetPanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetPanel.java index dcb672f6d6c3d6ead552ec205bf98a6d4a1811c4..09c15609917a5e3672bdf39445fcd14bbf54502f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetPanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetPanel.java @@ -28,14 +28,10 @@ import org.jkiss.dbeaver.model.DBPImage; */ public interface IResultSetPanel { - String getPanelTitle(); - - DBPImage getPanelImage(); - - String getPanelDescription(); - Control createContents(IResultSetPresentation presentation, Composite parent); + boolean isDirty(); + void activatePanel(); void deactivatePanel(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetSelection.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetSelection.java index 1cbc41a50854a91ddf5ec111e2d06ae4c8726249..bf385893097a992da130a294c7a6c84e449cebb3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetSelection.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetSelection.java @@ -21,7 +21,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; -import java.util.Collection; +import java.util.List; /** * Result set selection @@ -32,10 +32,10 @@ public interface IResultSetSelection extends IStructuredSelection { IResultSetController getController(); @NotNull - Collection getSelectedAttributes(); + List getSelectedAttributes(); @NotNull - Collection getSelectedRows(); + List getSelectedRows(); DBDAttributeBinding getElementAttribute(Object element); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/QueryResultsDecorator.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/QueryResultsDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..99c4349d0d6a4bf892155b55ef5d5b18232fdf23 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/QueryResultsDecorator.java @@ -0,0 +1,52 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls.resultset; + +import org.eclipse.jface.action.IContributionManager; +import org.jkiss.dbeaver.core.CoreMessages; + +/** + * Decorator for query results + */ +public class QueryResultsDecorator implements IResultSetDecorator { + + @Override + public long getDecoratorFeatures() { + return FEATURE_FILTERS | FEATURE_STATUS_BAR | FEATURE_PANELS | FEATURE_EDIT; + } + + @Override + public String getEmptyDataMessage() { + return CoreMessages.sql_editor_resultset_filter_panel_control_no_data; + } + + @Override + public String getEmptyDataDescription() { + return null; + } + + @Override + public void fillContributions(IContributionManager contributionManager) { + + } + + @Override + public void registerDragAndDrop(IResultSetPresentation presentation) { + // No specific DnD handling + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCommandHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCommandHandler.java index d58082d1b1e23e18db65a4302b13a2b5058e9d33..93192ced71ce7d8c18383707e8af2a881184913e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCommandHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCommandHandler.java @@ -32,6 +32,7 @@ import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchCommandConstants; @@ -45,7 +46,6 @@ import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreCommands; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverActivator; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDDisplayFormat; import org.jkiss.dbeaver.model.edit.DBEPersistAction; @@ -111,6 +111,19 @@ public class ResultSetCommandHandler extends AbstractHandler { public static final String CMD_TOGGLE_ORDER = "org.jkiss.dbeaver.core.resultset.toggleOrder"; public static IResultSetController getActiveResultSet(IWorkbenchPart activePart) { + if (activePart != null) { + Shell shell = activePart.getSite().getShell(); + if (shell != null) { + for (Control focusControl = shell.getDisplay().getFocusControl(); focusControl != null; focusControl = focusControl.getParent()) { + ResultSetViewer viewer = (ResultSetViewer) focusControl.getData(ResultSetViewer.CONTROL_ID); + if (viewer != null) { + return viewer; + } + } + } + } + + if (activePart instanceof IResultSetContainer) { return ((IResultSetContainer) activePart).getResultSetController(); } else if (activePart instanceof MultiPageAbstractEditor) { @@ -125,10 +138,16 @@ public class ResultSetCommandHandler extends AbstractHandler { @Nullable @Override public Object execute(ExecutionEvent event) throws ExecutionException { - final ResultSetViewer rsv = (ResultSetViewer) getActiveResultSet(HandlerUtil.getActivePart(event)); + IWorkbenchPart activePart = HandlerUtil.getActivePart(event); + if (activePart == null) { + return null; + } + final ResultSetViewer rsv = (ResultSetViewer) getActiveResultSet(activePart); if (rsv == null) { return null; } + + Shell activeShell = HandlerUtil.getActiveShell(event); String actionId = event.getCommand().getId(); IResultSetPresentation presentation = rsv.getActivePresentation(); switch (actionId) { @@ -139,7 +158,7 @@ public class ResultSetCommandHandler extends AbstractHandler { rsv.toggleMode(); break; case CMD_TOGGLE_PANELS: - rsv.showPanels(!rsv.isPanelsVisible()); + rsv.showPanels(!rsv.isPanelsVisible(), true); break; case CMD_FOCUS_FILTER: rsv.switchFilterFocus(); @@ -230,7 +249,7 @@ public class ResultSetCommandHandler extends AbstractHandler { try { final List sqlScript = new ArrayList<>(); try { - DBeaverUI.runInProgressService(monitor -> { + UIUtils.runInProgressService(monitor -> { List script = rsv.generateChangesScript(monitor); if (script != null) { sqlScript.addAll(script); @@ -250,7 +269,7 @@ public class ResultSetCommandHandler extends AbstractHandler { "Actual parameter values may differ, what you see is a default string representation of values") + scriptText; ViewSQLDialog dialog = new ViewSQLDialog( - HandlerUtil.getActivePart(event).getSite(), + activePart.getSite(), rsv.getExecutionContext(), CoreMessages.editors_entity_dialog_preview_title, UIIcon.SQL_PREVIEW, @@ -264,16 +283,22 @@ public class ResultSetCommandHandler extends AbstractHandler { break; } case CMD_COPY_COLUMN_NAMES: { - ResultSetCopySpecialHandler.CopyConfigDialog configDialog = new ResultSetCopySpecialHandler.CopyConfigDialog(HandlerUtil.getActiveShell(event), "CopyGridNamesOptionsDialog"); - if (configDialog.open() != IDialogConstants.OK_ID) { - return null; - } StringBuilder buffer = new StringBuilder(); IResultSetSelection selection = rsv.getSelection(); - Collection attrs = selection.isEmpty() ? rsv.getModel().getVisibleAttributes() : selection.getSelectedAttributes(); + List attrs = selection.isEmpty() ? rsv.getModel().getVisibleAttributes() : selection.getSelectedAttributes(); + + ResultSetCopySettings settings = new ResultSetCopySettings(); + if (attrs.size() > 1) { + ResultSetCopySpecialHandler.CopyConfigDialog configDialog = new ResultSetCopySpecialHandler.CopyConfigDialog(activeShell, "CopyGridNamesOptionsDialog"); + if (configDialog.open() != IDialogConstants.OK_ID) { + return null; + } + settings = configDialog.copySettings; + } + for (DBDAttributeBinding attr : attrs) { if (buffer.length() > 0) { - buffer.append(configDialog.copySettings.getColumnDelimiter()); + buffer.append(settings.getColumnDelimiter()); } String colName = attr.getLabel(); if (CommonUtils.isEmpty(colName)) { @@ -281,20 +306,24 @@ public class ResultSetCommandHandler extends AbstractHandler { } buffer.append(colName); } + ResultSetUtils.copyToClipboard(buffer.toString()); break; } case CMD_COPY_ROW_NAMES: { - ResultSetCopySpecialHandler.CopyConfigDialog configDialog = new ResultSetCopySpecialHandler.CopyConfigDialog(HandlerUtil.getActiveShell(event), "CopyGridNamesOptionsDialog"); - if (configDialog.open() != IDialogConstants.OK_ID) { - return null; - } - StringBuilder buffer = new StringBuilder(); - IResultSetSelection selection = rsv.getSelection(); - for (ResultSetRow row : selection.getSelectedRows()) { + List selectedRows = rsv.getSelection().getSelectedRows(); + ResultSetCopySettings settings = new ResultSetCopySettings(); + if (selectedRows.size() > 1) { + ResultSetCopySpecialHandler.CopyConfigDialog configDialog = new ResultSetCopySpecialHandler.CopyConfigDialog(activeShell, "CopyGridNamesOptionsDialog"); + if (configDialog.open() != IDialogConstants.OK_ID) { + return null; + } + settings = configDialog.copySettings; + } + for (ResultSetRow row : selectedRows) { if (buffer.length() > 0) { - buffer.append(configDialog.copySettings.getRowDelimiter()); + buffer.append(settings.getRowDelimiter()); } buffer.append(row.getVisualNumber() + 1); } @@ -330,7 +359,7 @@ public class ResultSetCommandHandler extends AbstractHandler { FindReplaceAction action = new FindReplaceAction( DBeaverActivator.getCoreResourceBundle(), "Editor.FindReplace.", - HandlerUtil.getActiveShell(event), + activeShell, rsv.getAdapter(IFindReplaceTarget.class)); action.run(); break; @@ -376,7 +405,7 @@ public class ResultSetCommandHandler extends AbstractHandler { break; } GotoLineDialog d = new GotoLineDialog( - HandlerUtil.getActiveShell(event), + activeShell, "Go to Row", "Enter row number (1.." + rowCount + ")", String.valueOf(currentRow == null ? 1 : currentRow.getVisualNumber() + 1), diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetDataReceiver.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetDataReceiver.java index cea8070824aa881c822b7c7a22e385111c9b6ca8..c54949128c67a2ceb63a8f571a1d3509514d89bb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetDataReceiver.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetDataReceiver.java @@ -17,13 +17,13 @@ package org.jkiss.dbeaver.ui.controls.resultset; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.DBDAttributeBindingMeta; import org.jkiss.dbeaver.model.data.DBDDataReceiver; import org.jkiss.dbeaver.model.exec.*; import org.jkiss.dbeaver.model.struct.DBSDataContainer; import org.jkiss.dbeaver.model.struct.DBSEntity; +import org.jkiss.dbeaver.ui.UIUtils; import java.util.ArrayList; import java.util.HashMap; @@ -51,6 +51,7 @@ class ResultSetDataReceiver implements DBDDataReceiver { // All (unique) errors happened during fetch private List errorList = new ArrayList<>(); private int focusRow; + private DBSDataContainer targetDataContainer; ResultSetDataReceiver(ResultSetViewer resultSetViewer) { @@ -69,6 +70,14 @@ class ResultSetDataReceiver implements DBDDataReceiver { this.nextSegmentRead = nextSegmentRead; } + public void setFocusRow(int focusRow) { + this.focusRow = focusRow; + } + + public void setTargetDataContainer(DBSDataContainer targetDataContainer) { + this.targetDataContainer = targetDataContainer; + } + public List getErrorList() { return errorList; } @@ -143,7 +152,7 @@ class ResultSetDataReceiver implements DBDDataReceiver { try { // Read locators' metadata DBSEntity entity = null; - DBSDataContainer dataContainer = resultSetViewer.getDataContainer(); + DBSDataContainer dataContainer = targetDataContainer != null ? targetDataContainer : resultSetViewer.getDataContainer(); if (dataContainer instanceof DBSEntity) { entity = (DBSEntity) dataContainer; } @@ -156,7 +165,7 @@ class ResultSetDataReceiver implements DBDDataReceiver { final List tmpRows = rows; final boolean nextSegmentRead = this.nextSegmentRead; - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { // Push data into viewer if (!nextSegmentRead) { resultSetViewer.updatePresentation(resultSet); @@ -181,7 +190,4 @@ class ResultSetDataReceiver implements DBDDataReceiver { rows = new ArrayList<>(); } - public void setFocusRow(int focusRow) { - this.focusRow = focusRow; - } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java index 72dda78dc27e5201099550d1b28de8edde8d2d2b..41ae931a83bfeb66660d10c18cfab6530a9f133c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java @@ -37,7 +37,6 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDAttributeConstraint; @@ -54,6 +53,7 @@ import org.jkiss.dbeaver.model.struct.DBSEntity; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.*; import org.jkiss.dbeaver.ui.controls.StyledTextContentAdapter; +import org.jkiss.dbeaver.ui.controls.StyledTextUtils; import org.jkiss.dbeaver.ui.editors.StringEditorInput; import org.jkiss.dbeaver.ui.editors.SubEditorSite; import org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase; @@ -141,7 +141,8 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider this.filtersText = new StyledText(filterComposite, SWT.SINGLE); this.filtersText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - UIUtils.fillDefaultStyledTextContextMenu(filtersText); + StyledTextUtils.fillDefaultStyledTextContextMenu(filtersText); + StyledTextUtils.enableDND(this.filtersText); this.historyPanel = new HistoryPanel(filterComposite); this.refreshPanel = new RefreshPanel(filterComposite); @@ -561,7 +562,7 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider editorName = "Query"; } OpenHandler.openSQLConsole( - DBeaverUI.getActiveWorkbenchWindow(), + UIUtils.getActiveWorkbenchWindow(), dataContainer == null || dataContainer.getDataSource() == null ? null : dataContainer.getDataSource().getContainer(), editorName, getActiveQueryText() @@ -645,7 +646,7 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider @Override public void mouseDown(final MouseEvent e) { - DBeaverUI.asyncExec(() -> showObjectInfoPopup(e)); + UIUtils.asyncExec(() -> showObjectInfoPopup(e)); } }); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetJobDataRead.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetJobDataRead.java index fcf253ef1068cc91801a9a2ca758be40f62ae7ea..b6c25b675d832c398808ee39f76faa19fb64f5cb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetJobDataRead.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetJobDataRead.java @@ -25,7 +25,6 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.progress.UIJob; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.DBDDataFilter; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; @@ -35,6 +34,7 @@ import org.jkiss.dbeaver.model.exec.DBCStatistics; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.load.ILoadService; import org.jkiss.dbeaver.model.struct.DBSDataContainer; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.ProgressLoaderVisualizer; import java.lang.reflect.InvocationTargetException; @@ -135,7 +135,7 @@ class ResultSetJobDataRead extends ResultSetJobAbstract implements ILoadService< private ProgressLoaderVisualizer visualizer; PumpVisualizer(ProgressLoaderVisualizer visualizer) { - super(DBeaverUI.getDisplay(), "RSV Pump Visualizer"); + super(UIUtils.getDisplay(), "RSV Pump Visualizer"); setSystem(true); this.visualizer = visualizer; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetListenerAdapter.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetListenerAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..dd8f3cfc3101333a277e5bc0075c8ce250f286c5 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetListenerAdapter.java @@ -0,0 +1,41 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui.controls.resultset; + +import org.eclipse.jface.viewers.SelectionChangedEvent; + +/** + * Result set listener adapter + */ +public class ResultSetListenerAdapter implements IResultSetListener { + + @Override + public void handleResultSetLoad() { + + } + + @Override + public void handleResultSetChange() { + + } + + @Override + public void handleResultSetSelectionChange(SelectionChangedEvent event) { + + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetModel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetModel.java index 7a8ffa0e9a8b7e39588aaf49d0aec528e97825cd..c12cb77f359841f77c617bf4b1685e95ba27c456 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetModel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetModel.java @@ -663,9 +663,9 @@ public class ResultSetModel { } public boolean isAttributeReadOnly(@NotNull DBDAttributeBinding attribute) { - if (!isSingleSource()) { - return true; - } +// if (!isSingleSource()) { +// return true; +// } if (attribute.getMetaAttribute().isReadOnly()) { return true; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPersister.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPersister.java index 16623b25f7e79ff6d85fdaed6c4615adf69556ed..8358bdf31a718e5816fc4f8e1a8e7198939520d5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPersister.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPersister.java @@ -25,7 +25,6 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPMessageType; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.*; @@ -39,6 +38,7 @@ import org.jkiss.dbeaver.model.struct.DBSEntity; import org.jkiss.dbeaver.model.struct.rdb.DBSManipulationType; import org.jkiss.dbeaver.runtime.jobs.DataSourceJob; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.utils.CommonUtils; @@ -109,8 +109,29 @@ class ResultSetPersister { this.viewer = viewer; this.model = viewer.getModel(); this.columns = model.getAttributes(); + + collectChanges(); + } + + public boolean hasInserts() { + return !addedRows.isEmpty(); + } + + public boolean hasDeletes() { + return !deletedRows.isEmpty(); + } + + public boolean hasUpdates() { + return !changedRows.isEmpty(); } + public List getUpdatedAttributes() { + Set attrs = new LinkedHashSet<>(); + for (ResultSetRow row : changedRows) { + attrs.addAll(row.changes.keySet()); + } + return new ArrayList<>(attrs); + } /** * Applies changes. * @throws org.jkiss.dbeaver.DBException @@ -120,10 +141,12 @@ class ResultSetPersister { boolean applyChanges(@Nullable DBRProgressMonitor monitor, boolean generateScript, @Nullable DataUpdateListener listener) throws DBException { - collectChanges(); - - prepareDeleteStatements(); - prepareInsertStatements(); + if (hasDeletes()) { + prepareDeleteStatements(); + } + if (hasInserts()) { + prepareInsertStatements(); + } prepareUpdateStatements(); return execute(monitor, generateScript, listener); } @@ -414,7 +437,7 @@ class ResultSetPersister { if (!generateScript) { // Reflect changes - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { boolean rowsChanged = false; @@ -822,7 +845,7 @@ class ResultSetPersister { } // Ok, now we have refreshed values. Let's update real model - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { // Update only if metadata wasn't changed diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPresentationRegistry.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPresentationRegistry.java index a1b0e99c4b4f1137faf2e832b63efb30b3037317..55f0d0eddf901c1028fccd790a939d4aec97e393 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPresentationRegistry.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPresentationRegistry.java @@ -24,7 +24,6 @@ import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.exec.DBCResultSet; import java.util.ArrayList; -import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -58,12 +57,7 @@ public class ResultSetPresentationRegistry { presentations.add(descriptor); } } - Collections.sort(presentations, new Comparator() { - @Override - public int compare(ResultSetPresentationDescriptor o1, ResultSetPresentationDescriptor o2) { - return o1.getOrder() - o2.getOrder(); - } - }); + presentations.sort(Comparator.comparingInt(ResultSetPresentationDescriptor::getOrder)); // Load panel descriptors IConfigurationElement[] panelElements = registry.getConfigurationElementsFor(ResultSetPanelDescriptor.EXTENSION_ID); @@ -117,12 +111,7 @@ public class ResultSetPresentationRegistry { result.add(panel); } } - Collections.sort(result, new Comparator() { - @Override - public int compare(ResultSetPanelDescriptor o1, ResultSetPanelDescriptor o2) { - return o1.getLabel().compareTo(o2.getLabel()); - } - }); + result.sort(Comparator.comparing(ResultSetPanelDescriptor::getLabel)); return result; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java index 08bf0738fcb3a2b2d48d7317cf62594b1ccc63e4..88ef52035540cace620146e2ade18ecd0e5d53fb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java @@ -20,7 +20,6 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IWorkbenchPartSite; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPMessageType; import org.jkiss.dbeaver.model.DBUtils; @@ -32,6 +31,7 @@ import org.jkiss.dbeaver.model.exec.DBCAttributeMetaData; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.struct.DBSAttributeBase; import org.jkiss.dbeaver.model.struct.DBSTypedObject; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.data.IAttributeController; import org.jkiss.dbeaver.ui.data.IRowController; import org.jkiss.dbeaver.ui.data.IValueManager; @@ -133,7 +133,7 @@ public class ResultSetValueController implements IAttributeController, IRowContr boolean updated = controller.getModel().updateCellValue(binding, curRow, value); if (updated && updatePresentation) { // Update controls - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { controller.updatePanelsContent(false); @@ -198,7 +198,7 @@ public class ResultSetValueController implements IAttributeController, IRowContr @Override public boolean isReadOnly() { - return controller.getModel().isAttributeReadOnly(binding); + return controller.isAttributeReadOnly(binding); } @Override @@ -221,7 +221,7 @@ public class ResultSetValueController implements IAttributeController, IRowContr @Override public void showMessage(String message, DBPMessageType messageType) { - DBeaverUI.asyncExec(() -> controller.setStatus(message, messageType)); + UIUtils.asyncExec(() -> controller.setStatus(message, messageType)); } @NotNull diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java index 637f1415d7a57d2da78d4cb5dc3ae785dbeb8d5f..dd5188a1f799ab81e92b1ed9bd486f4069fa69b3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java @@ -22,13 +22,11 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.action.*; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.StringConverter; import org.eclipse.jface.text.IFindReplaceTarget; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.*; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.*; @@ -52,6 +50,7 @@ import org.eclipse.ui.actions.CompoundContributionItem; import org.eclipse.ui.menus.CommandContributionItem; import org.eclipse.ui.menus.CommandContributionItemParameter; import org.eclipse.ui.menus.IMenuService; +import org.eclipse.ui.texteditor.AbstractTextEditor; import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; @@ -62,7 +61,6 @@ import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.core.CoreCommands; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.data.*; import org.jkiss.dbeaver.model.edit.DBEPersistAction; @@ -85,6 +83,7 @@ import org.jkiss.dbeaver.ui.controls.resultset.view.EmptyPresentation; import org.jkiss.dbeaver.ui.controls.resultset.view.StatisticsPresentation; import org.jkiss.dbeaver.ui.data.IValueController; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; +import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.object.struct.EditConstraintPage; import org.jkiss.dbeaver.ui.editors.object.struct.EditDictionaryPage; import org.jkiss.dbeaver.ui.preferences.PrefPageDataFormat; @@ -122,12 +121,17 @@ public class ResultSetViewer extends Viewer private static final String SETTINGS_SECTION_PRESENTATIONS = "presentations"; + static final String CONTROL_ID = ResultSetViewer.class.getSimpleName(); + private static final DecimalFormat ROW_COUNT_FORMAT = new DecimalFormat("###,###,###,###,###,##0"); + private static final IResultSetListener[] EMPTY_LISTENERS = new IResultSetListener[0]; private IResultSetFilterManager filterManager; @NotNull private final IWorkbenchPartSite site; private final Composite viewerPanel; + private final IResultSetDecorator decorator; + @Nullable private ResultSetFilterPanel filtersPanel; private SashForm viewerSash; @@ -176,6 +180,8 @@ public class ResultSetViewer extends Viewer private AutoRefreshControl autoRefreshControl; private boolean actionsDisabled; + private Color defaultBackground, defaultForeground; + private static Action NOREFS_ACTION, REFS_TITLE_ACTION; static { @@ -192,6 +198,7 @@ public class ResultSetViewer extends Viewer this.site = site; this.recordMode = false; this.container = container; + this.decorator = container.createResultSetDecorator(); this.dataReceiver = new ResultSetDataReceiver(this); this.filterManager = Adapters.adapt(this, IResultSetFilterManager.class); @@ -202,14 +209,25 @@ public class ResultSetViewer extends Viewer loadPresentationSettings(); this.viewerPanel = UIUtils.createPlaceholder(parent, 1); + this.viewerPanel.setData(CONTROL_ID, this); UIUtils.setHelp(this.viewerPanel, IHelpContextIds.CTX_RESULT_SET_VIEWER); this.viewerPanel.setRedraw(false); + { + IPreferenceStore preferenceStore = EditorUtils.getEditorsPreferenceStore(); + String bgRGB = preferenceStore.getString(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND); + String fgRGB = preferenceStore.getString(AbstractTextEditor.PREFERENCE_COLOR_FOREGROUND); + defaultBackground = CommonUtils.isEmpty(bgRGB) ? viewerPanel.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND) : UIUtils.getSharedColor(bgRGB); + defaultForeground = CommonUtils.isEmpty(fgRGB) ? viewerPanel.getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND) : UIUtils.getSharedColor(fgRGB); + } + try { this.autoRefreshControl = new AutoRefreshControl( this.viewerPanel, ResultSetViewer.class.getSimpleName(), monitor -> refreshData(null)); - this.filtersPanel = new ResultSetFilterPanel(this); + if ((decorator.getDecoratorFeatures() & IResultSetDecorator.FEATURE_FILTERS) != 0) { + this.filtersPanel = new ResultSetFilterPanel(this); + } this.findReplaceTarget = new DynamicFindReplaceTarget(); this.viewerSash = UIUtils.createPartDivider(site.getPart(), viewerPanel, SWT.HORIZONTAL | SWT.SMOOTH); @@ -218,53 +236,57 @@ public class ResultSetViewer extends Viewer this.presentationPanel = UIUtils.createPlaceholder(this.viewerSash, 1); this.presentationPanel.setLayoutData(new GridData(GridData.FILL_BOTH)); - this.panelFolder = new CTabFolder(this.viewerSash, SWT.FLAT | SWT.TOP); - this.panelFolder.marginWidth = 0; - this.panelFolder.marginHeight = 0; - this.panelFolder.setMinimizeVisible(true); - this.panelFolder.setMRUVisible(true); - this.panelFolder.setLayoutData(new GridData(GridData.FILL_BOTH)); - - this.panelToolBar = new ToolBarManager(SWT.HORIZONTAL | SWT.RIGHT | SWT.FLAT); - ToolBar panelToolbarControl = this.panelToolBar.createControl(panelFolder); - this.panelFolder.setTopRight(panelToolbarControl, SWT.RIGHT | SWT.WRAP); - this.panelFolder.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - CTabItem activeTab = panelFolder.getSelection(); - if (activeTab != null) { - setActivePanel((String) activeTab.getData()); + if (supportsPanels()) { + this.panelFolder = new CTabFolder(this.viewerSash, SWT.FLAT | SWT.TOP); + this.panelFolder.marginWidth = 0; + this.panelFolder.marginHeight = 0; + this.panelFolder.setMinimizeVisible(true); + this.panelFolder.setMRUVisible(true); + this.panelFolder.setLayoutData(new GridData(GridData.FILL_BOTH)); + + this.panelToolBar = new ToolBarManager(SWT.HORIZONTAL | SWT.RIGHT | SWT.FLAT); + ToolBar panelToolbarControl = this.panelToolBar.createControl(panelFolder); + this.panelFolder.setTopRight(panelToolbarControl, SWT.RIGHT | SWT.WRAP); + this.panelFolder.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + CTabItem activeTab = panelFolder.getSelection(); + if (activeTab != null) { + setActivePanel((String) activeTab.getData()); + } + } + }); + this.panelFolder.addListener(SWT.Resize, event -> { + if (!viewerSash.isDisposed()) { + int[] weights = viewerSash.getWeights(); + getPresentationSettings().panelRatio = weights[1]; + } + }); + this.panelFolder.addCTabFolder2Listener(new CTabFolder2Adapter() { + @Override + public void close(CTabFolderEvent event) { + CTabItem item = (CTabItem) event.item; + String panelId = (String) item.getData(); + removePanel(panelId); } - } - }); - this.panelFolder.addListener(SWT.Resize, event -> { - if (!viewerSash.isDisposed()) { - int[] weights = viewerSash.getWeights(); - getPresentationSettings().panelRatio = weights[1]; - } - }); - this.panelFolder.addCTabFolder2Listener(new CTabFolder2Adapter() { - @Override - public void close(CTabFolderEvent event) { - CTabItem item = (CTabItem) event.item; - String panelId = (String) item.getData(); - removePanel(panelId); - } - @Override - public void minimize(CTabFolderEvent event) { - showPanels(false); - } + @Override + public void minimize(CTabFolderEvent event) { + showPanels(false, true); + } - @Override - public void maximize(CTabFolderEvent event) { + @Override + public void maximize(CTabFolderEvent event) { - } - }); + } + }); + } - setActivePresentation(new EmptyPresentation()); + setEmptyPresentation(); - createStatusBar(); + if (supportsStatusBar()) { + createStatusBar(); + } this.viewerPanel.addDisposeListener(e -> dispose()); @@ -272,6 +294,7 @@ public class ResultSetViewer extends Viewer } finally { this.viewerPanel.setRedraw(true); } + updateFiltersText(); } @@ -281,6 +304,11 @@ public class ResultSetViewer extends Viewer return container; } + @Override + public IResultSetDecorator getDecorator() { + return decorator; + } + AutoRefreshControl getAutoRefresh() { return autoRefreshControl; } @@ -288,6 +316,14 @@ public class ResultSetViewer extends Viewer //////////////////////////////////////////////////////////// // Filters + private boolean supportsPanels() { + return (decorator.getDecoratorFeatures() & IResultSetDecorator.FEATURE_PANELS) != 0; + } + + private boolean supportsStatusBar() { + return (decorator.getDecoratorFeatures() & IResultSetDecorator.FEATURE_STATUS_BAR) != 0; + } + boolean supportsDataFilter() { DBSDataContainer dataContainer = getDataContainer(); @@ -328,7 +364,7 @@ public class ResultSetViewer extends Viewer public void updateFiltersText(boolean resetFilterValue) { - if (this.viewerPanel.isDisposed()) { + if (filtersPanel == null || this.viewerPanel.isDisposed()) { return; } @@ -393,16 +429,21 @@ public class ResultSetViewer extends Viewer @NotNull @Override public Color getDefaultBackground() { + if (filtersPanel == null) { + return defaultBackground; + } return filtersPanel.getEditControl().getBackground(); } @NotNull @Override public Color getDefaultForeground() { + if (filtersPanel == null) { + return defaultForeground; + } return filtersPanel.getEditControl().getForeground(); } - private void persistConfig() { DBCExecutionContext context = getExecutionContext(); if (context != null) { @@ -423,6 +464,12 @@ public class ResultSetViewer extends Viewer return activePresentation; } + @Override + public void setEmptyPresentation() { + setActivePresentation(new EmptyPresentation()); + activePresentationDescriptor = null; + } + void updatePresentation(final DBCResultSet resultSet) { if (getControl().isDisposed()) { return; @@ -490,46 +537,52 @@ public class ResultSetViewer extends Viewer } } } finally { - if (changed) { - // Update combo - viewerPanel.setRedraw(false); - try { - boolean pVisible = activePresentationDescriptor != null; - ((RowData)presentationSwitchToolbar.getLayoutData()).exclude = !pVisible; - presentationSwitchToolbar.setVisible(pVisible); - if (!pVisible) { - presentationSwitchToolbar.setEnabled(false); - } else { - presentationSwitchToolbar.setEnabled(true); - for (ToolItem item : presentationSwitchToolbar.getItems()) item.dispose(); - for (ResultSetPresentationDescriptor pd : availablePresentations) { - ToolItem item = new ToolItem(presentationSwitchToolbar, SWT.CHECK); - item.setImage(DBeaverIcons.getImage(pd.getIcon())); - item.setText(pd.getLabel()); - item.setToolTipText(pd.getDescription()); - item.setData(pd); - if (pd == activePresentationDescriptor) { - item.setSelection(true); + if (changed && presentationSwitchToolbar != null) { + updatePresentationInToolbar(); + } + } + + } + + private void updatePresentationInToolbar() { + // Update combo + viewerPanel.setRedraw(false); + try { + boolean pVisible = activePresentationDescriptor != null; + ((RowData) presentationSwitchToolbar.getLayoutData()).exclude = !pVisible; + presentationSwitchToolbar.setVisible(pVisible); + if (!pVisible) { + presentationSwitchToolbar.setEnabled(false); + } else { + presentationSwitchToolbar.setEnabled(true); + for (ToolItem item : presentationSwitchToolbar.getItems()) item.dispose(); + for (ResultSetPresentationDescriptor pd : availablePresentations) { + ToolItem item = new ToolItem(presentationSwitchToolbar, SWT.CHECK); + item.setImage(DBeaverIcons.getImage(pd.getIcon())); + item.setText(pd.getLabel()); + item.setToolTipText(pd.getDescription()); + item.setData(pd); + if (pd == activePresentationDescriptor) { + item.setSelection(true); + } + item.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (e.widget != null && e.widget.getData() != null) { + switchPresentation((ResultSetPresentationDescriptor) e.widget.getData()); } - item.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (e.widget != null && e.widget.getData() != null) { - switchPresentation((ResultSetPresentationDescriptor) e.widget.getData()); - } - } - }); } - } - statusBar.layout(); - viewerPanel.layout(); - } finally { - // Enable redraw - viewerPanel.setRedraw(true); + }); } } + statusBar.layout(); + viewerPanel.layout(); + } catch (Exception e) { + log.debug("Error updating presentation toolbar", e); + } finally { + // Enable redraw + viewerPanel.setRedraw(true); } - } private void setActivePresentation(@NotNull IResultSetPresentation presentation) { @@ -539,8 +592,10 @@ public class ResultSetViewer extends Viewer for (Control child : presentationPanel.getChildren()) { child.dispose(); } - for (CTabItem panelItem : panelFolder.getItems()) { - panelItem.dispose(); + if (panelFolder != null) { + for (CTabItem panelItem : panelFolder.getItems()) { + panelItem.dispose(); + } } // Set new presentation @@ -558,7 +613,7 @@ public class ResultSetViewer extends Viewer activePresentation.createPresentation(this, presentationPanel); // Activate panels - { + if (supportsPanels()) { boolean panelsVisible = false; int[] panelWeights = new int[]{700, 300}; @@ -570,7 +625,7 @@ public class ResultSetViewer extends Viewer } activateDefaultPanels(settings); } - showPanels(panelsVisible); + showPanels(panelsVisible, false); viewerSash.setWeights(panelWeights); } @@ -591,10 +646,16 @@ public class ResultSetViewer extends Viewer } } + // Listen presentation selection change + if (presentation instanceof ISelectionProvider) { + ((ISelectionProvider) presentation).addSelectionChangedListener(event -> fireResultSetSelectionChange(event)); + } + + // Set focus in presentation control // Use async exec to avoid focus switch after user UI interaction (e.g. combo) if (focusInPresentation) { - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { Control control = activePresentation.getControl(); if (control != null && !control.isDisposed()) { control.setFocus(); @@ -701,8 +762,11 @@ public class ResultSetViewer extends Viewer @Override public void activatePanel(String id, boolean setActive, boolean showPanels) { + if (!supportsPanels()) { + return; + } if (showPanels && !isPanelsVisible()) { - showPanels(true); + showPanels(true, false); } PresentationSettings presentationSettings = getPresentationSettings(); @@ -740,10 +804,11 @@ public class ResultSetViewer extends Viewer boolean firstPanel = panelFolder.getItemCount() == 0; CTabItem panelTab = new CTabItem(panelFolder, SWT.CLOSE); panelTab.setData(id); - panelTab.setText(panel.getPanelTitle()); + panelTab.setText(panelDescriptor.getLabel()); panelTab.setImage(DBeaverIcons.getImage(panelDescriptor.getIcon())); - panelTab.setToolTipText(panel.getPanelDescription()); + panelTab.setToolTipText(panelDescriptor.getDescription()); panelTab.setControl(panelControl); + UIUtils.disposeControlOnItemDispose(panelTab); if (setActive || firstPanel) { panelFolder.setSelection(panelTab); @@ -790,6 +855,7 @@ public class ResultSetViewer extends Viewer if (panel != null) { panel.activatePanel(); updatePanelActions(); + savePresentationSettings(); } } @@ -800,7 +866,7 @@ public class ResultSetViewer extends Viewer } getPresentationSettings().enabledPanelIds.remove(panelId); if (activePanels.isEmpty()) { - showPanels(false); + showPanels(false, true); } } @@ -814,9 +880,11 @@ public class ResultSetViewer extends Viewer } private CTabItem getPanelTab(String panelId) { - for (CTabItem tab : panelFolder.getItems()) { - if (CommonUtils.equalObjects(tab.getData(), panelId)) { - return tab; + if (panelFolder != null) { + for (CTabItem tab : panelFolder.getItems()) { + if (CommonUtils.equalObjects(tab.getData(), panelId)) { + return tab; + } } } return null; @@ -826,8 +894,8 @@ public class ResultSetViewer extends Viewer return viewerSash != null && viewerSash.getMaximizedControl() == null; } - void showPanels(boolean show) { - if (show == isPanelsVisible()) { + void showPanels(boolean show, boolean saveSettings) { + if (!supportsPanels() || show == isPanelsVisible()) { return; } CTabItem activePanelTab = panelFolder.getSelection(); @@ -852,7 +920,9 @@ public class ResultSetViewer extends Viewer } getPresentationSettings().panelsVisible = show; - savePresentationSettings(); + if (saveSettings) { + savePresentationSettings(); + } } private List fillPanelsMenu() { @@ -860,6 +930,11 @@ public class ResultSetViewer extends Viewer for (final ResultSetPanelDescriptor panel : availablePanels) { Action panelAction = new Action(panel.getLabel(), Action.AS_CHECK_BOX) { + { + setToolTipText(panel.getDescription()); + // Icons turns menu into mess - checkboxes are much better + //setImageDescriptor(DBeaverIcons.getImageDescriptor(panel.getIcon())); + } @Override public boolean isChecked() { return activePanels.containsKey(panel.getId()); @@ -878,7 +953,6 @@ public class ResultSetViewer extends Viewer } } }; - //panelAction.setImageDescriptor(DBeaverIcons.getImageDescriptor(panel.getIcon())); items.add(new ActionContributionItem(panelAction)); } return items; @@ -982,6 +1056,7 @@ public class ResultSetViewer extends Viewer return null; } + @Override public void addListener(IResultSetListener listener) { synchronized (listeners) { @@ -989,6 +1064,7 @@ public class ResultSetViewer extends Viewer } } + @Override public void removeListener(IResultSetListener listener) { synchronized (listeners) { @@ -1013,7 +1089,9 @@ public class ResultSetViewer extends Viewer for (ToolBarManager tb : toolbarList) { UIUtils.updateContributionItems(tb); } - UIUtils.updateContributionItems(panelToolBar); + if (panelToolBar != null) { + UIUtils.updateContributionItems(panelToolBar); + } } public void redrawData(boolean attributesChanged, boolean rowsChanged) @@ -1200,8 +1278,6 @@ public class ResultSetViewer extends Viewer private void dispose() { - savePresentationSettings(); - clearData(); for (ToolBarManager tb : toolbarList) { @@ -1352,20 +1428,22 @@ public class ResultSetViewer extends Viewer } setStatus(statusMessage, hasWarnings ? DBPMessageType.WARNING : DBPMessageType.INFORMATION); - // Update row count label - if (!hasData()) { - rowCountLabel.setMessage("No Data"); - } else if (!isHasMoreData()) { - rowCountLabel.setMessage(ROW_COUNT_FORMAT.format(model.getRowCount())); - } else { - if (model.getTotalRowCount() == null) { - rowCountLabel.setMessage(ROW_COUNT_FORMAT.format(model.getRowCount()) + "+"); + if (rowCountLabel != null) { + // Update row count label + if (!hasData()) { + rowCountLabel.setMessage("No Data"); + } else if (!isHasMoreData()) { + rowCountLabel.setMessage(ROW_COUNT_FORMAT.format(model.getRowCount())); } else { - // We know actual row count - rowCountLabel.setMessage(ROW_COUNT_FORMAT.format(model.getTotalRowCount())); + if (model.getTotalRowCount() == null) { + rowCountLabel.setMessage(ROW_COUNT_FORMAT.format(model.getRowCount()) + "+"); + } else { + // We know actual row count + rowCountLabel.setMessage(ROW_COUNT_FORMAT.format(model.getTotalRowCount())); + } } + rowCountLabel.updateActionState(); } - rowCountLabel.updateActionState(); } private String getExecutionTimeMessage() @@ -1555,7 +1633,9 @@ public class ResultSetViewer extends Viewer @Override public boolean isReadOnly() { - if (model.isUpdateInProgress() || !(activePresentation instanceof IResultSetEditor)) { + if (model.isUpdateInProgress() || !(activePresentation instanceof IResultSetEditor) || + (decorator.getDecoratorFeatures() & IResultSetDecorator.FEATURE_EDIT) == 0) + { return true; } DBCExecutionContext executionContext = getExecutionContext(); @@ -1834,6 +1914,9 @@ public class ResultSetViewer extends Viewer if (isHasMoreData() && getDataContainer() != null && (getDataContainer().getSupportedFeatures() & DBSDataContainer.DATA_COUNT) != 0) { navigateMenu.add(ActionUtils.makeCommandContribution(site, ResultSetCommandHandler.CMD_COUNT)); } + navigateMenu.add(new Separator()); + navigateMenu.add(ActionUtils.makeCommandContribution(site, IWorkbenchCommandConstants.NAVIGATE_BACKWARD_HISTORY, CommandContributionItem.STYLE_PUSH, UIIcon.RS_BACK)); + navigateMenu.add(ActionUtils.makeCommandContribution(site, IWorkbenchCommandConstants.NAVIGATE_FORWARD_HISTORY, CommandContributionItem.STYLE_PUSH, UIIcon.RS_FORWARD)); manager.add(navigateMenu); } @@ -1872,6 +1955,8 @@ public class ResultSetViewer extends Viewer manager.add(new Separator()); manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); + + decorator.fillContributions(manager); } @Nullable @@ -1922,7 +2007,7 @@ public class ResultSetViewer extends Viewer } }; try { - DBeaverUI.runInProgressService(refCollector); + UIUtils.runInProgressService(refCollector); } catch (InvocationTargetException e) { log.error("Error reading referencing tables for '" + singleSource.getName() + "'", e.getTargetException()); } catch (InterruptedException e) { @@ -2143,6 +2228,9 @@ public class ResultSetViewer extends Viewer if (!confirmProceed()) { return; } + if (!newWindow && !confirmPanelsReset()) { + return; + } if (getExecutionContext() == null) { throw new DBException("Not connected"); @@ -2192,7 +2280,10 @@ public class ResultSetViewer extends Viewer DBSEntityAttributeRef ownAttr = ownAttrs.get(i); DBSEntityAttributeRef refAttr = refAttrs.get(i); DBDAttributeBinding ownBinding = model.getAttributeBinding(ownAttr.getAttribute()); - assert ownBinding != null; + if (ownBinding == null) { + DBUserInterface.getInstance().showError("Can't navigate", "Attribute " + ownAttr.getAttribute() + " is missing in result set"); + return; + } DBDAttributeConstraint constraint = new DBDAttributeConstraint(refAttr.getAttribute(), visualPosition++); constraint.setVisible(true); @@ -2265,12 +2356,13 @@ public class ResultSetViewer extends Viewer if (newWindow) { openResultsInNewWindow(monitor, targetEntity, newFilter); } else { + DBSDataContainer targetDataContainer = (DBSDataContainer) targetEntity; // Workaround for script results // In script mode history state isn't updated so we check for it here if (curState == null) { - setNewState(getDataContainer(), model.getDataFilter()); + setNewState(targetDataContainer, model.getDataFilter()); } - runDataPump((DBSDataContainer) targetEntity, newFilter, 0, getSegmentMaxRows(), -1, true, false, null); + runDataPump(targetDataContainer, newFilter, 0, getSegmentMaxRows(), -1, true, false, null); } } @@ -2278,6 +2370,30 @@ public class ResultSetViewer extends Viewer return new UIConfirmation() { @Override public Boolean runTask() { return checkForChanges(); } }.confirm(); } + private boolean confirmPanelsReset() { + return new UIConfirmation() { + @Override public Boolean runTask() { + boolean panelsDirty = false; + for (IResultSetPanel panel : getActivePanels()) { + if (panel.isDirty()) { + panelsDirty = true; + break; + } + } + if (panelsDirty) { + int result = ConfirmationDialog.showConfirmDialog( + viewerPanel.getShell(), + DBeaverPreferences.CONFIRM_RS_PANEL_RESET, + ConfirmationDialog.CONFIRM); + if (result == IDialogConstants.CANCEL_ID) { + return false; + } + } + return true; + } + }.confirm(); + } + private void openResultsInNewWindow(DBRProgressMonitor monitor, DBSEntity targetEntity, final DBDDataFilter newFilter) { if (targetEntity instanceof DBSDataContainer) { getContainer().openNewContainer(monitor, (DBSDataContainer) targetEntity, newFilter); @@ -2330,9 +2446,11 @@ public class ResultSetViewer extends Viewer addDefaultPanelActions(); panelToolBar.update(true); - ToolBar toolBar = panelToolBar.getControl(); - Point toolBarSize = toolBar.computeSize(SWT.DEFAULT, SWT.DEFAULT); - this.panelFolder.setTabHeight(toolBarSize.y); + if (this.panelFolder != null) { + ToolBar toolBar = panelToolBar.getControl(); + Point toolBarSize = toolBar.computeSize(SWT.DEFAULT, SWT.DEFAULT); + this.panelFolder.setTabHeight(toolBarSize.y); + } } @Override @@ -2421,7 +2539,7 @@ public class ResultSetViewer extends Viewer // Apply changes applyChanges(null, success -> { if (success) { - DBeaverUI.asyncExec(() -> refreshData(null)); + UIUtils.asyncExec(() -> refreshData(null)); } }); return false; @@ -2652,6 +2770,8 @@ public class ResultSetViewer extends Viewer } final Object presentationState = savePresentationState(); dataReceiver.setFocusRow(focusRow); + // Set explicit target container + dataReceiver.setTargetDataContainer(dataContainer); dataPumpJob = new ResultSetJobDataRead( dataContainer, useDataFilter, @@ -2663,7 +2783,9 @@ public class ResultSetViewer extends Viewer public void aboutToRun(IJobChangeEvent event) { model.setUpdateInProgress(true); model.setStatistics(null); - DBeaverUI.syncExec(() -> filtersPanel.enableFilters(false)); + if (filtersPanel != null) { + UIUtils.syncExec(() -> filtersPanel.enableFilters(false)); + } } @Override @@ -2677,68 +2799,65 @@ public class ResultSetViewer extends Viewer if (control.isDisposed()) { return; } - DBeaverUI.syncExec(new Runnable() { - @Override - public void run() { - try { - final Control control = getControl(); - if (control.isDisposed()) { - return; - } - final boolean metadataChanged = model.isMetadataChanged(); - if (error != null) { - setStatus(error.getMessage(), DBPMessageType.ERROR); - DBUserInterface.getInstance().showError( - "Error executing query", - "Query execution failed", - error); - } else { - if (!metadataChanged && focusRow >= 0 && focusRow < model.getRowCount() && model.getVisibleAttributeCount() > 0) { - // Seems to be refresh - // Restore original position - restorePresentationState(presentationState); - } - } - if (metadataChanged) { - activePresentation.updateValueView(); + UIUtils.syncExec(() -> { + try { + final Control control1 = getControl(); + if (control1.isDisposed()) { + return; + } + final boolean metadataChanged = model.isMetadataChanged(); + if (error != null) { + setStatus(error.getMessage(), DBPMessageType.ERROR); + DBUserInterface.getInstance().showError( + "Error executing query", + "Query execution failed", + error); + } else { + if (!metadataChanged && focusRow >= 0 && focusRow < model.getRowCount() && model.getVisibleAttributeCount() > 0) { + // Seems to be refresh + // Restore original position + restorePresentationState(presentationState); } - updatePanelsContent(false); + } + if (metadataChanged) { + activePresentation.updateValueView(); + } + updatePanelsContent(false); - if (!scroll) { - // Add new history item - if (saveHistory && error == null) { - setNewState(dataContainer, dataFilter); - } + if (!scroll) { + // Add new history item + if (saveHistory && error == null) { + setNewState(dataContainer, dataFilter); + } - if (dataFilter != null) { - model.updateDataFilter(dataFilter); - // New data filter may have different columns visibility - redrawData(true, false); - } + if (dataFilter != null) { + model.updateDataFilter(dataFilter); + // New data filter may have different columns visibility + redrawData(true, false); } - model.setUpdateInProgress(false); - if (job.getStatistics() == null || !job.getStatistics().isEmpty()) { - if (error == null) { - // Update status (update execution statistics) - updateStatusMessage(); - } - updateFiltersText(error == null); - updateToolbar(); - fireResultSetLoad(); + } + model.setUpdateInProgress(false); + if (job.getStatistics() == null || !job.getStatistics().isEmpty()) { + if (error == null) { + // Update status (update execution statistics) + updateStatusMessage(); } - // auto-refresh - autoRefreshControl.scheduleAutoRefresh(error != null); - } finally { - if (finalizer != null) { - try { - finalizer.run(); - } catch (Throwable e) { - log.error(e); - } + updateFiltersText(error == null); + updateToolbar(); + fireResultSetLoad(); + } + // auto-refresh + autoRefreshControl.scheduleAutoRefresh(error != null); + } finally { + if (finalizer != null) { + try { + finalizer.run(); + } catch (Throwable e) { + log.error(e); } - - dataPumpJob = null; } + + dataPumpJob = null; } }); } @@ -2822,9 +2941,9 @@ public class ResultSetViewer extends Viewer private ResultSetPersister createDataPersister(boolean skipKeySearch) throws DBException { - if (!skipKeySearch && !model.isSingleSource()) { - throw new DBException("Can't save data for result set from multiple sources"); - } +// if (!skipKeySearch && !model.isSingleSource()) { +// throw new DBException("Can't save data for result set from multiple sources"); +// } boolean needPK = false; if (!skipKeySearch) { for (ResultSetRow row : model.getAllRows()) { @@ -2834,13 +2953,12 @@ public class ResultSetViewer extends Viewer } } } + ResultSetPersister persister = new ResultSetPersister(this); if (needPK) { // If we have deleted or updated rows then check for unique identifier - if (!checkEntityIdentifier()) { - throw new DBException("No unique identifier defined"); - } + checkEntityIdentifiers(persister); } - return new ResultSetPersister(this); + return persister; } @NotNull @@ -3006,51 +3124,57 @@ public class ResultSetViewer extends Viewer } } - private boolean checkEntityIdentifier() throws DBException + private void checkEntityIdentifiers(ResultSetPersister persister) throws DBException { - DBSEntity entity = model.getSingleSource(); - if (entity == null) { - DBUserInterface.getInstance().showError( - "Unrecognized entity", - "Can't detect source entity"); - return false; - } + final DBCExecutionContext executionContext = getExecutionContext(); if (executionContext == null) { - return false; + throw new DBCException("Can't persist data - not connected to database"); } - // Check for value locators - // Probably we have only virtual one with empty attribute set - final DBDRowIdentifier identifier = getVirtualEntityIdentifier(); - if (identifier != null) { - if (CommonUtils.isEmpty(identifier.getAttributes())) { - // Empty identifier. We have to define it - return new UIConfirmation() { - @Override - public Boolean runTask() { - return ValidateUniqueKeyUsageDialog.validateUniqueKey(ResultSetViewer.this, executionContext); + + boolean needsSingleEntity = persister.hasInserts() || persister.hasDeletes(); + + DBSEntity entity = model.getSingleSource(); + if (needsSingleEntity) { + if (entity == null) { + throw new DBCException("Can't detect source entity"); + } + } + + if (entity != null) { + // Check for value locators + // Probably we have only virtual one with empty attribute set + final DBDRowIdentifier identifier = getVirtualEntityIdentifier(); + if (identifier != null) { + if (CommonUtils.isEmpty(identifier.getAttributes())) { + // Empty identifier. We have to define it + if (!new UIConfirmation() { + @Override + public Boolean runTask() { + return ValidateUniqueKeyUsageDialog.validateUniqueKey(ResultSetViewer.this, executionContext); + } + }.confirm()) + { + throw new DBCException("No unique key defined"); } - }.confirm(); + } } } - { + + List updatedAttributes = persister.getUpdatedAttributes(); + for (DBDAttributeBinding attr : updatedAttributes) { // Check attributes of non-virtual identifier - DBDRowIdentifier rowIdentifier = model.getVisibleAttribute(0).getRowIdentifier(); + DBDRowIdentifier rowIdentifier = attr.getRowIdentifier(); if (rowIdentifier == null) { // We shouldn't be here ever! // Virtual id should be created if we missing natural one - DBUserInterface.getInstance().showError( - "No entity identifier", - "Entity " + entity.getName() + " has no unique key"); - return false; + throw new DBCException("Attribute " + attr.getName() + " was changed but it hasn't associated unique key"); } else if (CommonUtils.isEmpty(rowIdentifier.getAttributes())) { - DBUserInterface.getInstance().showError( - "No entity identifier", - "Attributes of '" + DBUtils.getObjectFullName(rowIdentifier.getUniqueKey(), DBPEvaluationContext.UI) + "' are missing in result set"); - return false; + throw new DBCException( + "Can't change attribute '" + attr.getName() + + "' - attributes of key '" + DBUtils.getObjectFullName(rowIdentifier.getUniqueKey(), DBPEvaluationContext.UI) + "' are missing in result set"); } } - return true; } boolean editEntityIdentifier(DBRProgressMonitor monitor) throws DBException @@ -3096,23 +3220,33 @@ public class ResultSetViewer extends Viewer persistConfig(); } - void fireResultSetChange() { + @NotNull + private IResultSetListener[] getListenersCopy() { + IResultSetListener[] listenersCopy; synchronized (listeners) { - if (!listeners.isEmpty()) { - for (IResultSetListener listener : listeners) { - listener.handleResultSetChange(); - } + if (listeners.isEmpty()) { + return EMPTY_LISTENERS; } + listenersCopy = listeners.toArray(new IResultSetListener[listeners.size()]); + } + return listenersCopy; + } + + void fireResultSetChange() { + for (IResultSetListener listener : getListenersCopy()) { + listener.handleResultSetChange(); } } private void fireResultSetLoad() { - synchronized (listeners) { - if (!listeners.isEmpty()) { - for (IResultSetListener listener : listeners) { - listener.handleResultSetLoad(); - } - } + for (IResultSetListener listener : getListenersCopy()) { + listener.handleResultSetLoad(); + } + } + + private void fireResultSetSelectionChange(SelectionChangedEvent event) { + for (IResultSetListener listener : getListenersCopy()) { + listener.handleResultSetSelectionChange(event); } } @@ -3156,13 +3290,13 @@ public class ResultSetViewer extends Viewer @NotNull @Override - public Collection getSelectedAttributes() { + public List getSelectedAttributes() { return Collections.emptyList(); } @NotNull @Override - public Collection getSelectedRows() { + public List getSelectedRows() { return Collections.emptyList(); } @@ -3182,7 +3316,7 @@ public class ResultSetViewer extends Viewer @Override protected IContributionItem[] getContributionItems() { final ResultSetViewer rsv = (ResultSetViewer) ResultSetCommandHandler.getActiveResultSet( - DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActivePart()); + UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart()); if (rsv == null) { return new IContributionItem[0]; } @@ -3564,9 +3698,10 @@ public class ResultSetViewer extends Viewer if (dataSource == null) { return; } - DBPPreferenceStore preferenceStore = DBeaverCore.getGlobalPreferenceStore(); - boolean curValue = preferenceStore.getBoolean(DBeaverPreferences.RESULT_SET_COLORIZE_DATA_TYPES); - preferenceStore.setValue(DBeaverPreferences.RESULT_SET_COLORIZE_DATA_TYPES, !curValue); + DBPPreferenceStore dsStore = dataSource.getContainer().getPreferenceStore(); + boolean curValue = dsStore.getBoolean(DBeaverPreferences.RESULT_SET_COLORIZE_DATA_TYPES); + // Set local setting to default + dsStore.setValue(DBeaverPreferences.RESULT_SET_COLORIZE_DATA_TYPES, !curValue); refreshData(null); } @@ -3712,7 +3847,7 @@ public class ResultSetViewer extends Viewer @Override public void run() { - DBeaverUI.runUIJob("Edit virtual key", monitor -> { + UIUtils.runUIJob("Edit virtual key", monitor -> { try { if (define) { editEntityIdentifier(monitor); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/StatusDetailsDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/StatusDetailsDialog.java index bf64a40ea9707a72c0bd612e456df7c1c553901c..248aa071dbcd8e4013635389db89efe5c6169a3b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/StatusDetailsDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/StatusDetailsDialog.java @@ -20,13 +20,8 @@ import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.TraverseEvent; -import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.TableItem; +import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.EditTextDialog; import org.jkiss.dbeaver.ui.dialogs.ViewExceptionDialog; @@ -38,13 +33,11 @@ class StatusDetailsDialog extends EditTextDialog { private static final String DIALOG_ID = "DBeaver.StatusDetailsDialog";//$NON-NLS-1$ - private final ResultSetViewer resultSetViewer; private final List warnings; private Table warnTable; - public StatusDetailsDialog(ResultSetViewer resultSetViewer, String message, List warnings) { - super(resultSetViewer.getControl().getShell(), "Status details", message); - this.resultSetViewer = resultSetViewer; + public StatusDetailsDialog(Shell shell, String message, List warnings) { + super(shell, "Status details", message); this.warnings = warnings; textHeight = 100; setReadonly(true); @@ -90,13 +83,10 @@ class StatusDetailsDialog extends EditTextDialog { openWarning(); } }); - warnTable.addTraverseListener(new TraverseListener() { - @Override - public void keyTraversed(TraverseEvent e) { - if (e.detail == SWT.TRAVERSE_RETURN) { - openWarning(); - e.doit = false; - } + warnTable.addTraverseListener(e -> { + if (e.detail == SWT.TRAVERSE_RETURN) { + openWarning(); + e.doit = false; } }); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/StatusLabel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/StatusLabel.java index 576362d1a4b52c17b43484c9624292a1b576eea9..9d6fe8d0f9d9d91f868df51b0556b21ac9d3b6d5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/StatusLabel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/StatusLabel.java @@ -21,8 +21,6 @@ import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.TraverseEvent; -import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -30,6 +28,7 @@ import org.eclipse.swt.widgets.*; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.model.DBPMessageType; +import org.jkiss.dbeaver.model.data.DBDDataReceiver; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.TextUtils; import org.jkiss.dbeaver.ui.UIIcon; @@ -41,13 +40,13 @@ import org.jkiss.dbeaver.utils.RuntimeUtils; */ class StatusLabel extends Composite { - private final ResultSetViewer viewer; + private final IResultSetController viewer; private final Label statusIcon; private final Text statusText; //private final Color colorDefault, colorError, colorWarning; private DBPMessageType messageType; - public StatusLabel(@NotNull Composite parent, int style, @Nullable final ResultSetViewer viewer) { + public StatusLabel(@NotNull Composite parent, int style, @Nullable final IResultSetController viewer) { super(parent, SWT.BORDER); this.viewer = viewer; @@ -96,22 +95,22 @@ class StatusLabel extends Composite { showDetails(); } }); - statusText.addTraverseListener(new TraverseListener() { - @Override - public void keyTraversed(TraverseEvent e) { - if (e.detail == SWT.TRAVERSE_RETURN) { - showDetails(); - } + statusText.addTraverseListener(e -> { + if (e.detail == SWT.TRAVERSE_RETURN) { + showDetails(); } }); } protected void showDetails() { - StatusDetailsDialog dialog = new StatusDetailsDialog( - viewer, - getMessage(), - viewer.getDataReceiver().getErrorList()); - dialog.open(); + DBDDataReceiver dataReceiver = viewer.getDataReceiver(); + if (dataReceiver instanceof ResultSetDataReceiver) { + StatusDetailsDialog dialog = new StatusDetailsDialog( + viewer.getSite().getShell(), + getMessage(), + ((ResultSetDataReceiver) dataReceiver).getErrorList()); + dialog.open(); + } } public void setStatus(String message) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/TransformerSettingsDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/TransformerSettingsDialog.java index 532bfcdbde4fb79b137cb6f062480de3442c3a5b..232d5155eb4478589cf38a4b583575d6b2731346 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/TransformerSettingsDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/TransformerSettingsDialog.java @@ -23,7 +23,6 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDAttributeTransformerDescriptor; @@ -102,7 +101,7 @@ class TransformerSettingsDialog extends BaseDialog { propertiesEditor.getControl().setFocus(); if (CommonUtils.isEmpty(properties)) { - DBeaverUI.asyncExec(this::okPressed); + UIUtils.asyncExec(this::okPressed); } return parent; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/AggregateColumnsPanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/aggregate/AggregateColumnsPanel.java similarity index 97% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/AggregateColumnsPanel.java rename to plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/aggregate/AggregateColumnsPanel.java index 6ccb8cce87fb2690140d4419e8f43a1d3373f9ea..0c8dccb068a627b22a25c41772221f809b8b31e8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/AggregateColumnsPanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/aggregate/AggregateColumnsPanel.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jkiss.dbeaver.ui.controls.resultset.panel; +package org.jkiss.dbeaver.ui.controls.resultset.panel.aggregate; import org.eclipse.jface.action.*; import org.eclipse.jface.dialogs.IDialogSettings; @@ -72,21 +72,6 @@ public class AggregateColumnsPanel implements IResultSetPanel { public AggregateColumnsPanel() { } - @Override - public String getPanelTitle() { - return "Aggregate"; - } - - @Override - public DBPImage getPanelImage() { - return UIIcon.PANEL_AGGREGATE; - } - - @Override - public String getPanelDescription() { - return "Aggregate columns"; - } - @Override public Control createContents(final IResultSetPresentation presentation, Composite parent) { this.presentation = presentation; @@ -129,6 +114,11 @@ public class AggregateColumnsPanel implements IResultSetPanel { return this.aggregateTable; } + @Override + public boolean isDirty() { + return false; + } + private void loadSettings() { groupByColumns = panelSettings.getBoolean(PARAM_GROUP_BY_COLUMNS); IDialogSettings functionsSection = panelSettings.getSection("functions"); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingConfigDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingConfigDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..e8420ea0359ab2bdc7da033f2e10e62aa81fde30 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingConfigDialog.java @@ -0,0 +1,86 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls.resultset.panel.grouping; + +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.fieldassist.IContentProposalProvider; +import org.eclipse.jface.fieldassist.SimpleContentProposalProvider; +import org.eclipse.swt.widgets.*; +import org.jkiss.dbeaver.model.DBIcon; +import org.jkiss.dbeaver.model.data.DBDAttributeBinding; +import org.jkiss.dbeaver.ui.UIIcon; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.controls.StringEditorTable; +import org.jkiss.dbeaver.ui.dialogs.BaseDialog; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Grouping configuration dialog + */ +class GroupingConfigDialog extends BaseDialog +{ + private static final String DIALOG_ID = "DBeaver.GroupingConfigDialog";//$NON-NLS-1$ + + private final GroupingResultsContainer resultsContainer; + private Table columnsTable; + private Table functionsTable; + + public GroupingConfigDialog(Shell parentShell, GroupingResultsContainer resultsContainer) + { + super(parentShell, "Grouping configuration", UIIcon.PANEL_AGGREGATE); + this.resultsContainer = resultsContainer; + } + + @Override + protected IDialogSettings getDialogBoundsSettings() + { + return UIUtils.getDialogSettings(DIALOG_ID); + } + + @Override + protected Composite createDialogArea(Composite parent) + { + Composite composite = super.createDialogArea(parent); + + List proposals = new ArrayList<>(); + for (DBDAttributeBinding attr : resultsContainer.getOwnerPresentation().getController().getModel().getAttributes()) { + proposals.add(attr.getName()); + } + SimpleContentProposalProvider proposalProvider = new SimpleContentProposalProvider(new String[0]); + proposalProvider.setFiltering(true); + proposalProvider.setProposals(proposals.toArray(new String[0])); + columnsTable = StringEditorTable.createEditableList(composite, "Columns", resultsContainer.getGroupAttributes(), DBIcon.TREE_ATTRIBUTE, proposalProvider); + + Collections.addAll(proposals,"COUNT", "AVG", "MAX", "MIN", "SUM"); + proposalProvider.setProposals(proposals.toArray(new String[0])); + functionsTable = StringEditorTable.createEditableList(composite, "Functions", resultsContainer.getGroupFunctions(), DBIcon.TREE_FUNCTION, proposalProvider); + + return composite; + } + + @Override + protected void okPressed() { + List columns = StringEditorTable.collectValues(columnsTable); + List functions = StringEditorTable.collectValues(functionsTable); + resultsContainer.setGrouping(columns, functions); + super.okPressed(); + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingDataContainer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingDataContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..9d66e066622e4c6ec893455375d312a28065d1de --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingDataContainer.java @@ -0,0 +1,143 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls.resultset.panel.grouping; + +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.data.DBDDataFilter; +import org.jkiss.dbeaver.model.data.DBDDataReceiver; +import org.jkiss.dbeaver.model.exec.*; +import org.jkiss.dbeaver.model.messages.ModelMessages; +import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.model.sql.SQLUtils; +import org.jkiss.dbeaver.model.struct.DBSDataContainer; +import org.jkiss.dbeaver.model.struct.DBSObject; +import org.jkiss.dbeaver.ui.controls.resultset.IResultSetController; + +public class GroupingDataContainer implements DBSDataContainer { + + private static final Log log = Log.getLog(GroupingDataContainer.class); + + private IResultSetController parentController; + private String query; + + public GroupingDataContainer(IResultSetController parentController) { + this.parentController = parentController; + } + + @Override + public DBSObject getParentObject() { + return parentController.getDataContainer(); + } + + @Override + public String getName() { + return "Grouping"; + } + + @Override + public String getDescription() { + return "Grouping data"; + } + + @Override + public DBPDataSource getDataSource() { + return parentController.getDataContainer().getDataSource(); + } + + @Override + public int getSupportedFeatures() { + return DATA_SELECT; + } + + @Override + public DBCStatistics readData(DBCExecutionSource source, DBCSession session, DBDDataReceiver dataReceiver, DBDDataFilter dataFilter, long firstRow, long maxRows, long flags) throws DBCException { + DBCStatistics statistics = new DBCStatistics(); + boolean hasLimits = firstRow >= 0 && maxRows > 0; + + DBRProgressMonitor monitor = session.getProgressMonitor(); + + StringBuilder sqlQuery = new StringBuilder(this.query); + SQLUtils.appendQueryOrder(getDataSource(), sqlQuery, null, dataFilter); + + statistics.setQueryText(sqlQuery.toString()); + statistics.addStatementsCount(); + + monitor.subTask(ModelMessages.model_jdbc_fetch_table_data); + + try (DBCStatement dbStat = DBUtils.makeStatement( + source, + session, + DBCStatementType.SCRIPT, + sqlQuery.toString(), + firstRow, + maxRows)) + { + if (monitor.isCanceled()) { + return statistics; + } + long startTime = System.currentTimeMillis(); + boolean executeResult = dbStat.executeStatement(); + statistics.setExecuteTime(System.currentTimeMillis() - startTime); + if (executeResult) { + try (DBCResultSet dbResult = dbStat.openResultSet()) { + try { + dataReceiver.fetchStart(session, dbResult, firstRow, maxRows); + + startTime = System.currentTimeMillis(); + long rowCount = 0; + while (dbResult.nextRow()) { + if (monitor.isCanceled() || (hasLimits && rowCount >= maxRows)) { + // Fetch not more than max rows + break; + } + dataReceiver.fetchRow(session, dbResult); + rowCount++; + } + statistics.setFetchTime(System.currentTimeMillis() - startTime); + statistics.setRowsFetched(rowCount); + } finally { + // Signal that fetch was ended + try { + dataReceiver.fetchEnd(session, dbResult); + } catch (Throwable e) { + log.error("Error while finishing result set fetch", e); //$NON-NLS-1$ + } + } + } + } + return statistics; + } finally { + dataReceiver.close(); + } + } + + @Override + public long countData(DBCExecutionSource source, DBCSession session, DBDDataFilter dataFilter) throws DBCException { + return 0; + } + + @Override + public boolean isPersisted() { + return false; + } + + public void setGroupingQuery(String sql) { + this.query = sql; + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingPanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingPanel.java new file mode 100644 index 0000000000000000000000000000000000000000..fd1906b353a2f91afb58886b6ad41d1d4c2496d8 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingPanel.java @@ -0,0 +1,228 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls.resultset.panel.grouping; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.ToolBarManager; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.ISharedImages; +import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.model.DBPEvaluationContext; +import org.jkiss.dbeaver.model.data.DBDAttributeBinding; +import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.DBeaverIcons; +import org.jkiss.dbeaver.ui.UIIcon; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.controls.resultset.*; +import org.jkiss.utils.CommonUtils; + +import java.util.Collections; +import java.util.List; + +/** + * RSV grouping panel + */ +public class GroupingPanel implements IResultSetPanel { + + //private static final Log log = Log.getLog(GroupingPanel.class); + + public static final String PANEL_ID = "results-grouping"; + + public static final String SETTINGS_SECTION_GROUPING = "panel-" + PANEL_ID; + + private IResultSetPresentation presentation; + private IDialogSettings panelSettings; + + private GroupingResultsContainer resultsContainer; + + public GroupingPanel() { + } + + @Override + public Control createContents(final IResultSetPresentation presentation, Composite parent) { + this.presentation = presentation; + this.panelSettings = ResultSetUtils.getViewerSettings(SETTINGS_SECTION_GROUPING); + + loadSettings(); + + this.resultsContainer = new GroupingResultsContainer(parent, presentation); + + IResultSetController groupingViewer = this.resultsContainer.getResultSetController(); + + IResultSetListener ownerListener = new ResultSetListenerAdapter() { + String prevQueryText = null; + @Override + public void handleResultSetLoad() { + // Here we can refresh grouping (makes sense if source query was modified with some conditions) + // Or just clear it (if brand new query was executed) + String queryText = presentation.getController().getDataContainer().getName(); + if (prevQueryText != null && !CommonUtils.equalObjects(prevQueryText, queryText)) { + resultsContainer.clearGrouping(); + } else { + try { + resultsContainer.rebuildGrouping(); + } catch (DBException e) { + DBUserInterface.getInstance().showError("Grouping error", "Can't refresh grouping query", e); + } + } + prevQueryText = queryText; + } + }; + + this.presentation.getController().addListener(ownerListener); + groupingViewer.getControl().addDisposeListener(e -> + this.presentation.getController().removeListener(ownerListener)); + + IResultSetListener groupingResultsListener = new ResultSetListenerAdapter() { + @Override + public void handleResultSetLoad() { + updateControls(); + } + @Override + public void handleResultSetSelectionChange(SelectionChangedEvent event) { + updateControls(); + } + }; + groupingViewer.addListener(groupingResultsListener); + + return groupingViewer.getControl(); + } + + @Override + public boolean isDirty() { + return !resultsContainer.getGroupAttributes().isEmpty(); + } + + private void updateControls() { + // Update panel toolbar + this.presentation.getController().updatePanelActions(); + } + + private void loadSettings() { + IDialogSettings functionsSection = panelSettings.getSection("groups"); + } + + private void saveSettings() { + IDialogSettings functionsSection = UIUtils.getSettingsSection(panelSettings, "groups"); + } + + @Override + public void activatePanel() { + refresh(false); + } + + @Override + public void deactivatePanel() { + + } + + @Override + public void refresh(boolean force) { + } + + @Override + public void contributeActions(ToolBarManager manager) { + fillToolBar(manager); + } + + private void fillToolBar(IContributionManager contributionManager) + { + contributionManager.add(new EditColumnsAction(resultsContainer)); + contributionManager.add(new Separator()); + contributionManager.add(new DeleteColumnAction(resultsContainer)); + contributionManager.add(new ClearGroupingAction(resultsContainer)); + } + + abstract static class GroupingAction extends Action { + protected final GroupingResultsContainer resultsContainer; + + public GroupingAction(GroupingResultsContainer resultsContainer, String text, ImageDescriptor image) { + super(text, image); + this.resultsContainer = resultsContainer; + } + } + + static class EditColumnsAction extends GroupingAction { + public EditColumnsAction(GroupingResultsContainer resultsContainer) { + super(resultsContainer, CoreMessages.controls_resultset_grouping_edit, DBeaverIcons.getImageDescriptor(UIIcon.OBJ_ADD)); + } + + @Override + public void run() { + GroupingConfigDialog dialog = new GroupingConfigDialog(resultsContainer.getResultSetController().getControl().getShell(), resultsContainer); + if (dialog.open() == IDialogConstants.OK_ID) { + try { + resultsContainer.rebuildGrouping(); + } catch (DBException e) { + DBUserInterface.getInstance().showError("Grouping error", "Can't change grouping settings", e); + } + } + } + } + + static class DeleteColumnAction extends GroupingAction { + public DeleteColumnAction(GroupingResultsContainer resultsContainer) { + super(resultsContainer, CoreMessages.controls_resultset_grouping_remove_column, DBeaverIcons.getImageDescriptor(UIIcon.ACTION_OBJECT_DELETE)); + } + + @Override + public boolean isEnabled() { + return !resultsContainer.getResultSetController().getSelection().isEmpty(); + } + + @Override + public void run() { + DBDAttributeBinding currentAttribute = resultsContainer.getResultSetController().getActivePresentation().getCurrentAttribute(); + if (currentAttribute != null) { + List attributes = Collections.singletonList(currentAttribute.getFullyQualifiedName(DBPEvaluationContext.UI)); + if (resultsContainer.removeGroupingAttribute(attributes) || resultsContainer.removeGroupingFunction(attributes)) { + try { + resultsContainer.rebuildGrouping(); + } catch (DBException e) { + DBUserInterface.getInstance().showError("Grouping error", "Can't change grouping query", e); + } + } + } + } + } + + static class ClearGroupingAction extends GroupingAction { + public ClearGroupingAction(GroupingResultsContainer resultsContainer) { + super(resultsContainer, CoreMessages.controls_resultset_grouping_clear, UIUtils.getShardImageDescriptor(ISharedImages.IMG_ETOOL_CLEAR)); + } + + @Override + public boolean isEnabled() { + return !resultsContainer.getGroupAttributes().isEmpty(); + } + + @Override + public void run() { + resultsContainer.clearGrouping(); + resultsContainer.getOwnerPresentation().getController().updatePanelActions(); + } + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingResultsContainer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingResultsContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..462a239ea0c5bdf14833426aee5a5fa41d6e48b7 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingResultsContainer.java @@ -0,0 +1,220 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls.resultset.panel.grouping; + +import org.eclipse.swt.widgets.Composite; +import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.data.DBDDataFilter; +import org.jkiss.dbeaver.model.exec.DBCExecutionContext; +import org.jkiss.dbeaver.model.exec.DBCStatistics; +import org.jkiss.dbeaver.model.impl.DBObjectNameCaseTransformer; +import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.model.struct.DBSDataContainer; +import org.jkiss.dbeaver.ui.controls.resultset.*; +import org.jkiss.dbeaver.ui.controls.resultset.view.EmptyPresentation; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class GroupingResultsContainer implements IResultSetContainer { + + public static final String FUNCTION_COUNT = "COUNT"; + + public static final String DEFAULT_FUNCTION = FUNCTION_COUNT + "(*)"; + + private final IResultSetPresentation presentation; + private GroupingDataContainer dataContainer; + private ResultSetViewer groupingViewer; + private List groupAttributes = new ArrayList<>(); + private List groupFunctions = new ArrayList<>(); + + public GroupingResultsContainer(Composite parent, IResultSetPresentation presentation) { + this.presentation = presentation; + this.dataContainer = new GroupingDataContainer(presentation.getController()); + this.groupingViewer = new ResultSetViewer(parent, presentation.getController().getSite(), this); + + initDefaultSettings(); + } + + private void initDefaultSettings() { + this.groupAttributes.clear(); + this.groupFunctions.clear(); + addGroupingFunctions(Collections.singletonList(DEFAULT_FUNCTION)); + } + + public IResultSetPresentation getOwnerPresentation() { + return presentation; + } + + public List getGroupAttributes() { + return groupAttributes; + } + + public List getGroupFunctions() { + return groupFunctions; + } + + @Override + public DBCExecutionContext getExecutionContext() { + return presentation.getController().getExecutionContext(); + } + + @Override + public IResultSetController getResultSetController() { + return groupingViewer; + } + + @Override + public DBSDataContainer getDataContainer() { + return this.dataContainer; + } + + @Override + public boolean isReadyToRun() { + return true; + } + + @Override + public void openNewContainer(DBRProgressMonitor monitor, DBSDataContainer dataContainer, DBDDataFilter newFilter) { + + } + + @Override + public IResultSetDecorator createResultSetDecorator() { + return new GroupingResultsDecorator(this); + } + + public void addGroupingAttributes(List attributes) { + for (String attrName : attributes) { + attrName = cleanupObjectName(attrName); + if (!groupAttributes.contains(attrName)) { + groupAttributes.add(attrName); + } + } + } + + public boolean removeGroupingAttribute(List attributes) { + boolean changed = false; + for (String attrName : attributes) { + attrName = cleanupObjectName(attrName); + if (groupAttributes.contains(attrName)) { + groupAttributes.remove(attrName); + changed = true; + } + } + if (changed) { + resetDataFilters(); + } + return changed; + } + + private String cleanupObjectName(String attrName) { + DBPDataSource dataSource = getDataContainer().getDataSource(); + if (DBUtils.isQuotedIdentifier(dataSource, attrName)) { + attrName = DBUtils.getUnQuotedIdentifier(dataSource, attrName); + } else { + attrName = DBObjectNameCaseTransformer.transformName(dataSource, attrName); + } + return attrName; + } + + public void addGroupingFunctions(List functions) { + for (String func : functions) { + func = DBUtils.getUnQuotedIdentifier(getDataContainer().getDataSource(), func); + if (!groupFunctions.contains(func)) { + groupFunctions.add(func); + } + } + } + + public boolean removeGroupingFunction(List attributes) { + boolean changed = false; + for (String func : attributes) { + func = DBUtils.getUnQuotedIdentifier(getDataContainer().getDataSource(), func); + if (groupFunctions.contains(func)) { + groupFunctions.remove(func); + changed = true; + } + } + return changed; + } + + public void clearGrouping() { + initDefaultSettings(); + groupingViewer.resetDataFilter(false); + if (!(groupingViewer.getActivePresentation() instanceof EmptyPresentation)) { + groupingViewer.setEmptyPresentation(); + } + } + + public void rebuildGrouping() throws DBException { + if (groupAttributes.isEmpty() || groupFunctions.isEmpty()) { + getResultSetController().setEmptyPresentation(); + return; + } + DBCStatistics statistics = presentation.getController().getModel().getStatistics(); + if (statistics == null) { + throw new DBException("No main query - can't perform grouping"); + } + String queryText = statistics.getQueryText(); + if (queryText == null || queryText.isEmpty()) { + DBSDataContainer dataContainer = presentation.getController().getDataContainer(); + if (dataContainer != null) { + queryText = dataContainer.getName(); + } else { + throw new DBException("Empty data container"); + } + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT "); + for (int i = 0; i < groupAttributes.size(); i++) { + if (i > 0) sql.append(", "); + sql.append(groupAttributes.get(i)); + } + for (String func : groupFunctions) { + sql.append(", ").append(func); + } + sql.append(" FROM (\n"); + sql.append(queryText); + sql.append(") src\nGROUP BY "); + for (int i = 0; i < groupAttributes.size(); i++) { + if (i > 0) sql.append(", "); + sql.append(groupAttributes.get(i)); + } + + dataContainer.setGroupingQuery(sql.toString()); + groupingViewer.refresh(); + } + + public void setGrouping(List attributes, List functions) { + groupAttributes.clear(); + addGroupingAttributes(attributes); + + groupFunctions.clear(); + addGroupingFunctions(functions); + + resetDataFilters(); + } + + private void resetDataFilters() { + groupingViewer.getModel().createDataFilter(); + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingResultsDecorator.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingResultsDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..b0ecc80c0095fb2f9a21652bf4d24e5601532c0f --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/grouping/GroupingResultsDecorator.java @@ -0,0 +1,161 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls.resultset.panel.grouping; + +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.DropTarget; +import org.eclipse.swt.dnd.DropTargetAdapter; +import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.swt.dnd.TextTransfer; +import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.model.DBPEvaluationContext; +import org.jkiss.dbeaver.model.data.DBDAttributeBinding; +import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.controls.lightgrid.LightGrid; +import org.jkiss.dbeaver.ui.controls.resultset.IResultSetDecorator; +import org.jkiss.dbeaver.ui.controls.resultset.IResultSetPresentation; + +import java.util.ArrayList; +import java.util.List; + +/** + * Decorator for grouping panel + */ +public class GroupingResultsDecorator implements IResultSetDecorator { + + private GroupingResultsContainer container; + + public GroupingResultsDecorator(GroupingResultsContainer container) { + this.container = container; + } + + @Override + public long getDecoratorFeatures() { + return FEATURE_NONE; + } + + @Override + public String getEmptyDataMessage() { + return "No Groupings"; + } + + @Override + public String getEmptyDataDescription() { + return "Drag-and-drop results column(s) here to create grouping\nPress CONTROL to configure grouping settings"; + } + + @Override + public void fillContributions(IContributionManager contributionManager) { + contributionManager.add(new GroupingPanel.EditColumnsAction(container)); + contributionManager.add(new GroupingPanel.DeleteColumnAction(container)); + contributionManager.add(new GroupingPanel.ClearGroupingAction(container)); + } + + @Override + public void registerDragAndDrop(IResultSetPresentation presentation) { + // Register drop target to accept columns dropping + Object oldDropTarget = presentation.getControl().getData(DND.DROP_TARGET_KEY); + if (oldDropTarget instanceof DropTarget) { + ((DropTarget) oldDropTarget).dispose(); + } + DropTarget dropTarget = new DropTarget(presentation.getControl(), DND.DROP_MOVE | DND.DROP_COPY); + dropTarget.setTransfer(LightGrid.GridColumnTransfer.INSTANCE, TextTransfer.getInstance()); + dropTarget.addDropListener(new DropTargetAdapter() { + @Override + public void dragEnter(DropTargetEvent event) { + handleDragEvent(event); + } + + @Override + public void dragLeave(DropTargetEvent event) { + handleDragEvent(event); + } + + @Override + public void dragOperationChanged(DropTargetEvent event) { + handleDragEvent(event); + } + + @Override + public void dragOver(DropTargetEvent event) { + handleDragEvent(event); + } + + @Override + public void drop(DropTargetEvent event) { + handleDragEvent(event); + if (event.detail == DND.DROP_MOVE || event.detail == DND.DROP_COPY) { + dropColumns(event); + } + } + + @Override + public void dropAccept(DropTargetEvent event) { + handleDragEvent(event); + } + + private void handleDragEvent(DropTargetEvent event) { + if (!isDropSupported(event)) { + event.detail = DND.DROP_NONE; + } else { + if (event.detail == DND.DROP_NONE) { + event.detail = DND.DROP_MOVE; + } + } + event.feedback = DND.FEEDBACK_SELECT; + } + + private boolean isDropSupported(DropTargetEvent event) { + return true; + // TODO: check type + //ArrayUtils.contains(event.dataTypes, LightGrid.GridColumnTransfer.INSTANCE); + } + + @SuppressWarnings("unchecked") + private void dropColumns(DropTargetEvent event) { + if (!(event.data instanceof List)) { + return; + } + List dropElements = (List) event.data; + List attributeBindings = new ArrayList<>(); + for (Object element : dropElements) { + if (element instanceof DBDAttributeBinding) { + attributeBindings.add(((DBDAttributeBinding) element).getFullyQualifiedName(DBPEvaluationContext.DML)); + } + } + if (!attributeBindings.isEmpty()) { + container.addGroupingAttributes(attributeBindings); + } + if (event.detail == DND.DROP_COPY) { + GroupingConfigDialog dialog = new GroupingConfigDialog(container.getResultSetController().getControl().getShell(), container); + if (dialog.open() != IDialogConstants.OK_ID) { + container.clearGrouping(); + return; + } + } + try { + container.rebuildGrouping(); + } catch (DBException e) { + DBUserInterface.getInstance().showError("Grouping error", "Can't perform grouping query", e); + } + } + }); + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/MetaDataPanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/metadata/MetaDataPanel.java similarity index 95% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/MetaDataPanel.java rename to plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/metadata/MetaDataPanel.java index b896cbb800e55e5775af3a293bfdbb6382b14561..137fb36a6c780734fc4b0e126e6004f70125f468 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/MetaDataPanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/metadata/MetaDataPanel.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jkiss.dbeaver.ui.controls.resultset.panel; +package org.jkiss.dbeaver.ui.controls.resultset.panel.metadata; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IContributionManager; @@ -35,7 +35,6 @@ import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.load.DatabaseLoadService; import org.jkiss.dbeaver.ui.LoadingJob; -import org.jkiss.dbeaver.ui.UIIcon; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.TreeContentProvider; import org.jkiss.dbeaver.ui.controls.itemlist.DatabaseObjectListControl; @@ -64,21 +63,6 @@ public class MetaDataPanel implements IResultSetPanel { public MetaDataPanel() { } - @Override - public String getPanelTitle() { - return "MetaData"; - } - - @Override - public DBPImage getPanelImage() { - return UIIcon.PANEL_METADATA; - } - - @Override - public String getPanelDescription() { - return "Resultset metadata"; - } - @Override public Control createContents(final IResultSetPresentation presentation, Composite parent) { this.presentation = presentation; @@ -120,6 +104,12 @@ public class MetaDataPanel implements IResultSetPanel { return this.attributeList; } + + @Override + public boolean isDirty() { + return false; + } + private DBDAttributeBinding getSelectedAttribute() { IStructuredSelection selection = attributeList.getItemsViewer().getStructuredSelection(); if (!selection.isEmpty()) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ValueViewCommandHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewCommandHandler.java similarity index 89% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ValueViewCommandHandler.java rename to plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewCommandHandler.java index 4e1bb6f5894251bf33e3e4f60f8e8211826b0c7e..8baecfb2ad294c10165e2729abf52c473f609efd 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ValueViewCommandHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewCommandHandler.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jkiss.dbeaver.ui.controls.resultset.panel; +package org.jkiss.dbeaver.ui.controls.resultset.panel.valueviewer; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; @@ -43,12 +43,12 @@ public class ValueViewCommandHandler extends AbstractHandler { } String actionId = event.getCommand().getId(); IResultSetPanel visiblePanel = rsv.getVisiblePanel(); - if (visiblePanel instanceof ViewValuePanel) { + if (visiblePanel instanceof ValueViewerPanel) { switch (actionId) { case ITextEditorActionDefinitionIds.SMART_ENTER: case CoreCommands.CMD_EXECUTE_STATEMENT: case CMD_SAVE_VALUE: - ((ViewValuePanel) visiblePanel).saveValue(); + ((ValueViewerPanel) visiblePanel).saveValue(); break; } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ValueViewPropertyTester.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewPropertyTester.java similarity index 90% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ValueViewPropertyTester.java rename to plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewPropertyTester.java index 6a70d2f9a21fc6de473f6e2c2498e373d79293e3..78c356c9e8a6a16f4c69b271fc7328ba6a05708e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ValueViewPropertyTester.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewPropertyTester.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jkiss.dbeaver.ui.controls.resultset.panel; +package org.jkiss.dbeaver.ui.controls.resultset.panel.valueviewer; import org.eclipse.core.expressions.PropertyTester; import org.eclipse.ui.IWorkbenchPart; @@ -40,7 +40,7 @@ public class ValueViewPropertyTester extends PropertyTester private boolean checkResultSetProperty(ResultSetViewer rsv, String property, Object expectedValue) { IResultSetPanel visiblePanel = rsv.getVisiblePanel(); - if (visiblePanel instanceof ViewValuePanel) { + if (visiblePanel instanceof ValueViewerPanel) { switch (property) { case PROP_ACTIVE: return true; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ViewValuePanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewerPanel.java similarity index 94% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ViewValuePanel.java rename to plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewerPanel.java index 793448fc83dcd71756077cfbcc11f293a86d6147..59f39c9dcae205a4b0644d062d54837870f84bd4 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ViewValuePanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/valueviewer/ValueViewerPanel.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jkiss.dbeaver.ui.controls.resultset.panel; +package org.jkiss.dbeaver.ui.controls.resultset.panel.valueviewer; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.action.Action; @@ -37,7 +37,6 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.model.DBPImage; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDValue; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; @@ -56,9 +55,9 @@ import org.jkiss.utils.CommonUtils; /** * RSV value view panel */ -public class ViewValuePanel implements IResultSetPanel, IAdaptable { +public class ValueViewerPanel implements IResultSetPanel, IAdaptable { - private static final Log log = Log.getLog(ViewValuePanel.class); + private static final Log log = Log.getLog(ValueViewerPanel.class); public static final String PANEL_ID = "value-view"; public static final String SETTINGS_SECTION = "panel-" + PANEL_ID; @@ -79,22 +78,7 @@ public class ViewValuePanel implements IResultSetPanel, IAdaptable { return ResultSetUtils.getViewerSettings(SETTINGS_SECTION); } - public ViewValuePanel() { - } - - @Override - public String getPanelTitle() { - return "Value"; - } - - @Override - public DBPImage getPanelImage() { - return UIIcon.PANEL_VALUE; - } - - @Override - public String getPanelDescription() { - return "Value view/edit"; + public ValueViewerPanel() { } @Override @@ -107,7 +91,7 @@ public class ViewValuePanel implements IResultSetPanel, IAdaptable { if (viewPlaceholder.getChildren().length == 0) { String hidePanelCmd = ActionUtils.findCommandDescription( ResultSetCommandHandler.CMD_TOGGLE_PANELS, - ViewValuePanel.this.presentation.getController().getSite(), + ValueViewerPanel.this.presentation.getController().getSite(), true); UIUtils.drawMessageOverControl(viewPlaceholder, e, "Select a cell to view/edit value", 0); @@ -130,7 +114,7 @@ public class ViewValuePanel implements IResultSetPanel, IAdaptable { if (this.presentation instanceof ISelectionProvider) { final ISelectionProvider selectionProvider = (ISelectionProvider) this.presentation; final ISelectionChangedListener selectionListener = event -> { - if (ViewValuePanel.this.presentation.getController().getVisiblePanel() == ViewValuePanel.this) { + if (ValueViewerPanel.this.presentation.getController().getVisiblePanel() == ValueViewerPanel.this) { refreshValue(false); } }; @@ -141,6 +125,11 @@ public class ViewValuePanel implements IResultSetPanel, IAdaptable { return viewPlaceholder; } + @Override + public boolean isDirty() { + return valueEditor != null && valueEditor.isDirty(); + } + @Override public void activatePanel() { refreshValue(false); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/plaintext/PlainTextPresentation.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/plaintext/PlainTextPresentation.java index 80da2b852b0d07e0210086c29678d1a1e759a3eb..bd19881589826534288adb315b4daeaca1b18087 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/plaintext/PlainTextPresentation.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/plaintext/PlainTextPresentation.java @@ -31,7 +31,6 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.printing.PrintDialog; import org.eclipse.swt.printing.Printer; @@ -45,7 +44,6 @@ import org.eclipse.ui.themes.IThemeManager; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBeaverPreferences; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBConstants; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; @@ -57,7 +55,6 @@ import org.jkiss.dbeaver.ui.controls.StyledTextFindReplaceTarget; import org.jkiss.dbeaver.ui.controls.resultset.*; import org.jkiss.utils.CommonUtils; -import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -205,7 +202,7 @@ public class PlainTextPresentation extends AbstractPresentation implements IAdap horOffsetEnd - horOffsetBegin - 1, null, curLineColor); - DBeaverUI.asyncExec(() -> text.setStyleRanges(new StyleRange[]{curLineRange})); + UIUtils.asyncExec(() -> text.setStyleRanges(new StyleRange[]{curLineRange})); } } @@ -614,16 +611,16 @@ public class PlainTextPresentation extends AbstractPresentation implements IAdap @NotNull @Override - public Collection getSelectedAttributes() { + public List getSelectedAttributes() { if (curAttribute == null) { return Collections.emptyList(); } - return Collections.singleton(curAttribute); + return Collections.singletonList(curAttribute); } @NotNull @Override - public Collection getSelectedRows() + public List getSelectedRows() { ResultSetRow currentRow = controller.getCurrentRow(); if (currentRow == null) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/Spreadsheet.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/Spreadsheet.java index a59ed91524d674a44239e2b2ed3254d3d9809abb..b7b6c3311729b58d5899ce3c4020de71b505745c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/Spreadsheet.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/Spreadsheet.java @@ -31,8 +31,8 @@ import org.eclipse.ui.IWorkbenchPartSite; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBeaverPreferences; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.lightgrid.*; import org.jkiss.dbeaver.ui.controls.resultset.AbstractPresentation; @@ -311,7 +311,7 @@ public class Spreadsheet extends LightGrid implements Listener { case LightGrid.Event_NavigateLink: // Perform navigation async because it may change grid content and // we don't want to mess current grid state - DBeaverUI.asyncExec(() -> presentation.navigateLink((GridCell) event.data, event.stateMask)); + UIUtils.asyncExec(() -> presentation.navigateLink((GridCell) event.data, event.stateMask)); break; } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java index 0ca1239f81332d33491b05b1b2d01c3e81d03c1d..5ee0581c0319e3bc79a33b3479a44a29210b60c5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java @@ -71,7 +71,6 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.data.*; import org.jkiss.dbeaver.model.exec.DBCSession; @@ -88,7 +87,7 @@ import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.PropertyPageStandard; import org.jkiss.dbeaver.ui.controls.lightgrid.*; import org.jkiss.dbeaver.ui.controls.resultset.*; -import org.jkiss.dbeaver.ui.controls.resultset.panel.ViewValuePanel; +import org.jkiss.dbeaver.ui.controls.resultset.panel.valueviewer.ValueViewerPanel; import org.jkiss.dbeaver.ui.data.IMultiController; import org.jkiss.dbeaver.ui.data.IValueController; import org.jkiss.dbeaver.ui.data.IValueEditor; @@ -915,7 +914,7 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe if (ArrayUtils.contains(supportedEditTypes, IValueController.EditType.PANEL)) { // Inline editor isn't supported but panel viewer is // Enable panel - controller.activatePanel(ViewValuePanel.PANEL_ID, true, true); + controller.activatePanel(ValueViewerPanel.PANEL_ID, true, true); return null; } } @@ -1261,7 +1260,7 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe @NotNull @Override - public Collection getSelectedAttributes() { + public List getSelectedAttributes() { if (controller.isRecordMode()) { Object[] elements = spreadsheet.getContentProvider().getElements(false); List attrs = new ArrayList<>(); @@ -1285,7 +1284,7 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe @NotNull @Override - public Collection getSelectedRows() + public List getSelectedRows() { if (controller.isRecordMode()) { ResultSetRow currentRow = controller.getCurrentRow(); @@ -1592,7 +1591,7 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe normalColor.getRGB(), backgroundSelected.getRGB(), 50); - return DBeaverUI.getSharedTextColors().getColor(mixRGB); + return UIUtils.getSharedTextColors().getColor(mixRGB); } boolean recordMode = controller.isRecordMode(); ResultSetRow row = (ResultSetRow) (!recordMode ? rowElement : colElement); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/FilterValueEditPopup.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/FilterValueEditPopup.java index aad2eaeddd4c6dec1cb1d9f2a823ef69ac636286..6d703fdc1cc132972fff30b0de10a3a0346b6e71 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/FilterValueEditPopup.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/FilterValueEditPopup.java @@ -27,14 +27,11 @@ import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.TraverseEvent; -import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataKind; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDDisplayFormat; @@ -118,7 +115,7 @@ public class FilterValueEditPopup extends Dialog { FocusAdapter focusListener = new FocusAdapter() { @Override public void focusLost(FocusEvent e) { - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { if (!UIUtils.isParent(getShell(), getShell().getDisplay().getFocusControl())) { cancelPressed(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java index a0ac61ee0591912a085ef7cd1d0c0c951bdc24d3..a79667f82cd5be2d09085c22028d3e2e58edfafa 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java @@ -32,7 +32,6 @@ import org.eclipse.swt.widgets.Widget; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.DBValueFormatting; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; @@ -327,7 +326,7 @@ class GenericFilterValueEdit { abstract Collection readEnumeration(DBCSession session) throws DBException; void populateValues(@NotNull final Collection values) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { loadMultiValueList(values); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/view/EmptyPresentation.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/view/EmptyPresentation.java index f1a4ef4ad17cc5e087d91726effaabe41ea3aa52..c3abb384369b7eaa9d10afe67c15557b27ecfd8a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/view/EmptyPresentation.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/view/EmptyPresentation.java @@ -18,12 +18,7 @@ package org.jkiss.dbeaver.ui.controls.resultset.view; import org.eclipse.jface.action.IMenuManager; -import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; -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.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Point; @@ -33,15 +28,12 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.CoreCommands; -import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; -import org.jkiss.dbeaver.ui.ActionUtils; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.resultset.AbstractPresentation; import org.jkiss.dbeaver.ui.controls.resultset.IResultSetController; import org.jkiss.dbeaver.ui.controls.resultset.ResultSetCopySettings; -import org.jkiss.dbeaver.ui.editors.sql.SQLEditor; +import org.jkiss.utils.CommonUtils; /** * Empty presentation. @@ -65,30 +57,20 @@ public class EmptyPresentation extends AbstractPresentation { fontData[0].setStyle(fontData[0].getStyle() | SWT.BOLD); fontData[0].setHeight(18); final Font largeFont = new Font(normalFont.getDevice(), fontData[0]); - placeholder.addDisposeListener(new DisposeListener() { - @Override - public void widgetDisposed(DisposeEvent e) { - UIUtils.dispose(largeFont); - } - }); + placeholder.addDisposeListener(e -> UIUtils.dispose(largeFont)); - placeholder.addPaintListener(new PaintListener() { - @Override - public void paintControl(PaintEvent e) { - if (controller.isRefreshInProgress()) { - return; - } - e.gc.setFont(largeFont); - int fontSize = largeFont.getFontData()[0].getHeight(); - UIUtils.drawMessageOverControl(placeholder, e, CoreMessages.sql_editor_resultset_filter_panel_control_no_data, -(fontSize / 2)); - e.gc.setFont(normalFont); - if (controller.getDataContainer() instanceof SQLEditor.QueryResultsContainer) { - String execQuery = ActionUtils.findCommandDescription(CoreCommands.CMD_EXECUTE_STATEMENT, controller.getSite(), true); - String execScript = ActionUtils.findCommandDescription(CoreCommands.CMD_EXECUTE_SCRIPT, controller.getSite(), true); - UIUtils.drawMessageOverControl(placeholder, e, NLS.bind(CoreMessages.sql_editor_resultset_filter_panel_control_execute_to_see_reslut, execQuery, execScript), fontSize + fontSize / 3); - } + placeholder.addPaintListener(e -> { + if (controller.isRefreshInProgress()) { + return; + } + e.gc.setFont(largeFont); + int fontSize = largeFont.getFontData()[0].getHeight(); + UIUtils.drawMessageOverControl(placeholder, e, controller.getDecorator().getEmptyDataMessage(), -(fontSize / 2)); + e.gc.setFont(normalFont); + String emptyDataDescription = controller.getDecorator().getEmptyDataDescription(); + if (!CommonUtils.isEmpty(emptyDataDescription)) { + UIUtils.drawMessageOverControl(placeholder, e, emptyDataDescription, fontSize + fontSize / 3); } - }); trackPresentationControl(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/PendingTransactionsDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/PendingTransactionsDialog.java index 040352f2e92224152f30f5cac33facfc98dc3b14..17fbec4c0eae324410598c7ebe1d4c302749a140 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/PendingTransactionsDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/PendingTransactionsDialog.java @@ -23,7 +23,6 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.eclipse.ui.IWorkbenchPart; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.qm.QMTransactionState; import org.jkiss.dbeaver.model.qm.QMUtils; @@ -188,7 +187,7 @@ public class PendingTransactionsDialog extends TransactionInfoDialog { dsItem.setExpanded(true); } - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { UIUtils.packColumns(contextTree); @@ -197,7 +196,7 @@ public class PendingTransactionsDialog extends TransactionInfoDialog { } public static void showDialog(Shell shell) { - IWorkbenchPart activePart = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActivePart(); + IWorkbenchPart activePart = UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart(); if (activePart == null) { DBUserInterface.getInstance().showError( "No active part", diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/TransactionLogDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/TransactionLogDialog.java index 9a5e4c4bfaacc387efd2cd8be63378ee378bdf6a..f620ee39709009212a8a9f1ccf93cb19dfa15e60 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/TransactionLogDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/TransactionLogDialog.java @@ -22,7 +22,6 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPart; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.UIUtils; @@ -76,7 +75,7 @@ public class TransactionLogDialog extends TransactionInfoDialog { } public static void showDialog(Shell shell, DBCExecutionContext executionContext, boolean showPreviousTxn) { - IEditorPart activeEditor = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart activeEditor = UIUtils.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (activeEditor == null) { DBUserInterface.getInstance().showError( "No editor", diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/TransactionMonitorToolbar.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/TransactionMonitorToolbar.java index 57d0edf4fbf021bfb6f856c7f3fd75cbc9c6a13c..43894ab76f440b070d034caa8940999484db8118 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/TransactionMonitorToolbar.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/txn/TransactionMonitorToolbar.java @@ -34,7 +34,6 @@ import org.eclipse.ui.*; import org.eclipse.ui.menus.WorkbenchWindowControlContribution; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPContextProvider; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.exec.DBCSavepoint; @@ -168,7 +167,7 @@ public class TransactionMonitorToolbar { bg = getDisplay().getSystemColor(SWT.COLOR_WHITE); } else { // Use gradient depending on update count - ISharedTextColors sharedColors = DBeaverUI.getSharedTextColors(); + ISharedTextColors sharedColors = UIUtils.getSharedTextColors(); int minCount = 0, maxCount = 400; int ratio = ((updateCount - minCount) * 100) / (maxCount - minCount); @@ -209,7 +208,7 @@ public class TransactionMonitorToolbar { monitor.done(); // Update UI - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { if (isDisposed()) { return; } @@ -256,7 +255,7 @@ public class TransactionMonitorToolbar { @Override protected Control createControl(Composite parent) { - TransactionMonitorToolbar toolbar = new TransactionMonitorToolbar(DBeaverUI.getActiveWorkbenchWindow()); + TransactionMonitorToolbar toolbar = new TransactionMonitorToolbar(UIUtils.getActiveWorkbenchWindow()); return toolbar.createControl(parent); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/css/EditorFolderElementHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/css/EditorFolderElementHandler.java index 82a26e286704cb2560e58f15c6eecba8dc808e03..1d9dfe661f08a4d1c079b51bd5ff8aa9341566f5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/css/EditorFolderElementHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/css/EditorFolderElementHandler.java @@ -7,7 +7,6 @@ import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IEditorPart; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPContextProvider; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.ui.UIUtils; @@ -34,7 +33,7 @@ public class EditorFolderElementHandler extends CSSPropertySelectedTabsSWTHandle if (PROP_BACKGROUND.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_VALUE_LIST)) { Color newColor = null; try { - IEditorPart activeEditor = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart activeEditor = UIUtils.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (activeEditor instanceof DBPContextProvider) { DBCExecutionContext context = ((DBPContextProvider) activeEditor).getExecutionContext(); if (context != null) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ContentPanelEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ContentPanelEditor.java index dea43b75c351b2654c07c321e62f72c9c7fdd1ad..227323901584ad3896fad723f1d898fe6633985a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ContentPanelEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ContentPanelEditor.java @@ -31,7 +31,6 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataKind; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBPMessageType; @@ -57,7 +56,6 @@ import org.jkiss.dbeaver.ui.data.registry.StreamValueManagerDescriptor; import org.jkiss.dbeaver.ui.data.registry.ValueManagerRegistry; import org.jkiss.dbeaver.utils.MimeTypes; import org.jkiss.dbeaver.utils.RuntimeUtils; -import org.jkiss.utils.MimeType; import java.lang.reflect.InvocationTargetException; import java.util.*; @@ -125,7 +123,7 @@ public class ContentPanelEditor extends BaseValueEditor implements IAda // ignore } } else { - DBeaverUI.runInUI(valueController.getValueSite().getWorkbenchWindow(), runnable); + UIUtils.runInUI(valueController.getValueSite().getWorkbenchWindow(), runnable); } } else if (content == null) { valueController.showMessage("NULL content value. Must be DBDContent.", DBPMessageType.ERROR); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ReferenceValueEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ReferenceValueEditor.java index 5dc0429659d1a1c5e9697db84e7700f13cb19f95..583a99164eecb78cdb07881c55196594c979cc2c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ReferenceValueEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ReferenceValueEditor.java @@ -29,7 +29,6 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.*; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; @@ -136,7 +135,7 @@ public class ReferenceValueEditor { public void widgetSelected(SelectionEvent e) { // Open final IWorkbenchWindow window = valueController.getValueSite().getWorkbenchWindow(); - DBeaverUI.runInUI(window, monitor -> { + UIUtils.runInUI(window, monitor -> { DBNDatabaseNode tableNode = NavigatorUtils.getNodeByObject( monitor, refTable, diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java index 80cdb923300e974e4667b19dde0218cc465ba30d..995cb75d94f9825dc11cf52c8c612236f60dd515 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java @@ -25,7 +25,7 @@ import org.eclipse.swt.custom.StyledText; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.exec.DBCException; -import org.jkiss.dbeaver.ui.controls.resultset.panel.ViewValuePanel; +import org.jkiss.dbeaver.ui.controls.resultset.panel.valueviewer.ValueViewerPanel; import org.jkiss.dbeaver.ui.data.IStreamValueEditor; import org.jkiss.dbeaver.ui.data.IValueController; import org.jkiss.dbeaver.ui.editors.text.BaseTextEditor; @@ -58,7 +58,7 @@ public abstract class AbstractTextPanelEditor implements IStreamValueEditor { + UIUtils.asyncExec(() -> { if (getShell() != null && !UIUtils.isParent(getShell(), getShell().getDisplay().getFocusControl())) { cancelPressed(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/ConfirmationDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/ConfirmationDialog.java index e31d4c34ece17de41cc39960c70e7330b7f6aa7c..ce2c7be3f6757d621e5d2355c59c3b4dd021d886 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/ConfirmationDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/ConfirmationDialog.java @@ -24,7 +24,6 @@ import org.eclipse.swt.widgets.Shell; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.DBeaverActivator; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.preferences.PreferenceStoreDelegate; @@ -82,7 +81,7 @@ public class ConfirmationDialog extends MessageDialogWithToggle { } } ConfirmationDialog dialog = new ConfirmationDialog( - parent == null ? DBeaverUI.getActiveWorkbenchShell() : parent, + parent == null ? UIUtils.getActiveWorkbenchShell() : parent, title, null, // accept the default window icon message, diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/DialogUtils.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/DialogUtils.java index 8facddf8dc45ba5f67b23a96ee524e6261fa1df8..28d5986a7dbcbb556a989a385638bf7dad200724 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/DialogUtils.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/DialogUtils.java @@ -26,7 +26,6 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.data.DBDContent; import org.jkiss.dbeaver.model.data.DBDContentStorage; import org.jkiss.dbeaver.model.impl.ExternalContentStorage; @@ -145,7 +144,7 @@ public class DialogUtils { return false; } final DBDContent value = (DBDContent)controller.getValue(); - DBeaverUI.runInUI(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), new DBRRunnableWithProgress() { + UIUtils.runInUI(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { @@ -180,7 +179,7 @@ public class DialogUtils { } final DBDContent value = (DBDContent)controller.getValue(); try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageGeneral.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageGeneral.java index 4a6c89f36c9cc5e7dab28ee27c8e0f808577fc91..36b4288d191c87e87e8b14d83c9b91550e82aa95 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageGeneral.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageGeneral.java @@ -37,7 +37,6 @@ import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.connection.DBPConnectionBootstrap; import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration; @@ -700,7 +699,7 @@ class ConnectionPageGeneral extends ActiveWizardPage { } } if (!schemaNames.isEmpty()) { - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { if (!defaultSchema.isDisposed()) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/DriverPropertiesDialogPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/DriverPropertiesDialogPage.java index 520796aaf81203f99d942998ac8f5be6e16d463f..9f1b4d0ddc0bc3bbe4c1fc8bb14ff160994beb47 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/DriverPropertiesDialogPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/DriverPropertiesDialogPage.java @@ -96,7 +96,9 @@ public class DriverPropertiesDialogPage extends ConnectionPageAbstract } catch (InterruptedException e) { // ignore } - propsControl.loadProperties(propertySource); + if (propertySource != null) { + propsControl.loadProperties(propertySource); + } prevConnectionInfo = activeDataSource.getConnectionConfiguration(); tempDataSource.dispose(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditObjectFilterDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditObjectFilterDialog.java index 5084d8be8f672fd2e8662b92bd8dd8f5cde91bb0..e72152c154e17e2f03e728e43d2c1db2ac06ddda 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditObjectFilterDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditObjectFilterDialog.java @@ -28,7 +28,7 @@ import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry; import org.jkiss.dbeaver.model.struct.DBSObjectFilter; import org.jkiss.dbeaver.ui.IHelpContextIds; import org.jkiss.dbeaver.ui.UIUtils; -import org.jkiss.dbeaver.ui.controls.CustomTableEditor; +import org.jkiss.dbeaver.ui.controls.StringEditorTable; import org.jkiss.dbeaver.ui.dialogs.HelpEnabledDialog; import org.jkiss.utils.CommonUtils; @@ -99,8 +99,8 @@ public class EditObjectFilterDialog extends HelpEnabledDialog { blockControl = UIUtils.createPlaceholder(composite, 1); blockControl.setLayoutData(new GridData(GridData.FILL_BOTH)); - includeTable = createEditableList(CoreMessages.dialog_filter_list_include, filter.getInclude()); - excludeTable = createEditableList(CoreMessages.dialog_filter_list_exclude, filter.getExclude()); + includeTable = StringEditorTable.createEditableList(blockControl, CoreMessages.dialog_filter_list_include, filter.getInclude(), null, null); + excludeTable = StringEditorTable.createEditableList(blockControl, CoreMessages.dialog_filter_list_exclude, filter.getExclude(), null, null); UIUtils.createInfoLabel(blockControl, CoreMessages.dialog_connection_edit_wizard_general_filter_hint_text); @@ -155,110 +155,19 @@ public class EditObjectFilterDialog extends HelpEnabledDialog { } if (CommonUtils.isEmpty(filterName)) { // Reset filter - fillFilterValues(includeTable, null); - fillFilterValues(excludeTable, null); + StringEditorTable.fillFilterValues(includeTable, null, null); + StringEditorTable.fillFilterValues(excludeTable, null, null); } else { // Find saved filter DBSObjectFilter savedFilter = dsRegistry.getSavedFilter(filterName); if (savedFilter != null) { - fillFilterValues(includeTable, savedFilter.getInclude()); - fillFilterValues(excludeTable, savedFilter.getExclude()); + StringEditorTable.fillFilterValues(includeTable, savedFilter.getInclude(), null); + StringEditorTable.fillFilterValues(excludeTable, savedFilter.getExclude(), null); } } filter.setName(filterName); } - private Table createEditableList(String name, List values) { - Group group = UIUtils.createControlGroup(blockControl, name, 2, GridData.FILL_BOTH, 0); - - final Table valueTable = new Table(group, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); - final GridData gd = new GridData(GridData.FILL_BOTH); - gd.widthHint = 300; - gd.heightHint = 100; - valueTable.setLayoutData(gd); - // valueTable.setHeaderVisible(true); - valueTable.setLinesVisible(true); - - final TableColumn valueColumn = UIUtils.createTableColumn(valueTable, SWT.LEFT, CoreMessages.dialog_filter_table_column_value); - valueColumn.setWidth(300); - - fillFilterValues(valueTable, values); - - final CustomTableEditor tableEditor = new CustomTableEditor(valueTable) { - @Override - protected Control createEditor(Table table, int index, TableItem item) { - Text editor = new Text(table, SWT.BORDER); - editor.setText(item.getText()); - return editor; - } - @Override - protected void saveEditorValue(Control control, int index, TableItem item) { - item.setText(((Text) control).getText()); - } - }; - - Composite buttonsGroup = UIUtils.createPlaceholder(group, 1, 5); - buttonsGroup.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - final Button addButton = new Button(buttonsGroup, SWT.PUSH); - addButton.setText(CoreMessages.dialog_filter_button_add); - addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - addButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - TableItem newItem = new TableItem(valueTable, SWT.LEFT); - valueTable.setSelection(newItem); - tableEditor.closeEditor(); - tableEditor.showEditor(newItem); - } - }); - - final Button removeButton = new Button(buttonsGroup, SWT.PUSH); - removeButton.setText(CoreMessages.dialog_filter_button_remove); - removeButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - removeButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - int selectionIndex = valueTable.getSelectionIndex(); - if (selectionIndex >= 0) { - tableEditor.closeEditor(); - valueTable.remove(selectionIndex); - removeButton.setEnabled(valueTable.getSelectionIndex() >= 0); - } - } - }); - removeButton.setEnabled(false); - - final Button clearButton = new Button(buttonsGroup, SWT.PUSH); - clearButton.setText(CoreMessages.dialog_filter_button_clear); - clearButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - clearButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - tableEditor.closeEditor(); - valueTable.removeAll(); - removeButton.setEnabled(false); - } - }); - - valueTable.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - int selectionIndex = valueTable.getSelectionIndex(); - removeButton.setEnabled(selectionIndex >= 0); - } - }); - return valueTable; - } - - private void fillFilterValues(Table valueTable, List values) { - valueTable.removeAll(); - if (!CommonUtils.isEmpty(values)) { - for (String value : values) { - new TableItem(valueTable, SWT.LEFT).setText(value); - } - } - } - private void enableFiltersContent() { if (filter.isEnabled()) { if (blockEnableState != null) { @@ -272,26 +181,14 @@ public class EditObjectFilterDialog extends HelpEnabledDialog { private void saveConfigurations() { filter.setEnabled(enableButton.getSelection()); - filter.setInclude(collectValues(includeTable)); - filter.setExclude(collectValues(excludeTable)); + filter.setInclude(StringEditorTable.collectValues(includeTable)); + filter.setExclude(StringEditorTable.collectValues(excludeTable)); filter.setName(namesCombo.getText()); if (!CommonUtils.isEmpty(filter.getName())) { dsRegistry.updateSavedFilter(filter); } } - private List collectValues(Table table) { - List values = new ArrayList<>(); - for (TableItem item : table.getItems()) { - String value = item.getText().trim(); - if (value.isEmpty() || value.equals("%")) { //$NON-NLS-1$ - continue; - } - values.add(value); - } - return values; - } - @Override protected void okPressed() { saveConfigurations(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/SelectDataSourceDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/SelectDataSourceDialog.java index 645971a23b346ab934909837516227448bc2c066..028350005e4eb27d7afeef3edd898393d5f3478a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/SelectDataSourceDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/SelectDataSourceDialog.java @@ -17,7 +17,6 @@ package org.jkiss.dbeaver.ui.dialogs.connection; import org.eclipse.core.resources.IProject; -import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.*; @@ -27,12 +26,10 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; -import org.eclipse.ui.dialogs.FilteredTree; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.ui.UIUtils; @@ -189,7 +186,7 @@ public class SelectDataSourceDialog extends AbstractPopupPanel { okPressed(); } }); - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { treeViewer.getControl().setFocus(); if (showConnected) { treeViewer.expandAll(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/ComplexObjectEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/ComplexObjectEditor.java index 80476346eb9d07aa19389039738efc9c1ce5f979..a8f65e7078cb28ce9a0fbbb7735ae8830a94b912 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/ComplexObjectEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/ComplexObjectEditor.java @@ -35,7 +35,6 @@ import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPMessageType; import org.jkiss.dbeaver.model.DBUtils; @@ -584,7 +583,7 @@ public class ComplexObjectEditor extends TreeViewer { } } }; - DBeaverUI.runInUI(runnable); + UIUtils.runInUI(runnable); children = getChildren(runnable.getResult()); } else if (parent instanceof CompositeField) { Object value = ((CompositeField) parent).value; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java index da195a9b575cfd23f64c2739918f613726e3d65d..dac752185ebf7e37ec5e813262a85782165e0941 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java @@ -29,7 +29,6 @@ import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBUtils; @@ -43,9 +42,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSDataContainer; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.ui.UIUtils; -import org.jkiss.dbeaver.ui.controls.resultset.IResultSetContainer; -import org.jkiss.dbeaver.ui.controls.resultset.IResultSetController; -import org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer; +import org.jkiss.dbeaver.ui.controls.resultset.*; import org.jkiss.dbeaver.ui.data.IValueController; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; import org.jkiss.dbeaver.ui.editors.data.AbstractDataEditor; @@ -90,7 +87,7 @@ public class CursorViewDialog extends ValueViewDialog implements IResultSetConta } } } - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { close(); @@ -174,6 +171,11 @@ public class CursorViewDialog extends ValueViewDialog implements IResultSetConta } + @Override + public IResultSetDecorator createResultSetDecorator() { + return new QueryResultsDecorator(); + } + private class CursorDataContainer implements DBSDataContainer { @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/TextViewDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/TextViewDialog.java index e97730239a5e79022a630f0be12bff9e0e00139f..325704d94470f9b59d3aeda07413fea6f8698c80 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/TextViewDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/TextViewDialog.java @@ -43,9 +43,8 @@ import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSTypedObject; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.DBeaverIcons; -import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.controls.StyledTextUtils; import org.jkiss.dbeaver.ui.data.IValueController; -import org.jkiss.dbeaver.ui.data.IValueEditorStandalone; import org.jkiss.dbeaver.ui.data.editors.ReferenceValueEditor; import org.jkiss.dbeaver.ui.editors.binary.BinaryContent; import org.jkiss.dbeaver.ui.editors.binary.HexEditControl; @@ -142,7 +141,7 @@ public class TextViewDialog extends ValueViewDialog { updateValueLength(); } }); - UIUtils.fillDefaultStyledTextContextMenu(textEdit); + StyledTextUtils.fillDefaultStyledTextContextMenu(textEdit); if (useHex) { CTabItem item = new CTabItem(editorContainer, SWT.NO_FOCUS); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDependenciesTree.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDependenciesTree.java index df506831c73abef983a88a39869e2c1638aef095..6f3516e767554c787fef95d0d46c5788b34bba47 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDependenciesTree.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDependenciesTree.java @@ -23,7 +23,6 @@ import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.connection.DBPDriver; import org.jkiss.dbeaver.model.connection.DBPDriverDependencies; import org.jkiss.dbeaver.model.connection.DBPDriverLibrary; @@ -180,7 +179,7 @@ class DriverDependenciesTree { Point curSize = shell.getSize(); int itemHeight = filesTree.getItemHeight(); shell.setSize(curSize.x, Math.min( - (int)(DBeaverUI.getActiveWorkbenchWindow().getShell().getSize().y * 0.66), + (int)(UIUtils.getActiveWorkbenchWindow().getShell().getSize().y * 0.66), shell.computeSize(SWT.DEFAULT, SWT.DEFAULT).y) + itemHeight * 2); shell.layout(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java index 7a65ee215703abe0985240b04f179760f77e9cf4..1a9b8e264d7d43c4150f9ae444a32718eaa7e6f2 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java @@ -26,7 +26,6 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.registry.driver.DriverDependencies; import org.jkiss.dbeaver.registry.driver.DriverDescriptor; import org.jkiss.dbeaver.ui.DBeaverIcons; @@ -46,11 +45,11 @@ public class DriverDownloadDialog extends WizardDialog DriverDownloadDialog(Shell shell, DriverDescriptor driver, DriverDependencies dependencies, boolean updateVersion, boolean forceDownload) { super(shell, new DriverDownloadWizard(driver, dependencies, updateVersion, forceDownload)); - getWizard().init(DBeaverUI.getActiveWorkbenchWindow().getWorkbench(), null); + getWizard().init(UIUtils.getActiveWorkbenchWindow().getWorkbench(), null); addPageChangedListener(new IPageChangedListener() { @Override public void pageChanged(final PageChangedEvent event) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { getWizard().pageActivated(event.getSelectedPage()); @@ -79,7 +78,7 @@ public class DriverDownloadDialog extends WizardDialog protected Control createDialogArea(Composite parent) { Control dialogArea = super.createDialogArea(parent); if (getWizard().isForceDownload()) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { buttonPressed(IDialogConstants.FINISH_ID); @@ -133,7 +132,7 @@ public class DriverDownloadDialog extends WizardDialog } void closeWizard() { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { buttonPressed(IDialogConstants.CANCEL_ID); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java index eb266781ab53ba158846f96f37e90fc8a52c2a03..0e9d2226d7deb4cef94b6aaaa2e5a27285982b9d 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java @@ -23,7 +23,6 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.registry.driver.DriverDescriptor; import org.jkiss.dbeaver.registry.driver.DriverFileSource; import org.jkiss.dbeaver.runtime.WebUtils; @@ -129,7 +128,7 @@ class DriverDownloadManualPage extends DriverDownloadPage { @Override boolean performFinish() { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { WebUtils.openWebBrowser(fileSource.getUrl()); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java index ed87a0dddcb2d73eecbc650b43aec9fb7c88bbf3..a3ed2fe8d286d91769a07faf5f7b260a88ecf2a8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java @@ -31,7 +31,6 @@ import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.connection.DBPDriverLibrary; import org.jkiss.dbeaver.registry.DataSourceProviderDescriptor; @@ -791,8 +790,8 @@ public class DriverEditDialog extends HelpEnabledDialog { } DriverDescriptor oldDriver = provider.getDriverByName(driver.getCategory(), driver.getName()); - if (oldDriver != null && oldDriver != driver) { - UIUtils.showMessageBox(getShell(), "Driver create", "Driver '" + driver.getName() + "' already exists. Change driver name", SWT.ICON_ERROR); + if (oldDriver != null && oldDriver != driver && !oldDriver.isDisabled() && oldDriver.getReplacedBy() == null) { + UIUtils.showMessageBox(getShell(), "Driver settings save", "Driver '" + driver.getName() + "' already exists. Change driver name", SWT.ICON_ERROR); return; } @@ -812,7 +811,7 @@ public class DriverEditDialog extends HelpEnabledDialog { String title = "Bad driver [" + dataSource.getContainer().getDriver().getName() + "] configuration"; new BadDriverConfigDialog(shell, title, message == null ? title : message, error).open(); }; - DBeaverUI.syncExec(runnable); + UIUtils.syncExec(runnable); } private static class BadDriverConfigDialog extends StandardErrorDialog { @@ -821,7 +820,7 @@ public class DriverEditDialog extends HelpEnabledDialog { BadDriverConfigDialog(Shell shell, String title, String message, DBException error) { super( - shell == null ? DBeaverUI.getActiveWorkbenchShell() : shell, + shell == null ? UIUtils.getActiveWorkbenchShell() : shell, title, message, RuntimeUtils.stripStack(GeneralUtils.makeExceptionStatus(error)), @@ -839,9 +838,9 @@ public class DriverEditDialog extends HelpEnabledDialog { @Override protected void buttonPressed(int id) { if (id == IDialogConstants.RETRY_ID) { - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { DriverEditDialog dialog = new DriverEditDialog( - DBeaverUI.getActiveWorkbenchShell(), + UIUtils.getActiveWorkbenchShell(), (DriverDescriptor) dataSource.getContainer().getDriver()); dialog.open(); }); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverLibraryDetailsDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverLibraryDetailsDialog.java index 18e20bcc98ba611f6e524cb51c8442ca63115221..322599976eabd161e810a7b79e8e408d5216c729 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverLibraryDetailsDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverLibraryDetailsDialog.java @@ -24,7 +24,6 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.connection.DBPDriver; import org.jkiss.dbeaver.model.connection.DBPDriverLibrary; import org.jkiss.dbeaver.registry.driver.DriverDependencies; @@ -104,13 +103,13 @@ public class DriverLibraryDetailsDialog extends HelpEnabledDialog DriverDependencies dependencies = new DriverDependencies(libList); final DriverDependenciesTree depsTree = new DriverDependenciesTree( paramsGroup, - DBeaverUI.getDefaultRunnableContext(), + UIUtils.getDefaultRunnableContext(), dependencies, driver, libList, false); depsTree.resolveLibraries(); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { depsTree.resizeTree(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverManagerDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverManagerDialog.java index ece0cd3fe93eb6d296a8ea05d84f5a2c50cd3380..bfb159553bdfd3db1b652612759170963bd277a7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverManagerDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverManagerDialog.java @@ -23,19 +23,19 @@ import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverActivator; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.registry.DataSourceProviderDescriptor; import org.jkiss.dbeaver.registry.DataSourceProviderRegistry; import org.jkiss.dbeaver.registry.driver.DriverDescriptor; +import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.IHelpContextIds; +import org.jkiss.dbeaver.ui.UIIcon; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.HelpEnabledDialog; import org.jkiss.utils.CommonUtils; @@ -99,7 +99,7 @@ public class DriverManagerDialog extends HelpEnabledDialog implements ISelection getShell().setText(CoreMessages.dialog_driver_manager_title); getShell().setMinimumSize(300, 300); - dialogImage = DBeaverActivator.getImageDescriptor("/icons/driver_manager.png").createImage(); //$NON-NLS-1$ + dialogImage = DBeaverIcons.getImage(UIIcon.DRIVER_MANAGER); getShell().setImage(dialogImage); Composite group = UIUtils.createPlaceholder((Composite) super.createDialogArea(parent), 2); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverTreeControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverTreeControl.java index 46c91918fe61d8ad4136a13a08e3fa1cd3596b2f..bb701a276744b669c30f7c6044d60f9902edd53b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverTreeControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverTreeControl.java @@ -24,8 +24,8 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.FilteredTree; import org.eclipse.ui.dialogs.PatternFilter; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.registry.DataSourceProviderDescriptor; +import org.jkiss.dbeaver.ui.UIUtils; import java.util.List; @@ -57,7 +57,7 @@ public class DriverTreeControl extends FilteredTree { Object[] initData = (Object[]) getParent().getData(DRIVER_INIT_DATA); parent.setData(DRIVER_INIT_DATA, null); DriverTreeViewer viewer = new DriverTreeViewer(parent, style); - DBeaverUI.asyncExec(() -> + UIUtils.asyncExec(() -> viewer.initDrivers(initData[0], (List) initData[1], (Boolean) initData[2])); return viewer; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorJob.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorJob.java index cfe219fd74ab1f47bcfd7e5e4c8af28badfe8a74..470da3624b80d7f38f7d48dad457dde0949527ad 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorJob.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/exec/ExecutionQueueErrorJob.java @@ -19,9 +19,9 @@ package org.jkiss.dbeaver.ui.dialogs.exec; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.IDialogConstants; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.ui.AbstractUIJob; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.utils.GeneralUtils; /** @@ -46,7 +46,7 @@ public class ExecutionQueueErrorJob extends AbstractUIJob { public IStatus runInUIThread(DBRProgressMonitor monitor) { ExecutionQueueErrorDialog dialog = new ExecutionQueueErrorDialog( - DBeaverUI.getActiveWorkbenchShell(), + UIUtils.getActiveWorkbenchShell(), "Execution Error", "Error occurred during " + errorName, GeneralUtils.makeExceptionStatus(error), diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateMultiSQLDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateMultiSQLDialog.java index 98d43db6777b0edad25f8b4cf377d71d10e3394f..2b12e0dce84ef6229e7dcddf40243a5a04988fb7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateMultiSQLDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateMultiSQLDialog.java @@ -31,7 +31,6 @@ import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.IWorkbenchPartSite; import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPEvaluationContext; @@ -163,7 +162,7 @@ public abstract class GenerateMultiSQLDialog extends Genera protected IStatus run(final DBRProgressMonitor monitor) { final DataSourceJob curJob = this; - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { scriptListener.beginScriptProcessing(curJob, objects); @@ -179,7 +178,7 @@ public abstract class GenerateMultiSQLDialog extends Genera final T object = objects.get(i); monitor.subTask("Process " + DBUtils.getObjectFullName(object, DBPEvaluationContext.UI)); objectProcessingError = null; - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { scriptListener.beginObjectProcessing(object, objectNumber); @@ -192,7 +191,7 @@ public abstract class GenerateMultiSQLDialog extends Genera if (statement.executeStatement()) { try (DBCResultSet resultSet = statement.openResultSet()) { // Run in sync because we need result set - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { try { @@ -207,7 +206,7 @@ public abstract class GenerateMultiSQLDialog extends Genera break; } } else { - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { try { @@ -223,7 +222,7 @@ public abstract class GenerateMultiSQLDialog extends Genera } catch (Exception e) { objectProcessingError = e; } finally { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { scriptListener.endObjectProcessing(object, objectProcessingError); @@ -234,7 +233,7 @@ public abstract class GenerateMultiSQLDialog extends Genera } } finally { monitor.done(); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { scriptListener.endScriptProcessing(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/SQLScriptStatusDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/SQLScriptStatusDialog.java index 5e80fd9778ec9e20200ffa5d66fcec4879d56de6..7e72229590aa554b2ecbea9a166fe6cd12df95cb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/SQLScriptStatusDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/SQLScriptStatusDialog.java @@ -27,7 +27,6 @@ import org.eclipse.swt.widgets.*; import org.eclipse.ui.ISharedImages; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBPImage; import org.jkiss.dbeaver.model.DBUtils; @@ -54,7 +53,7 @@ public abstract class SQLScriptStatusDialog extends BaseDia protected SQLScriptStatusDialog(String title, @Nullable DBPImage image) { - super(DBeaverUI.getActiveWorkbenchShell(), title, image); + super(UIUtils.getActiveWorkbenchShell(), title, image); } @Override @@ -107,7 +106,7 @@ public abstract class SQLScriptStatusDialog extends BaseDia finishLabel.setLayoutData(gd); finishLabel.setText("Finished"); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { UIUtils.packColumns(objectTree, false, null); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/tools/AbstractToolWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/tools/AbstractToolWizard.java index add2151d9ab28cbed9c3989bb5c3f47df66b2052..7c4ae8edd6116cdf3c8c42c199b565b8fec89412 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/tools/AbstractToolWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/tools/AbstractToolWizard.java @@ -203,7 +203,7 @@ public abstract class AbstractToolWizard } - protected static void createCheckButtons(Composite buttonsPanel, final Table table) { + protected void createCheckButtons(Composite buttonsPanel, final Table table) { UIUtils.createPushButton(buttonsPanel, "All", null, new CheckListener(table, true)); UIUtils.createPushButton(buttonsPanel, "None", null, new CheckListener(table, false)); } @@ -64,7 +64,11 @@ public abstract class AbstractToolWizardPage } - private static class CheckListener extends SelectionAdapter { + protected void updateState() { + setPageComplete(true); + } + + private class CheckListener extends SelectionAdapter { private final Table table; private final boolean check; @@ -78,6 +82,7 @@ public abstract class AbstractToolWizardPage for (TableItem item : table.getItems()) { item.setChecked(check); } + updateState(); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/tools/DatabaseWizardPageLog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/tools/DatabaseWizardPageLog.java index 21a77c0a0d3ec88422aa31b1af72c3de01b48acb..d27c97ef3b495c78b240bb0031d8538cf62d4365 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/tools/DatabaseWizardPageLog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/tools/DatabaseWizardPageLog.java @@ -25,7 +25,6 @@ import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.utils.GeneralUtils; @@ -78,7 +77,7 @@ public class DatabaseWizardPageLog extends WizardPage { if (getShell().isDisposed()) { return; } - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { synchronized (DatabaseWizardPageLog.this) { @@ -106,7 +105,7 @@ public class DatabaseWizardPageLog extends WizardPage { if (getShell().isDisposed()) { return; } - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { synchronized (DatabaseWizardPageLog.this) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseEditorAdapterFactory.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseEditorAdapterFactory.java index 4090746a6d35b2e46f8e86004a5df143028fc00b..0e42885bfbaf76f00f05f108269e9470100c5bfe 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseEditorAdapterFactory.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseEditorAdapterFactory.java @@ -24,6 +24,7 @@ import org.jkiss.dbeaver.model.DBPObject; import org.jkiss.dbeaver.model.IDataSourceContainerProvider; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.struct.DBSDataContainer; +import org.jkiss.dbeaver.model.struct.DBSDataManipulator; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSWrapper; @@ -32,7 +33,14 @@ import org.jkiss.dbeaver.model.struct.DBSWrapper; */ public class DatabaseEditorAdapterFactory implements IAdapterFactory { - private static final Class[] ADAPTER_LIST = { DBSObject.class, DBSDataContainer.class, DBPDataSourceContainer.class }; + private static final Class[] ADAPTER_LIST = { + DBSObject.class, + DBSDataContainer.class, + DBSDataManipulator.class, + DBPDataSourceContainer.class, + DBSDataContainer.class, + DBPDataSourceContainer.class + }; @Override public T getAdapter(Object adaptableObject, Class adapterType) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseLazyEditorInput.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseLazyEditorInput.java index 9b7d34eca2b49a820ac78b7ef954b40b52071134..f629248a7c0836d4a0c079f483f95abab4cfb78e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseLazyEditorInput.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseLazyEditorInput.java @@ -23,7 +23,6 @@ import org.eclipse.ui.IPersistableElement; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.edit.DBECommandContext; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; @@ -37,6 +36,7 @@ import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.runtime.properties.PropertySourceCustom; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.ConnectionLostDialog; import org.jkiss.dbeaver.ui.editors.entity.EntityEditorInput; import org.jkiss.dbeaver.utils.GeneralUtils; @@ -195,7 +195,7 @@ public class DatabaseLazyEditorInput implements IDatabaseEditorInput final Integer result = new UITask() { @Override protected Integer runTask() { - ConnectionLostDialog clDialog = new ConnectionLostDialog(DBeaverUI.getActiveWorkbenchShell(), dataSource, e, "Close"); + ConnectionLostDialog clDialog = new ConnectionLostDialog(UIUtils.getActiveWorkbenchShell(), dataSource, e, "Close"); return clDialog.open(); } }.execute(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/EditorUtils.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/EditorUtils.java index f44a31cc75dc33fc5a0670b0fd8acc44ad6763e9..0b8ce736cabf94796e884aa3d565bb218ea44763 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/EditorUtils.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/EditorUtils.java @@ -26,9 +26,12 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.QualifiedName; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.core.runtime.preferences.InstanceScope; +import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.*; import org.eclipse.ui.ide.FileStoreEditorInput; import org.eclipse.ui.ide.IDE; +import org.eclipse.ui.preferences.ScopedPreferenceStore; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.Log; @@ -255,4 +258,9 @@ public class EditorUtils { } return "Auto save all editors".equals(currentJob.getName()); } + + public static IPreferenceStore getEditorsPreferenceStore() { + return new ScopedPreferenceStore(InstanceScope.INSTANCE, "org.eclipse.ui.editors"); + } + } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java index 8c510dbaff2f5da428548cc20a6f8e8040bd9fa2..7994f4ce684b7b37f9940cffc658f2bb999a2a58 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java @@ -38,9 +38,9 @@ import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.preferences.DBPPreferenceListener; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.binary.pref.HexPreferencesPage; import org.jkiss.dbeaver.utils.ContentUtils; @@ -93,7 +93,7 @@ public class BinaryEditor extends EditorPart implements ISelectionProvider, IMen } if (delta.getKind() == IResourceDelta.CHANGED) { // Refresh editor - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { if (manager != null) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/HexEditControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/HexEditControl.java index 6a329ab21074eb726457fcbd1ebab62e3546f67f..5c3ca7131bcc1c6796dc465b3de09468f5916d8e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/HexEditControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/HexEditControl.java @@ -26,7 +26,6 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.binary.pref.HexPreferencesPage; import org.jkiss.dbeaver.utils.GeneralUtils; @@ -577,7 +576,7 @@ public class HexEditControl extends Composite { lastFocusedTextArea = 1; if (e.widget == previewText) lastFocusedTextArea = 2; - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { drawUnfocusedCaret(true); @@ -1585,7 +1584,7 @@ public class HexEditControl extends Composite { } hexText.getCaret().setVisible(true); previewText.getCaret().setVisible(true); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { drawUnfocusedCaret(true); @@ -1714,7 +1713,7 @@ public class HexEditControl extends Composite { delayedWaiting = delayed; } else { delayedInQueue = true; - DBeaverUI.asyncExec(delayed); + UIUtils.asyncExec(delayed); } } @@ -1722,7 +1721,7 @@ public class HexEditControl extends Composite { void runnableEnd() { if (delayedWaiting != null) { - DBeaverUI.asyncExec(delayedWaiting); + UIUtils.asyncExec(delayedWaiting); delayedWaiting = null; } else { delayedInQueue = false; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesManager.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesManager.java index 3a18fde2d211dd6fc89d555dfa3f4de9574d789b..0dae2fc296e746e75412820acf86b4ac8b48ffd8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesManager.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesManager.java @@ -27,7 +27,6 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.eclipse.swt.widgets.List; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.binary.HexEditControl; @@ -309,7 +308,7 @@ public class HexPreferencesManager { fontsListCurrent = fontsNonScalable; fontsRejected = new HashSet<>(); fontsGc = new GC(parent); - DBeaverUI.asyncExec(this::populateFixedCharWidthFontsAsync); + UIUtils.asyncExec(this::populateFixedCharWidthFontsAsync); } @@ -353,7 +352,7 @@ public class HexPreferencesManager { fontsNonScalable = fontsScalable = fontsListCurrent = null; fontsRejected = null; } else { - DBeaverUI.asyncExec(this::populateFixedCharWidthFontsAsync); + UIUtils.asyncExec(this::populateFixedCharWidthFontsAsync); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/content/ContentEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/content/ContentEditor.java index 6165d57e63d48982a9f1ba536dfd145944cae461..1d647fbaa63607071ce68f4db05c4f4fff9cc3b9 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/content/ContentEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/content/ContentEditor.java @@ -32,7 +32,6 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.data.DBDContent; import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; @@ -78,7 +77,7 @@ public class ContentEditor extends MultiPageAbstractEditor implements IValueEdit try { LOBInitializer initializer = new LOBInitializer(valueController); //valueController.getValueSite().getWorkbenchWindow().run(true, true, initializer); - DBeaverUI.runInProgressService(initializer); + UIUtils.runInProgressService(initializer); editorInput = initializer.editorInput; } catch (Throwable e) { if (e instanceof InvocationTargetException) { @@ -219,7 +218,7 @@ public class ContentEditor extends MultiPageAbstractEditor implements IValueEdit return; } // Execute save in UI thread - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { try { // Check for dirty parts final List dirtyParts = new ArrayList<>(); @@ -497,7 +496,7 @@ public class ContentEditor extends MultiPageAbstractEditor implements IValueEdit @Override public Object extractEditorValue() throws DBException { - DBeaverUI.runInUI(monitor -> { + UIUtils.runInUI(monitor -> { try { getEditorInput().updateContentFromFile(monitor, getEditorInput().getValue()); } catch (DBException e) { @@ -516,7 +515,7 @@ public class ContentEditor extends MultiPageAbstractEditor implements IValueEdit LOBInitializer initializer = new LOBInitializer(valueController, input.getEditors(), input.getDefaultEditor(), input); try { //valueController.getValueSite().getWorkbenchWindow().run(true, true, initializer); - DBeaverUI.runInProgressService(initializer); + UIUtils.runInProgressService(initializer); } catch (InvocationTargetException e) { DBUserInterface.getInstance().showError("Cannot refresh content editor", null, e); } catch (InterruptedException e) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/AbstractDataEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/AbstractDataEditor.java index 64e64def1d9aa4d9c4d825ca4ae939fc9d3980e2..196edf91569c5e22388adba2f1c2aa88aaff8a9d 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/AbstractDataEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/AbstractDataEditor.java @@ -17,6 +17,7 @@ package org.jkiss.dbeaver.ui.editors.data; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IActionBars; @@ -24,7 +25,6 @@ import org.eclipse.ui.IEditorPart; import org.eclipse.ui.part.MultiPageEditorPart; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.DBDDataFilter; @@ -35,9 +35,7 @@ import org.jkiss.dbeaver.model.struct.DBSDataContainer; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; -import org.jkiss.dbeaver.ui.controls.resultset.IResultSetContainer; -import org.jkiss.dbeaver.ui.controls.resultset.IResultSetListener; -import org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer; +import org.jkiss.dbeaver.ui.controls.resultset.*; import org.jkiss.dbeaver.ui.editors.AbstractDatabaseObjectEditor; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -145,8 +143,13 @@ public abstract class AbstractDataEditor extends openNewDataEditor(targetNode, newFilter); } + @Override + public IResultSetDecorator createResultSetDecorator() { + return new QueryResultsDecorator(); + } + public static void openNewDataEditor(DBNDatabaseNode targetNode, DBDDataFilter newFilter) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { IEditorPart entityEditor = NavigatorHandlerObjectOpen.openEntityEditor( @@ -154,7 +157,7 @@ public abstract class AbstractDataEditor extends DatabaseDataEditor.class.getName(), null, Collections.singletonMap(DatabaseDataEditor.ATTR_DATA_FILTER, newFilter), - DBeaverUI.getActiveWorkbenchWindow(), + UIUtils.getActiveWorkbenchWindow(), true); if (entityEditor instanceof MultiPageEditorPart) { @@ -214,6 +217,11 @@ public abstract class AbstractDataEditor extends firePropertyChange(IEditorPart.PROP_DIRTY); } + @Override + public void handleResultSetSelectionChange(SelectionChangedEvent event) { + // No actions + } + @Override public T getAdapter(Class adapter) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java index 80416ef2454dbf8f394de8c7336fbec3fb18d80a..50716018988c871e76dd5070c8c29f0f363468b2 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java @@ -35,7 +35,6 @@ import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.edit.DBECommand; import org.jkiss.dbeaver.model.edit.DBECommandContext; @@ -58,6 +57,7 @@ import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.*; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; +import org.jkiss.dbeaver.ui.controls.IProgressControlProvider; import org.jkiss.dbeaver.ui.controls.ProgressPageControl; import org.jkiss.dbeaver.ui.controls.PropertyPageStandard; import org.jkiss.dbeaver.ui.controls.folders.ITabbedFolder; @@ -314,7 +314,7 @@ public class EntityEditor extends MultiPageDatabaseEditor // So we'll get actual data from database final DBNDatabaseNode treeNode = getEditorInput().getNavigatorNode(); try { - DBeaverUI.runInProgressService(monitor1 -> { + UIUtils.runInProgressService(monitor1 -> { try { treeNode.refreshNode(monitor1, DBNEvent.FORCE_REFRESH); } catch (DBException e) { @@ -334,7 +334,7 @@ public class EntityEditor extends MultiPageDatabaseEditor } else { // Try to handle error in nested editors final Throwable vError = error; - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { final IErrorVisualizer errorVisualizer = getAdapter(IErrorVisualizer.class); if (errorVisualizer != null) { errorVisualizer.visualizeError(monitor, vError); @@ -343,7 +343,7 @@ public class EntityEditor extends MultiPageDatabaseEditor // Show error dialog - DBeaverUI.asyncExec(() -> + UIUtils.asyncExec(() -> DBUserInterface.getInstance().showError("Can't save '" + getDatabaseObject().getName() + "'", null, vError)); return false; } @@ -417,7 +417,7 @@ public class EntityEditor extends MultiPageDatabaseEditor command.validateCommand(); } catch (final DBException e) { log.debug(e); - DBeaverUI.syncExec(() -> DBUserInterface.getInstance().showError("Validation", e.getMessage())); + UIUtils.syncExec(() -> DBUserInterface.getInstance().showError("Validation", e.getMessage())); return IDialogConstants.CANCEL_ID; } Map options = new HashMap<>(); @@ -431,7 +431,7 @@ public class EntityEditor extends MultiPageDatabaseEditor return IDialogConstants.PROCEED_ID; } ChangesPreviewer changesPreviewer = new ChangesPreviewer(script, allowSave); - DBeaverUI.syncExec(changesPreviewer); + UIUtils.syncExec(changesPreviewer); return changesPreviewer.getResult(); } @@ -466,7 +466,7 @@ public class EntityEditor extends MultiPageDatabaseEditor @Override public void onCommandChange(DBECommand command) { - DBeaverUI.syncExec(() -> firePropertyChange(IEditorPart.PROP_DIRTY)); + UIUtils.syncExec(() -> firePropertyChange(IEditorPart.PROP_DIRTY)); } }; DBECommandContext commandContext = getCommandContext(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityHyperlink.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityHyperlink.java index 5059fb804297d07ed236ad7c2d2b84e03febb57d..f5e6520e055ec5869c13193abf1dd1e5635cf582 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityHyperlink.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityHyperlink.java @@ -22,7 +22,6 @@ import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.hyperlink.IHyperlink; import org.eclipse.ui.IWorkbenchSite; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; @@ -31,6 +30,7 @@ import org.jkiss.dbeaver.model.runtime.AbstractJob; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSObjectReference; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.navigator.NavigatorUtils; import org.jkiss.dbeaver.utils.GeneralUtils; @@ -91,7 +91,7 @@ public class EntityHyperlink implements IHyperlink node = NavigatorUtils.getNodeByObject(monitor, object, true); if (node != null) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { NavigatorUtils.executeNodeAction(DBXTreeNodeHandler.Action.open, node, site); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/FolderEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/FolderEditor.java index 4c8710812973490be02300a080515c435244727d..ae2e0f3d04ee40b0f2e1aeb5700095e4fc41ab2f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/FolderEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/FolderEditor.java @@ -32,7 +32,6 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.ui.*; @@ -122,7 +121,7 @@ public class FolderEditor extends EditorPart implements INavigatorModelView, IRe @Override public void refreshPart(Object source, boolean force) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { if (!itemControl.isDisposed()) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/ProgressEditorPart.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/ProgressEditorPart.java index 708accb8743f4d344cd83b1e493fac3e1d9e09c4..de3782fab2f4355089da61753612926af8af50e6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/ProgressEditorPart.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/ProgressEditorPart.java @@ -28,6 +28,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.load.AbstractLoadService; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.LoadingJob; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.ProgressLoaderVisualizer; import org.jkiss.dbeaver.ui.editors.DatabaseLazyEditorInput; import org.jkiss.dbeaver.ui.editors.IDatabaseEditor; @@ -157,11 +158,11 @@ public class ProgressEditorPart extends EditorPart { initEntityEditor(result); if (result == null) { // Close editor - DBeaverUI.asyncExec(() -> + UIUtils.asyncExec(() -> entityEditor.getSite().getWorkbenchWindow().getActivePage().closeEditor(entityEditor, false)); } else { // Activate entity editor (we have changed inner editors and need to force contexts activation). - DBeaverUI.asyncExec(() -> DBeaverUI.getInstance().refreshPartContexts(entityEditor)); + UIUtils.asyncExec(() -> DBeaverUI.getInstance().refreshPartContexts(entityEditor)); } } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/handlers/SaveChangesHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/handlers/SaveChangesHandler.java index 4e0ece2a30f0faf597cb3315fc86d0fbb22d1522..5a3ace9d246f091eb27da62adfd59912530d6037 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/handlers/SaveChangesHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/handlers/SaveChangesHandler.java @@ -27,9 +27,9 @@ import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.handlers.HandlerUtil; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; import org.jkiss.dbeaver.ui.editors.entity.EntityEditor; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -48,7 +48,7 @@ public class SaveChangesHandler extends AbstractHandler return true; } SaveRunner saveRunner = new SaveRunner(monitor, saveable); - DBeaverUI.syncExec(saveRunner); + UIUtils.syncExec(saveRunner); return saveRunner.getResult(); } @@ -58,7 +58,7 @@ public class SaveChangesHandler extends AbstractHandler final EntityEditor editor = RuntimeUtils.getObjectAdapter(HandlerUtil.getActiveEditor(event), EntityEditor.class); if (editor != null) { try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { @@ -108,7 +108,7 @@ public class SaveChangesHandler extends AbstractHandler shell = ((IWorkbenchPart) saveable).getSite().getShell(); saveableName = ((IWorkbenchPart) saveable).getTitle(); } else { - shell = DBeaverUI.getActiveWorkbenchShell(); + shell = UIUtils.getActiveWorkbenchShell(); saveableName = CommonUtils.toString(saveable); } int confirmResult = ConfirmationDialog.showConfirmDialog( diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/properties/ObjectPropertiesEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/properties/ObjectPropertiesEditor.java index 484960fcde4ec0f96ff284a258b91d2140d86645..de8f495a144ec2ffa5c92e3af6191505a255b75a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/properties/ObjectPropertiesEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/properties/ObjectPropertiesEditor.java @@ -31,7 +31,6 @@ import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.navigator.DBNDataSource; import org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder; @@ -47,7 +46,7 @@ import org.jkiss.dbeaver.model.struct.DBSObjectContainer; import org.jkiss.dbeaver.registry.editor.EntityEditorDescriptor; import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry; import org.jkiss.dbeaver.runtime.properties.PropertiesContributor; -import org.jkiss.dbeaver.ui.IProgressControlProvider; +import org.jkiss.dbeaver.ui.controls.IProgressControlProvider; import org.jkiss.dbeaver.ui.IRefreshablePart; import org.jkiss.dbeaver.ui.ISearchContextProvider; import org.jkiss.dbeaver.ui.UIUtils; @@ -254,7 +253,7 @@ public class ObjectPropertiesEditor extends AbstractDatabaseObjectEditor 0) { sashUpdater.run(); } else { - DBeaverUI.asyncExec(sashUpdater); + UIUtils.asyncExec(sashUpdater); } } } @@ -481,7 +480,7 @@ public class ObjectPropertiesEditor extends AbstractDatabaseObjectEditor 0; + } + + @Override + public void cancelSearch() { + propertyTree.resetFilters(); + } } private boolean isAttached() { @@ -266,10 +278,10 @@ public class TabbedFolderPageProperties extends TabbedFolderPage implements IRef if (editor.getEditorInput() instanceof DatabaseEditorInput) { node = ((DatabaseEditorInput) editor.getEditorInput()).getNavigatorNode(); } - DBeaverUI.getActiveWorkbenchWindow().getActivePage().closeEditor(editor, false); + UIUtils.getActiveWorkbenchWindow().getActivePage().closeEditor(editor, false); if (node != null) { - NavigatorHandlerObjectOpen.openEntityEditor(node, null, DBeaverUI.getActiveWorkbenchWindow()); + NavigatorHandlerObjectOpen.openEntityEditor(node, null, UIUtils.getActiveWorkbenchWindow()); } } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/AttributeEditPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/AttributeEditPage.java index 00b064b5f38777872a2133db4a288c400d55908c..1487417c89614e2ff949761489c1aae5d246d573 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/AttributeEditPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/AttributeEditPage.java @@ -19,8 +19,6 @@ package org.jkiss.dbeaver.ui.editors.object.struct; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; @@ -47,6 +45,7 @@ public class AttributeEditPage extends BaseObjectEditPage { private DBSEntityAttribute attribute; private final DBECommandContext commandContext; + private PropertyTreeViewer propertyViewer; public AttributeEditPage(@Nullable DBECommandContext commandContext, @NotNull DBSEntityAttribute attribute) { @@ -70,7 +69,7 @@ public class AttributeEditPage extends BaseObjectEditPage { }); UIUtils.createControlLabel(propsGroup, "Properties").setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - final PropertyTreeViewer propertyViewer = new PropertyTreeViewer(propsGroup, SWT.BORDER); + propertyViewer = new PropertyTreeViewer(propsGroup, SWT.BORDER); gd = new GridData(GridData.FILL_BOTH); gd.widthHint = 400; propertyViewer.getControl().setLayoutData(gd); @@ -121,6 +120,7 @@ public class AttributeEditPage extends BaseObjectEditPage { @Override protected void performFinish() throws DBException { - //commandContext.saveChanges(new VoidProgressMonitor()); + // Save any active editors + propertyViewer.saveEditorValues(); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/AttributesSelectorPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/AttributesSelectorPage.java index eee804a152716d9106623e3e2d2aba12c3f33898..b1464c757e3299a467ebe65932783104b5be09d7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/AttributesSelectorPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/AttributesSelectorPage.java @@ -26,7 +26,6 @@ import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; @@ -239,7 +238,7 @@ public abstract class AttributesSelectorPage extends BaseObjectEditPage { // Collect attributes final List attributes = new ArrayList<>(); try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditDictionaryPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditDictionaryPage.java index daf1ecdff714704fbe8fa9643c60e6510087a392..096973f55b8b2986923fc9d96d04ac69db18375b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditDictionaryPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditDictionaryPage.java @@ -25,7 +25,6 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.PlatformUI; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; @@ -58,7 +57,7 @@ public class EditDictionaryPage extends AttributesSelectorPage { super(title, entity); this.entity = entity; this.dictionary = DBVUtils.findVirtualEntity(entity, true); - DBeaverUI.runInUI(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), new DBRRunnableWithProgress() { + UIUtils.runInUI(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditForeignKeyPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditForeignKeyPage.java index 915df3a08c9ff3f597486943b35e8d7023572ba6..bd66c28c8af3f2f8c63407c2a23eb96be1f85688 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditForeignKeyPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditForeignKeyPage.java @@ -30,7 +30,6 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceInfo; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBValueFormatting; @@ -337,7 +336,7 @@ public class EditForeignKeyPage extends BaseObjectEditPage { curConstraint = null; if (refTableNode != null) { final DBSTable refTable = (DBSTable) refTableNode.getObject(); - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditObjectDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditObjectDialog.java index 6a99e8da70465b7d97db6c81f04594c6625d555e..0bab453051277797d4590b76d0a057dd884be15a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditObjectDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/object/struct/EditObjectDialog.java @@ -24,7 +24,6 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.UIUtils; @@ -95,7 +94,7 @@ class EditObjectDialog extends TrayDialog { } public static boolean showDialog(IDialogPage dialogPage) { - return showDialog(DBeaverUI.getActiveWorkbenchShell(), dialogPage); + return showDialog(UIUtils.getActiveWorkbenchShell(), dialogPage); } public static boolean showDialog(Shell shell, IDialogPage dialogPage) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java index 5b092eb665bbb9694da510e8faa8a887f90d28af..a01d013dd9a44304d7e6581aa706569b822dc160 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java @@ -30,7 +30,9 @@ import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.*; import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; @@ -87,9 +89,7 @@ import org.jkiss.dbeaver.tools.transfer.database.DatabaseTransferProducer; import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferWizard; import org.jkiss.dbeaver.ui.*; import org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler; -import org.jkiss.dbeaver.ui.controls.resultset.IResultSetContainer; -import org.jkiss.dbeaver.ui.controls.resultset.IResultSetListener; -import org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer; +import org.jkiss.dbeaver.ui.controls.resultset.*; import org.jkiss.dbeaver.ui.dialogs.ActiveWizardDialog; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; import org.jkiss.dbeaver.ui.dialogs.EnterNameDialog; @@ -129,12 +129,12 @@ public class SQLEditor extends SQLEditorBase implements private static final long SCRIPT_UI_UPDATE_PERIOD = 100; private static final int MAX_PARALLEL_QUERIES_NO_WARN = 10; - private static Image IMG_DATA_GRID = DBeaverActivator.getImageDescriptor("/icons/sql/page_data_grid.png").createImage(); //$NON-NLS-1$ - private static Image IMG_DATA_GRID_LOCKED = DBeaverActivator.getImageDescriptor("/icons/sql/page_data_grid_locked.png").createImage(); //$NON-NLS-1$ - private static Image IMG_EXPLAIN_PLAN = DBeaverActivator.getImageDescriptor("/icons/sql/page_explain_plan.png").createImage(); //$NON-NLS-1$ - private static Image IMG_LOG = DBeaverActivator.getImageDescriptor("/icons/sql/page_error.png").createImage(); //$NON-NLS-1$ - private static Image IMG_OUTPUT = DBeaverActivator.getImageDescriptor("/icons/sql/page_output.png").createImage(); //$NON-NLS-1$ - private static Image IMG_OUTPUT_ALERT = DBeaverActivator.getImageDescriptor("/icons/sql/page_output_alert.png").createImage(); //$NON-NLS-1$ + private static Image IMG_DATA_GRID = DBeaverIcons.getImage(UIIcon.SQL_PAGE_DATA_GRID); + private static Image IMG_DATA_GRID_LOCKED = DBeaverIcons.getImage(UIIcon.SQL_PAGE_DATA_GRID_LOCKED); + private static Image IMG_EXPLAIN_PLAN = DBeaverIcons.getImage(UIIcon.SQL_PAGE_EXPLAIN_PLAN); + private static Image IMG_LOG = DBeaverIcons.getImage(UIIcon.SQL_PAGE_LOG); + private static Image IMG_OUTPUT = DBeaverIcons.getImage(UIIcon.SQL_PAGE_OUTPUT); + private static Image IMG_OUTPUT_ALERT = DBeaverIcons.getImage(UIIcon.SQL_PAGE_OUTPUT_ALERT); public static final String VAR_CONNECTION_NAME = "connectionName"; public static final String VAR_FILE_NAME = "fileName"; @@ -251,7 +251,7 @@ public class SQLEditor extends SQLEditorBase implements EditorUtils.setInputDataSource(input, container, true); } - checkConnected(false, status -> DBeaverUI.asyncExec(() -> { + checkConnected(false, status -> UIUtils.asyncExec(() -> { if (!status.isOK()) { DBUserInterface.getInstance().showError("Can't connect to database", "Error connecting to datasource", status); } @@ -343,7 +343,7 @@ public class SQLEditor extends SQLEditorBase implements private class OutputLogWriter extends Writer { @Override public void write(@NotNull final char[] cbuf, final int off, final int len) throws IOException { - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { if (!outputViewer.isDisposed()) { outputViewer.getOutputWriter().write(cbuf, off, len); outputViewer.scrollToEnd(); @@ -501,7 +501,7 @@ public class SQLEditor extends SQLEditorBase implements updateExecutionContext(null); // Update controls - DBeaverUI.asyncExec(this::onDataSourceChange); + UIUtils.asyncExec(this::onDataSourceChange); } /** @@ -1070,7 +1070,7 @@ public class SQLEditor extends SQLEditorBase implements status); return; } - updateExecutionContext(() -> DBeaverUI.syncExec(() -> + updateExecutionContext(() -> UIUtils.syncExec(() -> processQueries(queries, newTab, export, false, queryListener))); }; if (!checkSession(connectListener)) { @@ -1218,7 +1218,7 @@ public class SQLEditor extends SQLEditorBase implements private void fireDataSourceChange() { updateExecutionContext(null); - DBeaverUI.syncExec(this::onDataSourceChange); + UIUtils.syncExec(this::onDataSourceChange); } private void onDataSourceChange() @@ -1357,7 +1357,7 @@ public class SQLEditor extends SQLEditorBase implements final boolean dsEvent = event.getObject() == getDataSourceContainer(); final boolean objectEvent = event.getObject().getDataSource() == getDataSource(); if (dsEvent || objectEvent) { - DBeaverUI.asyncExec( + UIUtils.asyncExec( () -> { switch (event.getAction()) { case OBJECT_REMOVE: @@ -1485,7 +1485,7 @@ public class SQLEditor extends SQLEditorBase implements private void showStatementInEditor(final SQLQuery query, final boolean select) { - DBeaverUI.runUIJob("Select SQL query in editor", monitor -> { + UIUtils.runUIJob("Select SQL query in editor", monitor -> { if (isDisposed()) { return; } @@ -1575,7 +1575,7 @@ public class SQLEditor extends SQLEditorBase implements { @Override protected IContributionItem[] getContributionItems() { - IEditorPart activeEditor = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart activeEditor = UIUtils.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (!(activeEditor instanceof SQLEditorBase)) { return new IContributionItem[0]; } @@ -1780,7 +1780,7 @@ public class SQLEditor extends SQLEditorBase implements // } if (resultSetNumber >= resultContainers.size() && !isDisposed()) { // Open new results processor in UI thread - DBeaverUI.syncExec(() -> createResultsProvider(resultSetNumber)); + UIUtils.syncExec(() -> createResultsProvider(resultSetNumber)); } if (resultSetNumber >= resultContainers.size()) { // Editor seems to be disposed - no data receiver @@ -1788,7 +1788,7 @@ public class SQLEditor extends SQLEditorBase implements } final QueryResultsContainer resultsProvider = resultContainers.get(resultSetNumber); // Open new results processor in UI thread - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { if (statement != null && !resultTabs.isDisposed()) { resultsProvider.query = statement; resultsProvider.lastGoodQuery = statement; @@ -1927,7 +1927,7 @@ public class SQLEditor extends SQLEditorBase implements @Override public void openNewContainer(DBRProgressMonitor monitor, DBSDataContainer dataContainer, DBDDataFilter newFilter) { - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { QueryResultsContainer resultsProvider = queryProcessor.createResultsProvider(dataContainer); resultsProvider.tabItem.getParent().setSelection(resultsProvider.tabItem); setActiveResultsContainer(resultsProvider); @@ -1935,6 +1935,18 @@ public class SQLEditor extends SQLEditorBase implements }); } + @Override + public IResultSetDecorator createResultSetDecorator() { + return new QueryResultsDecorator() { + @Override + public String getEmptyDataDescription() { + String execQuery = ActionUtils.findCommandDescription(CoreCommands.CMD_EXECUTE_STATEMENT, getSite(), true); + String execScript = ActionUtils.findCommandDescription(CoreCommands.CMD_EXECUTE_SCRIPT, getSite(), true); + return NLS.bind(CoreMessages.sql_editor_resultset_filter_panel_control_execute_to_see_reslut, execQuery, execScript); + } + }; + } + @Override public int getSupportedFeatures() { @@ -2121,6 +2133,11 @@ public class SQLEditor extends SQLEditorBase implements public void handleResultSetChange() { updateDirtyFlag(); } + + @Override + public void handleResultSetSelectionChange(SelectionChangedEvent event) { + + } } private String getResultsTabName(int resultSetNumber, int queryIndex, String name) { @@ -2163,7 +2180,7 @@ public class SQLEditor extends SQLEditorBase implements try { lastUIUpdateTime = -1; scriptMode = true; - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { if (isDisposed()) { return; } @@ -2181,7 +2198,7 @@ public class SQLEditor extends SQLEditorBase implements try { boolean isInExecute = getTotalQueryRunning() > 0; if (!isInExecute) { - DBeaverUI.asyncExec(() -> + UIUtils.asyncExec(() -> setTitleImage(DBeaverIcons.getImage(UIIcon.SQL_SCRIPT_EXECUTE))); } queryProcessor.curJobRunning.incrementAndGet(); @@ -2189,7 +2206,7 @@ public class SQLEditor extends SQLEditorBase implements runningQueries.add(query); } if (lastUIUpdateTime < 0 || System.currentTimeMillis() - lastUIUpdateTime > SCRIPT_UI_UPDATE_PERIOD) { - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { TextViewer textViewer = getTextViewer(); if (textViewer != null) { topOffset = textViewer.getTopIndexStartOffset(); @@ -2214,14 +2231,14 @@ public class SQLEditor extends SQLEditorBase implements } queryProcessor.curJobRunning.decrementAndGet(); if (getTotalQueryRunning() <= 0) { - DBeaverUI.asyncExec(() -> + UIUtils.asyncExec(() -> setTitleImage(editorImage)); } if (isDisposed()) { return; } - DBeaverUI.runUIJob("Process SQL query result", monitor -> { + UIUtils.runUIJob("Process SQL query result", monitor -> { // Finish query processQueryResult(session, result); // Update dirty flag @@ -2273,7 +2290,7 @@ public class SQLEditor extends SQLEditorBase implements } // Close tab on error if (closeTabOnError && error != null) { - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { CTabItem tabItem = queryProcessor.getFirstResults().tabItem; if (tabItem != null && tabItem.getShowClose()) { tabItem.dispose(); @@ -2299,7 +2316,7 @@ public class SQLEditor extends SQLEditorBase implements return; } runPostExecuteActions(null); - DBeaverUI.syncExec(() -> { + UIUtils.syncExec(() -> { if (isDisposed()) { // Editor closed return; @@ -2537,7 +2554,7 @@ public class SQLEditor extends SQLEditorBase implements final String dumpString = dump.toString(); if (!dumpString.isEmpty()) { - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { if (outputViewer.isDisposed()) { return; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java index 4a91724ae744681a3e5979a9fcd4e7e6c14ade91..d04eae6adebe3d2523a72e8f2d49984f62dfcf70 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java @@ -46,17 +46,13 @@ import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.core.CoreCommands; import org.jkiss.dbeaver.core.DBeaverActivator; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.impl.sql.BasicSQLDialect; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.sql.*; -import org.jkiss.dbeaver.ui.ActionUtils; -import org.jkiss.dbeaver.ui.ICommentsSupport; -import org.jkiss.dbeaver.ui.IErrorVisualizer; -import org.jkiss.dbeaver.ui.TextUtils; +import org.jkiss.dbeaver.ui.*; import org.jkiss.dbeaver.ui.editors.sql.syntax.SQLPartitionScanner; import org.jkiss.dbeaver.ui.editors.sql.syntax.SQLRuleManager; import org.jkiss.dbeaver.ui.editors.sql.syntax.rules.SQLVariableRule; @@ -262,7 +258,7 @@ public abstract class SQLEditorBase extends BaseTextEditor implements IErrorVisu protected ISharedTextColors getSharedColors() { - return DBeaverUI.getSharedTextColors(); + return UIUtils.getSharedTextColors(); } @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorContributor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorContributor.java index 9835e4b6d3b4cbba8142ad3ebbccafba828b3f8c..a94710d1f70bc5939e0a6c78c9d1e7a38bcf3339 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorContributor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorContributor.java @@ -26,8 +26,8 @@ import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; import org.eclipse.ui.texteditor.RetargetTextEditorAction; import org.jkiss.dbeaver.core.CoreCommands; import org.jkiss.dbeaver.core.DBeaverActivator; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.ActionUtils; +import org.jkiss.dbeaver.ui.UIUtils; import java.util.ResourceBundle; @@ -126,7 +126,7 @@ public class SQLEditorContributor extends TextEditorActionContributor } if (!isNestedEditor()) { - IWorkbenchWindow window = DBeaverUI.getActiveWorkbenchWindow(); + IWorkbenchWindow window = UIUtils.getActiveWorkbenchWindow(); IMenuManager editMenu = manager.findMenuUsingPath(IWorkbenchActionConstants.M_EDIT); if (editMenu != null) { editMenu.insertAfter(IWorkbenchActionConstants.MB_ADDITIONS, ActionUtils.makeCommandContribution(window, ITextEditorActionDefinitionIds.BLOCK_SELECTION_MODE)); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorNested.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorNested.java index 96d17c76393ce3951058e5ed78d7d0313e046292..2536c393fadb6bc6b58b56fe3e4506a901b62df9 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorNested.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorNested.java @@ -45,7 +45,6 @@ import org.eclipse.ui.texteditor.IDocumentProvider; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreCommands; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.exec.compile.DBCCompileLog; import org.jkiss.dbeaver.model.exec.compile.DBCSourceHost; @@ -157,7 +156,7 @@ public abstract class SQLEditorNested @Override public void doSave(final IProgressMonitor progressMonitor) { - DBeaverUI.syncExec(() -> SQLEditorNested.super.doSave(progressMonitor)); + UIUtils.syncExec(() -> SQLEditorNested.super.doSave(progressMonitor)); } @Override @@ -256,7 +255,7 @@ public abstract class SQLEditorNested job.addJobChangeListener(new JobChangeAdapter() { @Override public void done(IJobChangeEvent event) { - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { SQLEditorNested.this.setInput(getEditorInput()); SQLEditorNested.this.reloadSyntaxRules(); }); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorOutputViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorOutputViewer.java index 4e4f936fafc5728137b1b1ef3a34113d8db2a3ed..5377963ef2bb7ce5d9f28fa450b284e5a6a60ee6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorOutputViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorOutputViewer.java @@ -27,6 +27,7 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.themes.ITheme; import org.jkiss.dbeaver.model.sql.SQLConstants; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.controls.StyledTextUtils; import java.io.IOException; import java.io.PrintWriter; @@ -114,7 +115,7 @@ public class SQLEditorOutputViewer extends Composite { @Override public void menuAboutToShow(IMenuManager manager) { - UIUtils.fillDefaultStyledTextContextMenu(manager, text); + StyledTextUtils.fillDefaultStyledTextContextMenu(manager, text); manager.add(new Separator()); manager.add(new Action("Clear") { @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewerConfiguration.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewerConfiguration.java index 0aeaa2fa7658158dbe9c5a3c53c0dfb270ceb787..35c126a2a2401c2c7c9c718420833bc28a590dae 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewerConfiguration.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewerConfiguration.java @@ -43,11 +43,11 @@ import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.editors.text.TextSourceViewerConfiguration; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.preferences.DBPPreferenceListener; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.sql.SQLConstants; import org.jkiss.dbeaver.model.sql.SQLDialect; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.sql.indent.SQLAutoIndentStrategy; import org.jkiss.dbeaver.ui.editors.sql.indent.SQLCommentAutoIndentStrategy; import org.jkiss.dbeaver.ui.editors.sql.indent.SQLStringAutoIndentStrategy; @@ -167,8 +167,8 @@ public class SQLEditorSourceViewerConfiguration extends TextSourceViewerConfigur assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer)); //In the future, a preference page will be added to customize foreground and background. - Color foreground = new Color(DBeaverUI.getDisplay(), 0, 0, 0); - Color background = new Color(DBeaverUI.getDisplay(), 255, 255, 255); + Color foreground = new Color(UIUtils.getDisplay(), 0, 0, 0); + Color background = new Color(UIUtils.getDisplay(), 255, 255, 255); assistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE); assistant.setContextInformationPopupForeground(foreground); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLSourceViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLSourceViewer.java index 28594284c29f321db955450db4ce675add46dbd4..4b5d5fb3e4b1fd55d931116eb6bd819d19fef6ee 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLSourceViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLSourceViewer.java @@ -19,18 +19,17 @@ package org.jkiss.dbeaver.ui.editors.sql; import org.eclipse.jface.action.*; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPScriptObject; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.UIIcon; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.IDatabaseEditorInput; import org.jkiss.dbeaver.ui.editors.sql.handlers.OpenHandler; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -45,7 +44,7 @@ public class SQLSourceViewer extends SQLE { final DBPDataSource dataSource = getDataSource(); OpenHandler.openSQLConsole( - DBeaverUI.getActiveWorkbenchWindow(), + UIUtils.getActiveWorkbenchWindow(), dataSource == null ? null : dataSource.getContainer(), "Source", getDocument().get() diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/convert/CopySourceCodeHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/convert/CopySourceCodeHandler.java index c8770477697bf07ba7c96ecf89f18d27627eb305..5782fde9309d3bd7f68d255c40d684c66281b8a0 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/convert/CopySourceCodeHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/convert/CopySourceCodeHandler.java @@ -43,6 +43,7 @@ import org.jkiss.dbeaver.registry.sql.SQLConverterRegistry; import org.jkiss.dbeaver.registry.sql.SQLTargetConverterDescriptor; import org.jkiss.dbeaver.runtime.properties.PropertySourceCustom; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.controls.StyledTextUtils; import org.jkiss.dbeaver.ui.dialogs.sql.BaseSQLDialog; import org.jkiss.dbeaver.ui.editors.sql.SQLEditor; import org.jkiss.dbeaver.ui.properties.PropertyTreeViewer; @@ -175,7 +176,7 @@ public class CopySourceCodeHandler extends AbstractHandler { targetText = new StyledText(targetGroup, SWT.BORDER | SWT.READ_ONLY | SWT.V_SCROLL | SWT.WRAP); targetText.setLayoutData(new GridData(GridData.FILL_BOTH)); targetText.setFont(JFaceResources.getFont(JFaceResources.TEXT_FONT)); - UIUtils.fillDefaultStyledTextContextMenu(targetText); + StyledTextUtils.fillDefaultStyledTextContextMenu(targetText); } loadOptions(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/format/BaseFormatterConfigurationPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/format/BaseFormatterConfigurationPage.java index 21d2d360ea551e9a2f4d3668b4aa464559c30bd1..2f2928a0b3be0357da7f5f79bbb5142e00a23583 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/format/BaseFormatterConfigurationPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/format/BaseFormatterConfigurationPage.java @@ -22,7 +22,6 @@ import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.sql.format.SQLFormatter; import org.jkiss.dbeaver.model.sql.format.SQLFormatterConfiguration; import org.jkiss.dbeaver.registry.sql.SQLFormatterConfigurer; @@ -65,7 +64,7 @@ public abstract class BaseFormatterConfigurationPage extends ActiveWizardPage im public boolean configure(String formatName, SQLFormatter formatter, SQLFormatterConfiguration configuration) { Wizard wizard = new ConfigWizard(formatName, configuration); wizard.addPage(this); - WizardDialog configDialog = new WizardDialog(DBeaverUI.getActiveWorkbenchShell(), wizard) { + WizardDialog configDialog = new WizardDialog(UIUtils.getActiveWorkbenchShell(), wizard) { @Override protected void createButtonsForButtonBar(Composite parent) { super.createButtonsForButtonBar(parent); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/generator/GenerateSQLContributor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/generator/GenerateSQLContributor.java index 1fa1be6170183bd84a4f2409a9f587ae1cfb3711..6a2930d3c47bd89035a9b71ebe1855b467395fda 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/generator/GenerateSQLContributor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/generator/GenerateSQLContributor.java @@ -36,7 +36,6 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDRowIdentifier; @@ -76,7 +75,7 @@ public class GenerateSQLContributor extends CompoundContributionItem { @Override protected IContributionItem[] getContributionItems() { - IWorkbenchPart part = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActivePart(); + IWorkbenchPart part = UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart(); IStructuredSelection structuredSelection = GenerateSQLContributor.getSelectionFromPart(part); if (structuredSelection == null || structuredSelection.isEmpty()) { return new IContributionItem[0]; @@ -577,7 +576,7 @@ public class GenerateSQLContributor extends CompoundContributionItem { @Override public void run() { - IWorkbenchPage activePage = DBeaverUI.getActiveWorkbenchWindow().getActivePage(); + IWorkbenchPage activePage = UIUtils.getActiveWorkbenchWindow().getActivePage(); IEditorPart activeEditor = activePage.getActiveEditor(); DBPDataSource dataSource = null; @@ -630,7 +629,7 @@ public class GenerateSQLContributor extends CompoundContributionItem { sqlGenerator.setCompactSQL( getDialogBoundsSettings().get(PROP_USE_COMPACT_SQL) != null && getDialogBoundsSettings().getBoolean(PROP_USE_COMPACT_SQL)); - DBeaverUI.runInUI(sqlGenerator); + UIUtils.runInUI(sqlGenerator); Object sql = sqlGenerator.getResult(); if (sql != null) { setSQLText(CommonUtils.toString(sql)); @@ -646,7 +645,7 @@ public class GenerateSQLContributor extends CompoundContributionItem { sqlGenerator.setFullyQualifiedNames(useFQNames.getSelection()); getDialogBoundsSettings().put(PROP_USE_FQ_NAMES, useFQNames.getSelection()); - DBeaverUI.runInUI(sqlGenerator); + UIUtils.runInUI(sqlGenerator); Object sql = sqlGenerator.getResult(); if (sql != null) { setSQLText(CommonUtils.toString(sql)); @@ -661,7 +660,7 @@ public class GenerateSQLContributor extends CompoundContributionItem { sqlGenerator.setCompactSQL(useCompactSQL.getSelection()); getDialogBoundsSettings().put(PROP_USE_COMPACT_SQL, useCompactSQL.getSelection()); - DBeaverUI.runInUI(sqlGenerator); + UIUtils.runInUI(sqlGenerator); Object sql = sqlGenerator.getResult(); if (sql != null) { setSQLText(CommonUtils.toString(sql)); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/OpenHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/OpenHandler.java index 7bcfa8da7eab644e43247709a8d09897774812f8..328c6596752c39a892d0fde8179e08e441109f7d 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/OpenHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/OpenHandler.java @@ -35,7 +35,6 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.CoreCommands; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPContextProvider; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBUtils; @@ -50,6 +49,7 @@ import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.registry.ProjectRegistry; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.AbstractDataSourceHandler; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.controls.ScriptSelectorPanel; @@ -234,7 +234,7 @@ public class OpenHandler extends AbstractDataSourceHandler { } if (!project.isOpen()) { try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/OpenObjectConsoleHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/OpenObjectConsoleHandler.java index 68fe7f409db1ac5da2ad9410856e09755f052246..e0f6f3b7573242895ddf1162d420d2479580d502 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/OpenObjectConsoleHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/OpenObjectConsoleHandler.java @@ -25,13 +25,13 @@ import org.eclipse.core.runtime.jobs.IJobChangeEvent; import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.handlers.HandlerUtil; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.runtime.AbstractJob; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithResult; import org.jkiss.dbeaver.model.struct.DBSEntity; import org.jkiss.dbeaver.model.struct.DBSObject; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.sql.SQLEditor; import org.jkiss.dbeaver.ui.editors.sql.generator.GenerateSQLContributor; import org.jkiss.dbeaver.ui.navigator.NavigatorUtils; @@ -69,7 +69,7 @@ public class OpenObjectConsoleHandler extends AbstractHandler { protected void openConsole(IWorkbenchWindow workbenchWindow, DBRRunnableWithResult generator, DBPDataSourceContainer ds, String title, boolean doRun) { - DBeaverUI.runInUI(workbenchWindow, generator); + UIUtils.runInUI(workbenchWindow, generator); String sql = generator.getResult(); SQLEditor editor = OpenHandler.openSQLConsole(workbenchWindow, ds, title, sql); if (editor != null) { @@ -91,7 +91,7 @@ public class OpenObjectConsoleHandler extends AbstractHandler { execJob.addJobChangeListener(new JobChangeAdapter() { @Override public void done(IJobChangeEvent event) { - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { if (doRun) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionAnalyzer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionAnalyzer.java index 5fedcba4680664d2fbadeecd2608be88e4044764..e7daf9ac90c76931ad7b0210ec81eb31d1b78949 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionAnalyzer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionAnalyzer.java @@ -22,6 +22,7 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.impl.DBObjectNameCaseTransformer; +import org.jkiss.dbeaver.model.impl.struct.RelationalObjectType; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; @@ -137,6 +138,22 @@ class SQLCompletionAnalyzer makeDataSourceProposals(); } } + + if (!request.simpleMode && request.queryType == SQLCompletionProcessor.QueryType.COLUMN && dataSource instanceof DBSObjectContainer) { + // Add procedures/functions for column proposals + DBSStructureAssistant structureAssistant = DBUtils.getAdapter(DBSStructureAssistant.class, dataSource); + DBSObjectContainer sc = (DBSObjectContainer) dataSource; + DBSObject selectedObject = DBUtils.getActiveInstanceObject(dataSource); + if (selectedObject instanceof DBSObjectContainer) { + sc = (DBSObjectContainer)selectedObject; + } + if (structureAssistant != null) { + makeProposalsFromAssistant(dataSource, structureAssistant, + sc, + new DBSObjectType[] {RelationalObjectType.TYPE_PROCEDURE }, + request.wordPart); + } + } } else { // Get list of sub-objects (filtered by wordPart) makeDataSourceProposals(); @@ -328,7 +345,7 @@ class SQLCompletionAnalyzer } } if (structureAssistant != null) { - makeProposalsFromAssistant(dataSource, structureAssistant, sc, lastToken); + makeProposalsFromAssistant(dataSource, structureAssistant, sc, null, lastToken); } } } @@ -591,13 +608,14 @@ class SQLCompletionAnalyzer DBPDataSource dataSource, DBSStructureAssistant assistant, @Nullable DBSObjectContainer rootSC, + DBSObjectType[] objectTypes, String objectName) { try { Collection references = assistant.findObjectsByMask( monitor, rootSC, - assistant.getAutoCompleteObjectTypes(), + objectTypes == null ? assistant.getAutoCompleteObjectTypes() : objectTypes, makeObjectNameMask(dataSource, request.wordDetector.removeQuotes(objectName)), request.wordDetector.isQuoted(objectName), dataSource.getContainer().getPreferenceStore().getBoolean(SQLPreferenceConstants.USE_GLOBAL_ASSISTANT), diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionProposal.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionProposal.java index 9197c23105529d3d1efe8caa6284d0bd6c62ed65..0908ce4b72d75f9b370ac24fd3e2fa992f2bd5f0 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionProposal.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionProposal.java @@ -29,20 +29,26 @@ import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPKeywordType; import org.jkiss.dbeaver.model.DBPNamedObject; import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.impl.struct.RelationalObjectType; import org.jkiss.dbeaver.model.runtime.DefaultProgressMonitor; +import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.model.sql.SQLSyntaxManager; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSObjectContainer; import org.jkiss.dbeaver.model.struct.DBSObjectReference; +import org.jkiss.dbeaver.model.struct.rdb.DBSProcedure; +import org.jkiss.dbeaver.model.struct.rdb.DBSProcedureParameter; import org.jkiss.dbeaver.ui.TextUtils; import org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants; import org.jkiss.utils.CommonUtils; +import java.util.Collection; import java.util.Locale; /** @@ -160,6 +166,10 @@ public class SQLCompletionProposal implements ICompletionProposal, ICompletionPr public void apply(IDocument document) { try { String replaceOn = replacementString; + String extraString = getExtraString(); + if (extraString != null) { + replaceOn += extraString; + } if (replacementAfter != null) { replaceOn += replacementAfter; } @@ -189,6 +199,37 @@ public class SQLCompletionProposal implements ICompletionProposal, ICompletionPr } } + private String getExtraString() { + try { + VoidProgressMonitor monitor = new VoidProgressMonitor(); + if (object instanceof DBSObjectReference) { + if (((DBSObjectReference) object).getObjectType() == RelationalObjectType.TYPE_PROCEDURE) { + object = ((DBSObjectReference) object).resolveObject(monitor); + } + } + if (object instanceof DBSProcedure) { + // Ad parameter marks + Collection parameters = ((DBSProcedure) object).getParameters(monitor); + if (!CommonUtils.isEmpty(parameters)) { + StringBuilder params = new StringBuilder(); + for (DBSProcedureParameter param : parameters) { + if (param.getParameterKind().isInput()) { + if (params.length() > 0) params.append(", "); + params.append(":").append(param.getName()); + } + } + return "(" + params.toString() + ")"; + } else { + return "()"; + } + } + return null; + } catch (DBException e) { + log.error("Error resolving procedure parameters", e); + return null; + } + } + /* * @see ICompletionProposal#getSelection(IDocument) */ diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/BaseTextEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/BaseTextEditor.java index 57bca63ddd59d2ef1a8850100e7d7255ed52eed7..5ff652e2703d2fc8af7e24e85d2bac1eedb608b6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/BaseTextEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/BaseTextEditor.java @@ -37,12 +37,12 @@ import org.eclipse.ui.texteditor.AbstractDecoratedTextEditor; import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.texteditor.ITextEditorActionConstants; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.ICommentsSupport; import org.jkiss.dbeaver.ui.ISingleControlEditor; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.DialogUtils; import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.INonPersistentEditorInput; @@ -282,7 +282,7 @@ public abstract class BaseTextEditor extends AbstractDecoratedTextEditor impleme } try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(final DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/FileRefDocumentProvider.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/FileRefDocumentProvider.java index 979489940f7d300f7bad3c66d532867999acaa6c..799fbb06b30dffca1794fcfe71ec2670802e9b68 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/FileRefDocumentProvider.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/FileRefDocumentProvider.java @@ -28,7 +28,7 @@ import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.IPersistentStorage; import org.jkiss.dbeaver.ui.editors.ProjectFileEditorInput; @@ -612,7 +612,7 @@ public class FileRefDocumentProvider extends BaseTextDocumentProvider { IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow[] windows = workbench.getWorkbenchWindows(); if (windows != null && windows.length > 0) { - DBeaverUI.asyncExec(runnable); + UIUtils.asyncExec(runnable); } else { runnable.run(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/xml/XMLSourceViewerConfiguration.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/xml/XMLSourceViewerConfiguration.java index c41a209b795316cce8560605a4e2a4477f16603c..5ed86eaee7f09cbbe1eafac5739e6fbafe64b0b4 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/xml/XMLSourceViewerConfiguration.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/xml/XMLSourceViewerConfiguration.java @@ -34,9 +34,7 @@ import org.eclipse.jface.text.source.ISharedTextColors; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.jface.text.source.SourceViewerConfiguration; import org.eclipse.swt.graphics.RGB; -import org.jkiss.dbeaver.core.DBeaverUI; - -import static org.jkiss.dbeaver.registry.editor.EntityEditorDescriptor.Type.editor; +import org.jkiss.dbeaver.ui.UIUtils; public class XMLSourceViewerConfiguration extends SourceViewerConfiguration { static final RGB COLOR_XML_COMMENT = new RGB(128, 0, 0); @@ -49,7 +47,7 @@ public class XMLSourceViewerConfiguration extends SourceViewerConfiguration { private final XMLEditor editor; public XMLSourceViewerConfiguration(XMLEditor editor) { - this.colorManager = DBeaverUI.getSharedTextColors(); + this.colorManager = UIUtils.getSharedTextColors(); this.editor = editor; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/CheckboxTreeManager.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/CheckboxTreeManager.java index a7c0bf84e89ca0bb0a827232525acb61902bd037..5c948e6c1ed01ce02015c3edf463fc5551fd9691 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/CheckboxTreeManager.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/CheckboxTreeManager.java @@ -22,13 +22,13 @@ import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.jface.viewers.ViewerFilter; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.DBNDataSource; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.utils.ArrayUtils; import java.lang.reflect.InvocationTargetException; @@ -61,7 +61,7 @@ public class CheckboxTreeManager implements ICheckStateListener { private void updateElementsCheck(final Object[] elements, final boolean checked, final boolean change) { checkedElements = viewer.getCheckedElements(); try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask("Load sources tree", 100 * elements.length); @@ -108,7 +108,7 @@ public class CheckboxTreeManager implements ICheckStateListener { } // Run ui - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { if (change) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorContentProvider.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorContentProvider.java index fac22af2c464a9d5bb5a630f25503a54cf47741d..52fa3a8d8ea5643d5fbd8753b8b2a7d5b2cbecc8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorContentProvider.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorContentProvider.java @@ -20,11 +20,11 @@ import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.navigator.NavigatorUtils; import org.jkiss.dbeaver.ui.navigator.database.load.TreeLoadNode; import org.jkiss.dbeaver.ui.navigator.database.load.TreeLoadService; @@ -127,7 +127,7 @@ class DatabaseNavigatorContentProvider implements IStructuredContentProvider, IT ex.getMessage(), ex); // Collapse this item - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { navigatorTree.getViewer().collapseToLevel(parent, 1); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorTree.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorTree.java index c1a9557abcc3500e74e5731bc9b5cf4f8e545203..4b8d2aaa2675cb907b3e1dbf0c3804fced385e0c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorTree.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorTree.java @@ -40,7 +40,6 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithResult; @@ -264,7 +263,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen } } }; - DBeaverUI.runInProgressService(runnable); + UIUtils.runInProgressService(runnable); if (runnable.getResult() != null) { showNode(runnable.getResult()); treeViewer.expandToLevel(runnable.getResult(), 1); @@ -378,7 +377,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen } if (!(newSelection.getData() instanceof DBNNode) || - !(ActionUtils.isCommandEnabled(IWorkbenchCommandConstants.FILE_RENAME, DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActivePart().getSite()))) { + !(ActionUtils.isCommandEnabled(IWorkbenchCommandConstants.FILE_RENAME, UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart().getSite()))) { curSelection = null; return; } @@ -407,7 +406,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen try { if (!treeViewer.getTree().isDisposed() && treeViewer.getTree().isFocusControl() && curSelection == selection && !canceled) { final TreeItem itemToRename = selection; - DBeaverUI.asyncExec(() -> renameItem(itemToRename)); + UIUtils.asyncExec(() -> renameItem(itemToRename)); } } finally { canceled = false; @@ -449,7 +448,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen disposeOldEditor(); treeViewer.getTree().setFocus(); if (!CommonUtils.isEmpty(newName) && !newName.equals(node.getNodeName())) { - NavigatorHandlerObjectRename.renameNode(DBeaverUI.getActiveWorkbenchWindow(), node, newName); + NavigatorHandlerObjectRename.renameNode(UIUtils.getActiveWorkbenchWindow(), node, newName); } } else if (e.keyCode == SWT.ESC) { disposeOldEditor(); @@ -508,7 +507,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen setInitialText("Type part of object name to filter"); ((GridLayout)getLayout()).verticalSpacing = 0; - UIUtils.addDefaultEditActionsSupport(DBeaverUI.getActiveWorkbenchWindow(), getFilterControl()); + UIUtils.addDefaultEditActionsSupport(UIUtils.getActiveWorkbenchWindow(), getFilterControl()); } @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/NavigatorViewBase.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/NavigatorViewBase.java index cee6bb623513fd3a761071c3c338035789d8b4b8..ba32bf18ab33cae9f7841c8efb00c0905d7d5e4b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/NavigatorViewBase.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/navigator/database/NavigatorViewBase.java @@ -27,13 +27,13 @@ import org.eclipse.ui.views.properties.IPropertySheetPage; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.IDataSourceContainerProvider; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNodeHandler; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.controls.PropertyPageStandard; @@ -136,7 +136,7 @@ public abstract class NavigatorViewBase extends ViewPart implements INavigatorMo NavigatorViewBase.DoubleClickBehavior.valueOf(DBeaverCore.getGlobalPreferenceStore().getString(DBeaverPreferences.NAVIGATOR_CONNECTION_DOUBLE_CLICK)); switch (doubleClickBehavior) { case EDIT: - NavigatorHandlerObjectOpen.openEntityEditor((DBNDataSource) node, null, DBeaverUI.getActiveWorkbenchWindow()); + NavigatorHandlerObjectOpen.openEntityEditor((DBNDataSource) node, null, UIUtils.getActiveWorkbenchWindow()); break; case CONNECT: if (dataSource.isConnected()) { @@ -199,7 +199,7 @@ public abstract class NavigatorViewBase extends ViewPart implements INavigatorMo } if (lastSelection instanceof DBNDatabaseNode && DBeaverCore.getGlobalPreferenceStore().getBoolean(DBeaverPreferences.NAVIGATOR_SYNC_EDITOR_DATASOURCE)) { - IEditorPart activeEditor = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart activeEditor = UIUtils.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (activeEditor != null) { NavigatorUtils.syncEditorWithNavigator(this, activeEditor); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/perspective/DataSourceManagementToolbar.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/perspective/DataSourceManagementToolbar.java index 7794de88ae48087df32a546941b15cfef152297b..b315a05c478e3ae1d71d44c7c1564c857b37dca0 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/perspective/DataSourceManagementToolbar.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/perspective/DataSourceManagementToolbar.java @@ -46,7 +46,6 @@ import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry; import org.jkiss.dbeaver.model.app.DBPRegistryListener; @@ -453,7 +452,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven (event.getAction() == DBPEvent.Action.OBJECT_SELECT && Boolean.TRUE.equals(event.getEnabled()) && DBUtils.getContainer(event.getObject()) == getDataSourceContainer()) ) { - DBeaverUI.asyncExec( + UIUtils.asyncExec( new Runnable() { @Override public void run() { @@ -468,11 +467,11 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven if (event.getAction() == DBPEvent.Action.OBJECT_UPDATE && event.getEnabled() != null) { DataSourcePropertyTester.firePropertyChange(DataSourcePropertyTester.PROP_CONNECTED); DataSourcePropertyTester.firePropertyChange(DataSourcePropertyTester.PROP_TRANSACTIONAL); - DBeaverUI.asyncExec( + UIUtils.asyncExec( new Runnable() { @Override public void run() { - IWorkbenchWindow workbenchWindow = DBeaverUI.getActiveWorkbenchWindow(); + IWorkbenchWindow workbenchWindow = UIUtils.getActiveWorkbenchWindow(); if (workbenchWindow instanceof WorkbenchWindow) { ((WorkbenchWindow) workbenchWindow).updateActionBars(); } @@ -558,7 +557,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven databaseReader.addJobChangeListener(new JobChangeAdapter() { @Override public void done(final IJobChangeEvent event) { - DBeaverUI.syncExec(new Runnable() { + UIUtils.syncExec(new Runnable() { @Override public void run() { fillDatabaseList((DatabaseListReader) event.getJob()); @@ -639,7 +638,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven updateJob.addJobChangeListener(new JobChangeAdapter() { @Override public void done(IJobChangeEvent event) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { updateControls(false); @@ -797,7 +796,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven } }); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { if (workbenchWindow != null && workbenchWindow.getActivePage() != null) { @@ -858,7 +857,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven @Override protected Control createControl(Composite parent) { - DataSourceManagementToolbar toolbar = new DataSourceManagementToolbar(DBeaverUI.getActiveWorkbenchWindow()); + DataSourceManagementToolbar toolbar = new DataSourceManagementToolbar(UIUtils.getActiveWorkbenchWindow()); return toolbar.createControl(parent); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java index 6b56fa6e7b285ab70df74776537f27efa60382f9..5beafca11f4a11b4a8eb8079f21e8f9686f103a1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java @@ -200,7 +200,7 @@ public class PrefPageDatabaseGeneral extends AbstractPrefPage implements IWorkbe "Restart " + GeneralUtils.getProductName(), "You need to restart " + GeneralUtils.getProductName() + " to perform actual language change.\nDo you want to restart?")) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { PlatformUI.getWorkbench().restart(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLFormat.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLFormat.java index a56ccbec75c7322b6a5654577df9e2ec9af2fb0a..b3d965d50603adc59286e8657cc3c7c5551cc725 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLFormat.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLFormat.java @@ -32,7 +32,6 @@ import org.eclipse.swt.widgets.*; import org.eclipse.ui.IEditorSite; import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPIdentifierCase; @@ -245,7 +244,7 @@ public class PrefPageSQLFormat extends TargetPrefPage try { try (final InputStream sqlStream = getClass().getResourceAsStream(FORMAT_FILE_NAME)) { final String sqlText = ContentUtils.readToString(sqlStream, GeneralUtils.DEFAULT_ENCODING); - IEditorSite subSite = new SubEditorSite(DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActivePart().getSite()); + IEditorSite subSite = new SubEditorSite(UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart().getSite()); StringEditorInput sqlInput = new StringEditorInput("SQL preview", sqlText, true, GeneralUtils.getDefaultFileEncoding()); sqlViewer.init(subSite, sqlInput); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertyTreeViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertyTreeViewer.java index ce4cb7fe8b46c1ece77e5659ac76a14df35a30e9..9db0fe728b58fcc05ba3f0171fb67ae74be87d87 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertyTreeViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertyTreeViewer.java @@ -37,7 +37,6 @@ import org.eclipse.swt.widgets.*; import org.eclipse.ui.views.properties.IPropertySource2; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPObject; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; @@ -55,6 +54,7 @@ import org.jkiss.utils.BeanUtils; import org.jkiss.utils.CommonUtils; import java.lang.reflect.Array; +import java.lang.reflect.Method; import java.text.Collator; import java.util.*; import java.util.List; @@ -166,7 +166,7 @@ public class PropertyTreeViewer extends TreeViewer { if (cellValue instanceof DBSObject) { DBNDatabaseNode node = NavigatorHandlerObjectOpen.getNodeByObject((DBSObject) cellValue); if (node != null) { - NavigatorHandlerObjectOpen.openEntityEditor(node, null, DBeaverUI.getActiveWorkbenchWindow()); + NavigatorHandlerObjectOpen.openEntityEditor(node, null, UIUtils.getActiveWorkbenchWindow()); } } } @@ -209,7 +209,7 @@ public class PropertyTreeViewer extends TreeViewer { } public void repackColumns() { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { Tree tree = getTree(); @@ -410,7 +410,7 @@ public class PropertyTreeViewer extends TreeViewer { if (prop.property == null || !prop.isEditable()) { return; } - final CellEditor cellEditor = UIUtils.createPropertyEditor(DBeaverUI.getActiveWorkbenchWindow(), treeControl, prop.propertySource, prop.property, SWT.LEFT); + final CellEditor cellEditor = UIUtils.createPropertyEditor(UIUtils.getActiveWorkbenchWindow(), treeControl, prop.propertySource, prop.property, SWT.LEFT); if (cellEditor == null) { return; } @@ -630,6 +630,22 @@ public class PropertyTreeViewer extends TreeViewer { this.extraLabelProvider = extraLabelProvider; } + public void saveEditorValues() { + if (curCellEditor != null && curCellEditor.isActivated()) { + try { + // This is a hack. On MacOS buttons don't get focus so when user closes dialog + // by clicking on Ok button CellEditor doesn't get FocusLost event and thus doesn't save its value. + // This is workaround. Calling protected method focusLost in okPressed saves the value. + // See https://github.com/dbeaver/dbeaver/issues/3553 + Method focusLost = CellEditor.class.getDeclaredMethod("focusLost"); + focusLost.setAccessible(true); + focusLost.invoke(curCellEditor); + } catch (Throwable throwable) { + // Ignore + } + } + } + private static class TreeNode { final TreeNode parent; final DBPPropertySource propertySource; @@ -685,6 +701,26 @@ public class PropertyTreeViewer extends TreeViewer { } } + public static class NodeFilter extends ViewerFilter { + private final String searchString; + public NodeFilter(String searchString) { + this.searchString = searchString.toUpperCase(Locale.ENGLISH); + } + + @Override + public boolean select(Viewer viewer, Object parentElement, Object element) { + if (element instanceof TreeNode) { + DBPPropertyDescriptor property = ((TreeNode) element).property; + if (property != null) { + return property.getDisplayName().toUpperCase(Locale.ENGLISH).contains(searchString); + } else if (((TreeNode) element).category != null) { + return true; + } + } + return false; + } + } + class PropsContentProvider implements IStructuredContentProvider, ITreeContentProvider { @Override public void inputChanged(Viewer v, Object oldInput, Object newInput) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/AbstractResourceHandler.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/AbstractResourceHandler.java index 9ca0d29cc39667ee1cd32da3a87c0dfcbb56fa75..24c9b37400f210cffede255800762109306f227e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/AbstractResourceHandler.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/AbstractResourceHandler.java @@ -24,11 +24,11 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.app.DBPResourceHandler; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.DBNResource; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.entity.FolderEditor; import org.jkiss.dbeaver.ui.editors.entity.NodeEditorInput; @@ -71,7 +71,7 @@ public abstract class AbstractResourceHandler implements DBPResourceHandler { DBNResource node = DBeaverCore.getInstance().getNavigatorModel().getNodeByResource(resource); if (node != null) { NodeEditorInput nodeInput = new NodeEditorInput(node); - DBeaverUI.getActiveWorkbenchWindow().getActivePage().openEditor( + UIUtils.getActiveWorkbenchWindow().getActivePage().openEditor( nodeInput, FolderEditor.class.getName()); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/DefaultResourceHandlerImpl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/DefaultResourceHandlerImpl.java index c3e59e34b8825e0de03ec25af1982c4f68592ea3..8c7568f0abd97dad5abf23fd5aef7e61d5f98cf2 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/DefaultResourceHandlerImpl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/DefaultResourceHandlerImpl.java @@ -24,7 +24,6 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.FileEditorInput; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.DBNResource; import org.jkiss.dbeaver.ui.ProgramInfo; @@ -89,7 +88,7 @@ public class DefaultResourceHandlerImpl extends AbstractResourceHandler { IEditorDescriptor desc = PlatformUI.getWorkbench(). getEditorRegistry().getDefaultEditor(resource.getName()); if (desc != null) { - DBeaverUI.getActiveWorkbenchWindow().getActivePage().openEditor( + UIUtils.getActiveWorkbenchWindow().getActivePage().openEditor( new FileEditorInput((IFile) resource), desc.getId()); } else { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/ScriptsHandlerImpl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/ScriptsHandlerImpl.java index 81826264affe18c8db9295b6712eb0750075d736..06931561171bff6866b81c2cf4af82a5f9a37643 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/ScriptsHandlerImpl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/ScriptsHandlerImpl.java @@ -26,11 +26,11 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.DBNResource; import org.jkiss.dbeaver.ui.UIIcon; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.sql.SQLEditor; @@ -96,7 +96,7 @@ public class ScriptsHandlerImpl extends AbstractResourceHandler { { if (resource instanceof IFile) { FileEditorInput sqlInput = new FileEditorInput((IFile)resource); - DBeaverUI.getActiveWorkbenchWindow().getActivePage().openEditor( + UIUtils.getActiveWorkbenchWindow().getActivePage().openEditor( sqlInput, SQLEditor.class.getName()); } else { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/bookmarks/BookmarksHandlerImpl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/bookmarks/BookmarksHandlerImpl.java index 3e66b38548e6ce0b9e114137892ee886a8dac61f..722779b7779f4a796793e44f55b81b74e809b9a3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/bookmarks/BookmarksHandlerImpl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/resources/bookmarks/BookmarksHandlerImpl.java @@ -26,12 +26,12 @@ import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.navigator.NavigatorUtils; import org.jkiss.dbeaver.ui.resources.AbstractResourceHandler; @@ -122,7 +122,7 @@ public class BookmarksHandlerImpl extends AbstractResourceHandler { } dsNode.initializeNode(null, status -> { if (status.isOK()) { - DBeaverUI.syncExec(() -> openNodeByPath(dsNode, (IFile) resource, storage)); + UIUtils.syncExec(() -> openNodeByPath(dsNode, (IFile) resource, storage)); } else { DBUserInterface.getInstance().showError( "Open bookmark", @@ -140,10 +140,10 @@ public class BookmarksHandlerImpl extends AbstractResourceHandler { { try { BookmarkNodeLoader nodeLoader = new BookmarkNodeLoader(dsNode, storage, file); - DBeaverUI.runInProgressService(nodeLoader); + UIUtils.runInProgressService(nodeLoader); if (nodeLoader.databaseNode != null) { - DBeaverUI.syncExec(() -> NavigatorHandlerObjectOpen.openEntityEditor( - nodeLoader.databaseNode, null, DBeaverUI.getActiveWorkbenchWindow())); + UIUtils.syncExec(() -> NavigatorHandlerObjectOpen.openEntityEditor( + nodeLoader.databaseNode, null, UIUtils.getActiveWorkbenchWindow())); } } catch (InvocationTargetException e) { DBUserInterface.getInstance().showError( diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/AbstractSearchResultsPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/AbstractSearchResultsPage.java index 40e6372bfba3168fbc52eb403a819079328ba25f..0acd95cedcd528a46cf3b68d5983259f08334afd 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/AbstractSearchResultsPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/AbstractSearchResultsPage.java @@ -29,7 +29,6 @@ import org.eclipse.ui.part.Page; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPNamedObject; import org.jkiss.dbeaver.model.navigator.DBNContainer; import org.jkiss.dbeaver.model.navigator.DBNNode; @@ -37,6 +36,7 @@ import org.jkiss.dbeaver.model.navigator.DBNResource; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.ui.LoadingJob; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.TreeContentProvider; import org.jkiss.dbeaver.ui.controls.itemlist.NodeListControl; import org.jkiss.dbeaver.ui.navigator.INavigatorModelView; @@ -65,7 +65,7 @@ public abstract class AbstractSearchResultsPage extends Page imple } if (objects != null) { final List newObjects = objects; - DBeaverUI.syncExec(() -> populateObjects(new VoidProgressMonitor(), newObjects)); + UIUtils.syncExec(() -> populateObjects(new VoidProgressMonitor(), newObjects)); } }; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataPage.java index f601525694e91a92ea30209b3b8b6d3ae9901621..88d6b8d60177531229aa9425be7994757a341a1a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataPage.java @@ -29,7 +29,6 @@ import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.struct.*; @@ -217,7 +216,7 @@ public class SearchDataPage extends AbstractSearchPage { final List checkedNodes = new ArrayList<>(); dataSourceTree.setEnabled(false); try { - DBeaverUI.runInProgressDialog(monitor -> { + UIUtils.runInProgressDialog(monitor -> { monitor.beginTask("Load database nodes", 1); try { monitor.subTask("Load tree state"); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/metadata/SearchMetadataPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/metadata/SearchMetadataPage.java index d4328d376ff5921873d7a429799f515d3a9d81bd..b80c2404b93ae6b66289a85d352dd487b9fee48e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/metadata/SearchMetadataPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/metadata/SearchMetadataPage.java @@ -29,14 +29,11 @@ import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.runtime.DBRProgressListener; -import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; -import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.model.runtime.DefaultProgressMonitor; import org.jkiss.dbeaver.model.struct.*; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; @@ -172,7 +169,7 @@ public class SearchMetadataPage extends AbstractSearchPage { public void onTaskFinished(IStatus status) { if (status.isOK()) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { if (!dataSourceTree.isDisposed()) { @@ -280,7 +277,7 @@ public class SearchMetadataPage extends AbstractSearchPage { UIUtils.createTableColumn(typesTable, SWT.LEFT, CoreMessages.dialog_search_objects_column_description); } - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { loadState(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/SQLResultsView.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/SQLResultsView.java index 88df921bfb4377b651d660d440d7d189797c685b..cbaf06cadf1370323a6964ca8331480a6953d126 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/SQLResultsView.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/SQLResultsView.java @@ -24,9 +24,7 @@ import org.jkiss.dbeaver.model.data.DBDDataFilter; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSDataContainer; -import org.jkiss.dbeaver.ui.controls.resultset.IResultSetContainer; -import org.jkiss.dbeaver.ui.controls.resultset.IResultSetController; -import org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer; +import org.jkiss.dbeaver.ui.controls.resultset.*; public class SQLResultsView extends ViewPart { @@ -96,6 +94,11 @@ public class SQLResultsView extends ViewPart public void openNewContainer(DBRProgressMonitor monitor, DBSDataContainer dataContainer, DBDDataFilter newFilter) { DBeaverUI.getInstance().showError("Data container", "Not supported"); } + + @Override + public IResultSetDecorator createResultSetDecorator() { + return new QueryResultsDecorator(); + } } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/process/ShellProcessView.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/process/ShellProcessView.java index 891cc2cd7670edde40654fa92c65a38e351c3c71..2e3f949ae8b485d99c5f9d147cee207b6912dd8b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/process/ShellProcessView.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/process/ShellProcessView.java @@ -23,7 +23,6 @@ import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.ViewPart; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.AbstractJob; import org.jkiss.dbeaver.model.runtime.DBRProcessController; import org.jkiss.dbeaver.model.runtime.DBRProcessDescriptor; @@ -66,7 +65,7 @@ public class ShellProcessView extends ViewPart implements DBRProcessController if (processDescriptor != null) { if (processDescriptor.isRunning()) { processDescriptor.terminate(); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { setPartName(processDescriptor.getName() + " (destroyed: " + processDescriptor.getExitValue() + ")"); @@ -151,7 +150,7 @@ public class ShellProcessView extends ViewPart implements DBRProcessController return; } final String logLine = line + GeneralUtils.getDefaultLineSeparator(); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { if (processLogText == null || processLogText.isDisposed()) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/session/SessionManagerViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/session/SessionManagerViewer.java index 74ce2c79ac87bf5453fe933ff22d2c9043125571..8b9a95020056c3db09b23a7ad8ceb1bb4104bdde 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/session/SessionManagerViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/session/SessionManagerViewer.java @@ -31,7 +31,6 @@ import org.eclipse.ui.IEditorSite; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.PartInitException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.admin.sessions.DBAServerSession; import org.jkiss.dbeaver.model.admin.sessions.DBAServerSessionManager; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; @@ -79,7 +78,7 @@ public class SessionManagerViewer SashForm sash = UIUtils.createPartDivider(part, composite, SWT.VERTICAL | SWT.SMOOTH); sash.setLayoutData(new GridData(GridData.FILL_BOTH)); - refreshControl = new AutoRefreshControl(sash, sessionManager.getClass().getSimpleName(), monitor -> DBeaverUI.syncExec(this::refreshSessions)); + refreshControl = new AutoRefreshControl(sash, sessionManager.getClass().getSimpleName(), monitor -> UIUtils.syncExec(this::refreshSessions)); sessionTable = new SessionListControl(sash, part.getSite(), sessionManager); sessionTable.getItemsViewer().addSelectionChangedListener(event -> onSessionSelect(getSelectedSession())); diff --git a/plugins/org.jkiss.dbeaver.data.gis/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.data.gis/META-INF/MANIFEST.MF index adc42e1e32c560267d31a0c41adb3dc139821745..0426d945a7f90d519a162022249dc9c9d0cd041e 100644 --- a/plugins/org.jkiss.dbeaver.data.gis/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.data.gis/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.data.gis;singleton:=true -Bundle-Version: 1.0.8 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.9 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.jkiss.dbeaver.model, org.jkiss.dbeaver.core, diff --git a/plugins/org.jkiss.dbeaver.data.gis/pom.xml b/plugins/org.jkiss.dbeaver.data.gis/pom.xml index 702a40b2a3bf8828cfe8dde3062e5b97eb6716a3..f5a656b821f36a76b5460baee73f590a7e4f1a5b 100644 --- a/plugins/org.jkiss.dbeaver.data.gis/pom.xml +++ b/plugins/org.jkiss.dbeaver.data.gis/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.data.gis - 1.0.8 + 1.0.9 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.data.office/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.data.office/META-INF/MANIFEST.MF index 94950f03226276c997d9fb79d842739ad53f832e..9aa7c8f767a208a648d50c21d5521437ae5fdc02 100644 --- a/plugins/org.jkiss.dbeaver.data.office/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.data.office/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.data.office;singleton:=true -Bundle-Version: 1.1.21 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.1.22 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.core.runtime, org.eclipse.swt, diff --git a/plugins/org.jkiss.dbeaver.data.office/pom.xml b/plugins/org.jkiss.dbeaver.data.office/pom.xml index 3e143ce2fa58ee82e39fe55ad3c44d92da28f943..5611d8a3efab98e5ff41e85f876b837c3e2d0031 100644 --- a/plugins/org.jkiss.dbeaver.data.office/pom.xml +++ b/plugins/org.jkiss.dbeaver.data.office/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.data.office - 1.1.21 + 1.1.22 eclipse-plugin - + + + + + diff --git a/plugins/org.jkiss.dbeaver.ext.generic/pom.xml b/plugins/org.jkiss.dbeaver.ext.generic/pom.xml index f4388f9d5a83cbb548253373de14576d8274c53a..cb744fd473e0e2d7ace55631f08f516d032e70dc 100644 --- a/plugins/org.jkiss.dbeaver.ext.generic/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.generic/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.generic - 2.3.70 + 2.3.71 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/model/GenericDataSource.java b/plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/model/GenericDataSource.java index b348e0c634979399cee19605c539b150caffc306..2a5351131a491eb0351eaa98f4128948c410c25e 100644 --- a/plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/model/GenericDataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/model/GenericDataSource.java @@ -56,8 +56,7 @@ import java.util.regex.Matcher; * GenericDataSource */ public class GenericDataSource extends JDBCDataSource - implements DBSObjectSelector, DBPTermProvider, IAdaptable, GenericStructContainer -{ + implements DBSObjectSelector, DBPTermProvider, IAdaptable, GenericStructContainer { private static final Log log = Log.getLog(GenericDataSource.class); static boolean populateClientAppName = false; @@ -80,8 +79,7 @@ public class GenericDataSource extends JDBCDataSource private Format nativeFormatTimestamp, nativeFormatTime, nativeFormatDate; public GenericDataSource(@NotNull DBRProgressMonitor monitor, @NotNull DBPDataSourceContainer container, @NotNull GenericMetaModel metaModel, @NotNull SQLDialect dialect) - throws DBException - { + throws DBException { super(monitor, container, dialect, false); this.metaModel = metaModel; final DBPDriver driver = container.getDriver(); @@ -162,8 +160,7 @@ public class GenericDataSource extends JDBCDataSource } } - public String getAllObjectsPattern() - { + public String getAllObjectsPattern() { return allObjectsPattern; } @@ -173,16 +170,14 @@ public class GenericDataSource extends JDBCDataSource } @Nullable - public GenericMetaObject getMetaObject(String id) - { + public GenericMetaObject getMetaObject(String id) { return metaModel.getMetaObject(id); } @Override - protected DBPDataSourceInfo createDataSourceInfo(@NotNull JDBCDatabaseMetaData metaData) - { + protected DBPDataSourceInfo createDataSourceInfo(@NotNull JDBCDatabaseMetaData metaData) { final GenericDataSourceInfo info = new GenericDataSourceInfo(getContainer().getDriver(), metaData); - final JDBCSQLDialect dialect = (JDBCSQLDialect)getSQLDialect(); + final JDBCSQLDialect dialect = (JDBCSQLDialect) getSQLDialect(); final Object supportsReferences = getContainer().getDriver().getDriverParameter(GenericConstants.PARAM_SUPPORTS_REFERENCES); if (supportsReferences != null) { @@ -212,8 +207,7 @@ public class GenericDataSource extends JDBCDataSource } @Override - public void shutdown(DBRProgressMonitor monitor) - { + public void shutdown(DBRProgressMonitor monitor) { super.shutdown(monitor); String paramShutdown = CommonUtils.toString(getContainer().getDriver().getDriverParameter(GenericConstants.PARAM_SHUTDOWN_URL_PARAM)); if (!CommonUtils.isEmpty(paramShutdown)) { @@ -231,8 +225,8 @@ public class GenericDataSource extends JDBCDataSource final Driver driver = getDriverInstance(new VoidProgressMonitor()); // Use void monitor - driver already loaded if (driver != null) { driver.connect( - getContainer().getActualConnectionConfiguration().getUrl() + paramShutdown, - shutdownProps.isEmpty() ? null : shutdownProps); + getContainer().getActualConnectionConfiguration().getUrl() + paramShutdown, + shutdownProps.isEmpty() ? null : shutdownProps); } } catch (Exception e) { log.debug("Shutdown finished: :" + e.getMessage()); @@ -247,29 +241,24 @@ public class GenericDataSource extends JDBCDataSource @Association public Collection getTableTypes(DBRProgressMonitor monitor) - throws DBException - { + throws DBException { return tableTypeCache.getAllObjects(monitor, this); } - public Collection getCatalogs() - { + public Collection getCatalogs() { return catalogs; } - public GenericCatalog getCatalog(String name) - { + public GenericCatalog getCatalog(String name) { return DBUtils.findObject(getCatalogs(), name); } @Association - public Collection getSchemas() - { + public Collection getSchemas() { return schemas; } - public GenericSchema getSchema(String name) - { + public GenericSchema getSchema(String name) { return DBUtils.findObject(getSchemas(), name); } @@ -327,49 +316,42 @@ public class GenericDataSource extends JDBCDataSource @Override public Collection getTables(DBRProgressMonitor monitor) - throws DBException - { + throws DBException { return structureContainer == null ? null : structureContainer.getTables(monitor); } @Override public GenericTable getTable(DBRProgressMonitor monitor, String name) - throws DBException - { + throws DBException { return structureContainer == null ? null : structureContainer.getTable(monitor, name); } @Override public Collection getPackages(DBRProgressMonitor monitor) - throws DBException - { + throws DBException { return structureContainer == null ? null : structureContainer.getPackages(monitor); } @Override public Collection getIndexes(DBRProgressMonitor monitor) - throws DBException - { + throws DBException { return structureContainer == null ? null : structureContainer.getIndexes(monitor); } @Override public Collection getProcedures(DBRProgressMonitor monitor) - throws DBException - { + throws DBException { return structureContainer == null ? null : structureContainer.getProcedures(monitor); } @Override - public GenericProcedure getProcedure(DBRProgressMonitor monitor, String uniqueName) throws DBException - { + public GenericProcedure getProcedure(DBRProgressMonitor monitor, String uniqueName) throws DBException { return structureContainer == null ? null : structureContainer.getProcedure(monitor, uniqueName); } @Override public Collection getProcedures(DBRProgressMonitor monitor, String name) - throws DBException - { + throws DBException { return structureContainer == null ? null : structureContainer.getProcedures(monitor, name); } @@ -390,8 +372,7 @@ public class GenericDataSource extends JDBCDataSource @Override public void initialize(@NotNull DBRProgressMonitor monitor) - throws DBException - { + throws DBException { super.initialize(monitor); Object omitCatalog = getContainer().getDriver().getDriverParameter(GenericConstants.PARAM_OMIT_CATALOG); Object omitTypeCache = getContainer().getDriver().getDriverParameter(GenericConstants.PARAM_OMIT_TYPE_CACHE); @@ -486,8 +467,7 @@ public class GenericDataSource extends JDBCDataSource @Override public DBSObject refreshObject(@NotNull DBRProgressMonitor monitor) - throws DBException - { + throws DBException { super.refreshObject(monitor); this.selectedEntityName = null; @@ -514,8 +494,7 @@ public class GenericDataSource extends JDBCDataSource } GenericTable findTable(@NotNull DBRProgressMonitor monitor, String catalogName, String schemaName, String tableName) - throws DBException - { + throws DBException { GenericObjectContainer container = null; if (!CommonUtils.isEmpty(catalogName) && !CommonUtils.isEmpty(catalogs)) { container = getCatalog(catalogName); @@ -526,7 +505,7 @@ public class GenericDataSource extends JDBCDataSource } if (!CommonUtils.isEmpty(schemaName)) { if (container != null) { - container = ((GenericCatalog)container).getSchema(monitor, schemaName); + container = ((GenericCatalog) container).getSchema(monitor, schemaName); } else if (!CommonUtils.isEmpty(schemas)) { container = this.getSchema(schemaName); } else { @@ -545,8 +524,7 @@ public class GenericDataSource extends JDBCDataSource @Override public Collection getChildren(@NotNull DBRProgressMonitor monitor) - throws DBException - { + throws DBException { if (!CommonUtils.isEmpty(getCatalogs())) { return getCatalogs(); } else if (!CommonUtils.isEmpty(getSchemas())) { @@ -560,8 +538,7 @@ public class GenericDataSource extends JDBCDataSource @Override public DBSObject getChild(@NotNull DBRProgressMonitor monitor, @NotNull String childName) - throws DBException - { + throws DBException { if (!CommonUtils.isEmpty(getCatalogs())) { return getCatalog(childName); } else if (!CommonUtils.isEmpty(getSchemas())) { @@ -575,8 +552,7 @@ public class GenericDataSource extends JDBCDataSource @Override public Class getChildType(@NotNull DBRProgressMonitor monitor) - throws DBException - { + throws DBException { if (!CommonUtils.isEmpty(catalogs)) { return GenericCatalog.class; } else if (!CommonUtils.isEmpty(schemas)) { @@ -598,8 +574,7 @@ public class GenericDataSource extends JDBCDataSource } private boolean isChild(DBSObject object) - throws DBException - { + throws DBException { if (object instanceof GenericCatalog) { return !CommonUtils.isEmpty(catalogs) && catalogs.contains(GenericCatalog.class.cast(object)); } else if (object instanceof GenericSchema) { @@ -609,8 +584,7 @@ public class GenericDataSource extends JDBCDataSource } @Override - public boolean supportsDefaultChange() - { + public boolean supportsDefaultChange() { if (selectedEntityFromAPI) { return true; } @@ -628,8 +602,7 @@ public class GenericDataSource extends JDBCDataSource } @Override - public DBSObject getDefaultObject() - { + public DBSObject getDefaultObject() { if (!CommonUtils.isEmpty(selectedEntityName)) { if (!CommonUtils.isEmpty(catalogs)) { if (selectedEntityType == null || selectedEntityType.equals(GenericConstants.ENTITY_TYPE_CATALOG)) { @@ -646,8 +619,7 @@ public class GenericDataSource extends JDBCDataSource @Override public void setDefaultObject(@NotNull DBRProgressMonitor monitor, @NotNull DBSObject object) - throws DBException - { + throws DBException { final DBSObject oldSelectedEntity = getDefaultObject(); // Check removed because we can select the same object on invalidate // if (object == oldSelectedEntity) { @@ -686,18 +658,15 @@ public class GenericDataSource extends JDBCDataSource return false; } - String getSelectedEntityType() - { + String getSelectedEntityType() { return selectedEntityType; } - String getSelectedEntityName() - { + String getSelectedEntityName() { return selectedEntityName; } - private void determineSelectedEntity(JDBCSession session) - { + private void determineSelectedEntity(JDBCSession session) { // Get selected entity (catalog or schema) selectedEntityName = null; if (CommonUtils.isEmpty(queryGetActiveDB)) { @@ -707,8 +676,7 @@ public class GenericDataSource extends JDBCDataSource selectedEntityType = GenericConstants.ENTITY_TYPE_CATALOG; selectedEntityFromAPI = true; } - } - catch (SQLException e) { + } catch (SQLException e) { // Seems to be not supported log.debug(e); } @@ -756,8 +724,7 @@ public class GenericDataSource extends JDBCDataSource } } - void setActiveEntityName(DBRProgressMonitor monitor, JDBCExecutionContext context, DBSObject entity) throws DBCException - { + void setActiveEntityName(DBRProgressMonitor monitor, JDBCExecutionContext context, DBSObject entity) throws DBCException { if (entity == null) { log.debug("Null current entity"); return; @@ -791,8 +758,7 @@ public class GenericDataSource extends JDBCDataSource } @Override - public T getAdapter(Class adapter) - { + public T getAdapter(Class adapter) { if (adapter == DBSStructureAssistant.class) { return adapter.cast(new GenericStructureAssistant(this)); } else if (adapter == DBCQueryPlanner.class) { @@ -809,8 +775,7 @@ public class GenericDataSource extends JDBCDataSource } @Override - public String getObjectTypeTerm(String path, String objectType, boolean multiple) - { + public String getObjectTypeTerm(String path, String objectType, boolean multiple) { String term = null; if (GenericConstants.TERM_CATALOG.equals(objectType)) { term = getInfo().getCatalogTerm(); @@ -829,7 +794,7 @@ public class GenericDataSource extends JDBCDataSource @Override public ErrorPosition[] getErrorPosition(@NotNull DBRProgressMonitor monitor, @NotNull DBCExecutionContext context, @NotNull String query, @NotNull Throwable error) { ErrorPosition position = metaModel.getErrorPosition(error); - return position == null ? null : new ErrorPosition[] { position }; + return position == null ? null : new ErrorPosition[]{position}; } protected JDBCBasicDataTypeCache getDataTypeCache() { @@ -841,20 +806,22 @@ public class GenericDataSource extends JDBCDataSource } @Override - public Collection getLocalDataTypes() - { + public Collection getLocalDataTypes() { return dataTypeCache.getCachedObjects(); } @Override - public DBSDataType getLocalDataType(String typeName) - { + public DBSDataType getLocalDataType(String typeName) { return dataTypeCache.getCachedObject(typeName); } + @Override + public DBSDataType getLocalDataType(int typeID) { + return dataTypeCache.getCachedObject(typeID); + } + @NotNull - public DBPDataKind resolveDataKind(@NotNull String typeName, int valueType) - { + public DBPDataKind resolveDataKind(@NotNull String typeName, int valueType) { DBSDataType dataType = getLocalDataType(typeName); if (dataType != null) { return super.resolveDataKind(dataType.getTypeName(), dataType.getTypeID()); @@ -891,13 +858,12 @@ public class GenericDataSource extends JDBCDataSource private class TableTypeCache extends JDBCObjectCache { @Override - protected JDBCStatement prepareObjectsStatement(@NotNull JDBCSession session, @NotNull GenericDataSource owner) throws SQLException - { + protected JDBCStatement prepareObjectsStatement(@NotNull JDBCSession session, @NotNull GenericDataSource owner) throws SQLException { return session.getMetaData().getTableTypes().getSourceStatement(); } + @Override - protected GenericTableType fetchObject(@NotNull JDBCSession session, @NotNull GenericDataSource owner, @NotNull JDBCResultSet resultSet) throws SQLException, DBException - { + protected GenericTableType fetchObject(@NotNull JDBCSession session, @NotNull GenericDataSource owner, @NotNull JDBCResultSet resultSet) throws SQLException, DBException { return new GenericTableType( GenericDataSource.this, GenericUtils.safeGetString( @@ -907,10 +873,8 @@ public class GenericDataSource extends JDBCDataSource } } - private class DataSourceObjectContainer extends GenericObjectContainer - { - private DataSourceObjectContainer() - { + private class DataSourceObjectContainer extends GenericObjectContainer { + private DataSourceObjectContainer() { super(GenericDataSource.this); } diff --git a/plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/views/GenericConnectionPage.java b/plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/views/GenericConnectionPage.java index ffe7ca8ab343b5b3c75d9e0443b4d9860a6b8b51..b114dfbc6d5b34468164f83863daa286b4e0b0cb 100644 --- a/plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/views/GenericConnectionPage.java +++ b/plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/views/GenericConnectionPage.java @@ -27,7 +27,6 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.generic.GenericConstants; import org.jkiss.dbeaver.ext.generic.GenericMessages; import org.jkiss.dbeaver.model.DBPDataSourceContainer; @@ -413,7 +412,7 @@ public class GenericConnectionPage extends ConnectionPageAbstract implements ICo activated = true; - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { // Set first control diff --git a/plugins/org.jkiss.dbeaver.ext.h2/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.h2/META-INF/MANIFEST.MF index 412ef83efd5c3704bfe999ea0d87485a118f1411..958929b74c2b3db006ce0c07073621dce910ecda 100644 --- a/plugins/org.jkiss.dbeaver.ext.h2/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.h2/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.h2;singleton:=true -Bundle-Version: 1.0.39 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.40 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.h2/pom.xml b/plugins/org.jkiss.dbeaver.ext.h2/pom.xml index 7c3d33a9033fe5342807fcae40135bf5845ec92f..d7e958f6765171809a1f217178a5772e033ab68c 100644 --- a/plugins/org.jkiss.dbeaver.ext.h2/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.h2/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.h2 - 1.0.39 + 1.0.40 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.hana/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.hana/META-INF/MANIFEST.MF index b37efa75aedf09f455e86ffbc487e513183a70a7..c6a80ad559e52784433b596f3d62bf3d4ad625dd 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.hana/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.hana;singleton:=true -Bundle-Version: 1.0.13 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.14 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.hana/pom.xml b/plugins/org.jkiss.dbeaver.ext.hana/pom.xml index 0c7f09d418ca10986ef725cf5781d13c09dfadb5..3a290b82fbe88130b4bce4b778f82bbbb8b16084 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.hana/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.hana - 1.0.13 + 1.0.14 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java new file mode 100644 index 0000000000000000000000000000000000000000..7ee8fc224635fc158a24621e455335d4adb8e993 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java @@ -0,0 +1,45 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ext.hana.model; + +import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.ext.generic.model.GenericDataSource; +import org.jkiss.dbeaver.ext.generic.model.meta.GenericMetaModel; +import org.jkiss.dbeaver.model.DBPDataSourceContainer; +import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; +import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; +import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.utils.IntKeyMap; + +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; + +public class HANADataSource extends GenericDataSource { + + private static final Log log = Log.getLog(HANADataSource.class); + + public HANADataSource(DBRProgressMonitor monitor, DBPDataSourceContainer container, GenericMetaModel metaModel) + throws DBException + { + super(monitor, container, metaModel, new HANASQLDialect()); + } +} diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAMetaModel.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAMetaModel.java index c19ed3c5229018345739ab7c0168757a107cf0f6..dc7be94618cb92fab8d42858e78078413e89e3dc 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAMetaModel.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAMetaModel.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import org.jkiss.dbeaver.ext.generic.model.GenericDataSource; import org.jkiss.dbeaver.ext.generic.model.GenericProcedure; import org.jkiss.dbeaver.ext.generic.model.GenericTable; import org.jkiss.dbeaver.ext.generic.model.meta.GenericMetaModel; +import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement; @@ -40,6 +41,11 @@ public class HANAMetaModel extends GenericMetaModel super(); } + @Override + public GenericDataSource createDataSourceImpl(DBRProgressMonitor monitor, DBPDataSourceContainer container) throws DBException { + return new HANADataSource(monitor, container, this); + } + public String getViewDDL(DBRProgressMonitor monitor, GenericTable sourceObject, Map options) throws DBException { GenericDataSource dataSource = sourceObject.getDataSource(); try (JDBCSession session = DBUtils.openMetaSession(monitor, dataSource, "Read HANA view source")) { @@ -68,9 +74,10 @@ public class HANAMetaModel extends GenericMetaModel public String getProcedureDDL(DBRProgressMonitor monitor, GenericProcedure sourceObject) throws DBException { GenericDataSource dataSource = sourceObject.getDataSource(); try (JDBCSession session = DBUtils.openMetaSession(monitor, dataSource, "Read HANA procedure source")) { + String procedureType = sourceObject.getProcedureType().name(); try (JDBCPreparedStatement dbStat = session.prepareStatement( - "SELECT SCHEMA_NAME,PROCEDURE_NAME,DEFINITION FROM SYS.PROCEDURES\n" + - "WHERE SCHEMA_NAME = ? and PROCEDURE_NAME = ?")) + "SELECT SCHEMA_NAME,"+ procedureType + "_NAME,DEFINITION FROM SYS."+ procedureType + "S\n" + + "WHERE SCHEMA_NAME = ? AND " + procedureType + "_NAME = ?")) { dbStat.setString(1, sourceObject.getContainer().getName()); dbStat.setString(2, sourceObject.getName()); diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java new file mode 100644 index 0000000000000000000000000000000000000000..f2aff6376f5ff2eea0a6268221f8c61233f4ef02 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java @@ -0,0 +1,46 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ext.hana.model; + +import org.jkiss.dbeaver.ext.generic.model.GenericSQLDialect; +import org.jkiss.dbeaver.model.DBPEvaluationContext; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCDatabaseMetaData; +import org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource; +import org.jkiss.dbeaver.model.sql.SQLConstants; +import org.jkiss.dbeaver.model.struct.rdb.DBSProcedure; + +public class HANASQLDialect extends GenericSQLDialect { + + public static final String[][] HANA_BEGIN_END_BLOCK = new String[][]{ + {SQLConstants.BLOCK_BEGIN, SQLConstants.BLOCK_END}, + {"IF", SQLConstants.BLOCK_END}, + }; + + public HANASQLDialect() { + super("HANA"); + } + + public void initDriverSettings(JDBCDataSource dataSource, JDBCDatabaseMetaData metaData) { + super.initDriverSettings(dataSource, metaData); + } + + @Override + public String[][] getBlockBoundStrings() { + return HANA_BEGIN_END_BLOCK; + } + +} diff --git a/plugins/org.jkiss.dbeaver.ext.hsqldb/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.hsqldb/META-INF/MANIFEST.MF index 450b01c5621b249cd043a12736c4e11d98b2ef1e..10434b8ede6fbc519c628f716ba3aea02999d903 100644 --- a/plugins/org.jkiss.dbeaver.ext.hsqldb/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.hsqldb/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.hsqldb;singleton:=true -Bundle-Version: 1.0.31 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.32 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.hsqldb/pom.xml b/plugins/org.jkiss.dbeaver.ext.hsqldb/pom.xml index b0729395719f923969dae6062f5bf6b56ed36bc7..46b2dab34f2249ed4e6433fa9abddc751a8b67f0 100644 --- a/plugins/org.jkiss.dbeaver.ext.hsqldb/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.hsqldb/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.hsqldb - 1.0.31 + 1.0.32 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.import_config/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.import_config/META-INF/MANIFEST.MF index 62a4089755555886e9fed0fca7b5d8d68dba676f..36ee5c108f29745f1b10c271cee6bfa733b77b77 100644 --- a/plugins/org.jkiss.dbeaver.ext.import_config/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.import_config/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.import_config;singleton:=true -Bundle-Version: 2.1.47 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.1.48 +Bundle-Release-Date: 20180604 Bundle-Activator: org.jkiss.dbeaver.ext.import_config.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, diff --git a/plugins/org.jkiss.dbeaver.ext.import_config/pom.xml b/plugins/org.jkiss.dbeaver.ext.import_config/pom.xml index 2d3985dae00a47a5224d8fd8a95739a41d9574bf..3e978b67ef8b892ae1bd54cdac9c2d243e559fe9 100644 --- a/plugins/org.jkiss.dbeaver.ext.import_config/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.import_config/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.import_config - 2.1.47 + 2.1.48 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.informix/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.informix/META-INF/MANIFEST.MF index d73df57b36d434c34b54cf0cf6bbeb3458f43335..c36555125db63f31daaff65206e1f0caa45b7991 100644 --- a/plugins/org.jkiss.dbeaver.ext.informix/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.informix/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Informix Plug-in Bundle-SymbolicName: org.jkiss.dbeaver.ext.informix;singleton:=true -Bundle-Version: 1.0.75 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.76 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.informix/pom.xml b/plugins/org.jkiss.dbeaver.ext.informix/pom.xml index 4d0920a168671ea2e3f4e72d3df531fd025a5efa..482f0ae163a81248d98efc04d7706e9d86e232b0 100644 --- a/plugins/org.jkiss.dbeaver.ext.informix/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.informix/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.informix - 1.0.75 + 1.0.76 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.mockdata/META-INF/MANIFEST.MF index f6b1350f4325ec428297376cfb92ccf8056ed641..e209f921bbc7db8f17cbab357a8b8512d284b797 100644 --- a/plugins/org.jkiss.dbeaver.ext.mockdata/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.mockdata/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.mockdata;singleton:=true -Bundle-Version: 1.0.10 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.11 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml b/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml index 6f3bde76d9341c9bce4491e7a1baabe54f2dc560..cb0fb52ca629089e39f881a8cb7eb097f7706cac 100644 --- a/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml @@ -9,15 +9,13 @@ - - - - - + + + - + @@ -93,7 +91,7 @@ - + diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/pom.xml b/plugins/org.jkiss.dbeaver.ext.mockdata/pom.xml index a3a068dfa6f308b58f5e8fb45fdecb115d6e546b..7707587a8d720ae17fd95d3d24e77d1a8d16cb48 100644 --- a/plugins/org.jkiss.dbeaver.ext.mockdata/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.mockdata/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.mockdata - 1.0.10 + 1.0.11 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataWizardPageSettings.java b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataWizardPageSettings.java index d26270705710f4c263ca6d5e9acaa8536e3f4eb3..0e1510915bccf65fbbdb78868a09bd3731585501 100644 --- a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataWizardPageSettings.java +++ b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataWizardPageSettings.java @@ -29,7 +29,6 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.browser.IWorkbenchBrowserSupport; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.mockdata.MockDataSettings.AttributeGeneratorProperties; import org.jkiss.dbeaver.ext.mockdata.model.MockGeneratorDescriptor; import org.jkiss.dbeaver.model.DBPEvaluationContext; @@ -386,7 +385,7 @@ public class MockDataWizardPageSettings extends ActiveWizardPage { + UIUtils.run(this.getContainer(), true, true, monitor -> { try { firstInit = false; MockDataExecuteWizard wizard = getWizard(); @@ -510,7 +509,7 @@ public class MockDataWizardPageSettings extends ActiveWizardPage { + UIUtils.asyncExec(() -> { ((Tree) propsEditor.getControl()).getColumn(0).setWidth(DEFAULT_NAME_COLUMN_WIDTH); ((Tree) propsEditor.getControl()).getColumn(1).setWidth( propsEditor.getControl().getSize().x - DEFAULT_NAME_COLUMN_WIDTH - 30); diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/AbstractMockValueGenerator.java b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/AbstractMockValueGenerator.java index c7fa96b4e2d74edd3d4ebadd47e945f81f57bc19..ed5b2aeaff1823bc49bdc281d62cb5e1875f9e6d 100644 --- a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/AbstractMockValueGenerator.java +++ b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/AbstractMockValueGenerator.java @@ -128,4 +128,39 @@ public abstract class AbstractMockValueGenerator implements MockValueGenerator { return column.getValueEnumeration(session, null, number); } + protected Boolean getBooleanProperty(Map properties, String propName) { + Object prop = properties.get(propName); + if (prop != null) { + if (prop instanceof Boolean) { + return (Boolean) prop; + } else { + return Boolean.valueOf(prop.toString()); + } + } + return null; + } + + protected Double getDoubleProperty(Map properties, String propName) { + Object prop = properties.get(propName); + if (prop != null) { + if (prop instanceof Double) { + return (Double) prop; + } else { + return Double.valueOf(prop.toString()); + } + } + return null; + } + + protected Long getLongProperty(Map properties, String propName) { + Object prop = properties.get(propName); + if (prop != null) { + if (prop instanceof Long) { + return (Long) prop; + } else { + return Long.valueOf(prop.toString()); + } + } + return null; + } } diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/NumericSequenceGenerator.java b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/NumericSequenceGenerator.java index a9fe12da9be90e936240e92b02c1dcd0f057ecdb..30d55ad31234e37c323b36c949e52c261acb5b2c 100644 --- a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/NumericSequenceGenerator.java +++ b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/NumericSequenceGenerator.java @@ -28,22 +28,22 @@ import java.util.Map; public class NumericSequenceGenerator extends AbstractMockValueGenerator { - private long start = 0; - private long step = 0; + private long start = 1; + private long step = 1; private boolean reverse = false; @Override public void init(DBSDataManipulator container, DBSAttributeBase attribute, Map properties) throws DBException { super.init(container, attribute, properties); - Long start = (Long) properties.get("start"); //$NON-NLS-1$ - if (start != null) { - this.start = start; + Long startProperty = getLongProperty(properties, "start"); //$NON-NLS-1$ + if (startProperty != null) { + this.start = startProperty; } - Long step = (Long) properties.get("step"); //$NON-NLS-1$ - if (step != null) { - this.step = step; + Long stepProperty = getLongProperty(properties, "step"); //$NON-NLS-1$ + if (stepProperty != null) { + this.step = stepProperty; } Boolean reverse = (Boolean) properties.get("reverse"); //$NON-NLS-1$ diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/StringTextGenerator.java b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/StringTextGenerator.java index b045d68c093636896d52d326ad83d40ce03630dc..4a6b9794f7b124f98475a959563db16101440d37 100644 --- a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/StringTextGenerator.java +++ b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/StringTextGenerator.java @@ -49,6 +49,9 @@ public class StringTextGenerator extends AbstractStringValueGenerator { if (min != null) { this.minLength = min; } + if (minLength > templateString.length()) { + minLength = templateString.length(); + } Integer max = (Integer) properties.get("maxLength"); //$NON-NLS-1$ if (max != null) { @@ -61,6 +64,9 @@ public class StringTextGenerator extends AbstractStringValueGenerator { if (maxLength > templateString.length()) { // TODO check templateString shouldn't be empty maxLength = templateString.length(); } + if (minLength > maxLength) { + maxLength = minLength; + } } @Override diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/handlers/ResultSetMockDataHandler.java b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/handlers/ResultSetMockDataHandler.java index 2c248ce9eac56ee1d35f7a4ca4a8b1e097fc9348..1825e6d2c454b0217cac28be14010875d80909dc 100644 --- a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/handlers/ResultSetMockDataHandler.java +++ b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/handlers/ResultSetMockDataHandler.java @@ -47,11 +47,6 @@ public class ResultSetMockDataHandler extends AbstractHandler { List selectedObjects; IResultSetController resultSet = ResultSetCommandHandler.getActiveResultSet(HandlerUtil.getActivePart(event)); if (resultSet != null) { - if (resultSet == null) { - DBeaverUI.getInstance().showError("Mock Data", "No active results viewer"); - return null; - } - DBSDataContainer dataContainer = resultSet.getDataContainer(); if (dataContainer == null || dataContainer.getDataSource() == null) { DBeaverUI.getInstance().showError("Mock Data", "Not connected to a database"); diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.mssql/META-INF/MANIFEST.MF index 16287de86625e3b29332de9e8e04c2306cc41670..876866af6fdba468ece40582365dd249a73cf542 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.mssql/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.mssql;singleton:=true -Bundle-Version: 1.0.78 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.79 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/pom.xml b/plugins/org.jkiss.dbeaver.ext.mssql/pom.xml index c8ad568052fe1ded0e31c4fd534c80d4674af637..7718b2c425e7280599cc55cbda0a4ec38777d0f9 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.mssql/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.mssql - 1.0.78 + 1.0.79 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.mysql/META-INF/MANIFEST.MF index 9f2af8b6f7f4301c795c4a84a21410f3e81df71b..559de0f58aef78831fef95b9a8fd98746be680fa 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.mysql/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: DBeaver MySQL Support Bundle-SymbolicName: org.jkiss.dbeaver.ext.mysql;singleton:=true -Bundle-Version: 2.1.69 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.1.70 +Bundle-Release-Date: 20180604 Bundle-Activator: org.jkiss.dbeaver.ext.mysql.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/pom.xml b/plugins/org.jkiss.dbeaver.ext.mysql/pom.xml index 13847c936ce0c7db0eb7b656215f9f83c059894a..e639f2fde78b7a29a79b13dc2c7dbf0df759b216 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.mysql/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.mysql - 2.1.69 + 2.1.70 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/edit/MySQLCatalogManager.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/edit/MySQLCatalogManager.java index dadd219f27338b462f236eea6e79e0ba74564946..0e8ced8322a6db7e076103ef84feef1971213448 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/edit/MySQLCatalogManager.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/edit/MySQLCatalogManager.java @@ -20,7 +20,6 @@ package org.jkiss.dbeaver.ext.mysql.edit; import org.eclipse.jface.dialogs.IDialogConstants; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.mysql.views.MySQLCreateDatabaseDialog; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.edit.DBEPersistAction; @@ -33,6 +32,7 @@ import org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction; import org.jkiss.dbeaver.model.impl.sql.edit.SQLObjectEditor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import java.util.List; import java.util.Map; @@ -61,7 +61,7 @@ public class MySQLCatalogManager extends SQLObjectEditor() { @Override protected MySQLCatalog runTask() { - MySQLCreateDatabaseDialog dialog = new MySQLCreateDatabaseDialog(DBeaverUI.getActiveWorkbenchShell(), parent); + MySQLCreateDatabaseDialog dialog = new MySQLCreateDatabaseDialog(UIUtils.getActiveWorkbenchShell(), parent); if (dialog.open() != IDialogConstants.OK_ID) { return null; } diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/editors/MySQLUserEditorGeneral.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/editors/MySQLUserEditorGeneral.java index 990d7bc6273f5a8e5897b78308013968bf25add8..9175ce04110891c4200bbbeb578b36b954ecc763 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/editors/MySQLUserEditorGeneral.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/editors/MySQLUserEditorGeneral.java @@ -21,7 +21,6 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.mysql.MySQLMessages; import org.jkiss.dbeaver.ext.mysql.controls.PrivilegeTableControl; import org.jkiss.dbeaver.ext.mysql.edit.MySQLCommandGrantPrivilege; @@ -232,7 +231,7 @@ public class MySQLUserEditorGeneral extends MySQLUserEditorAbstract { if (newUser && getDatabaseObject().isPersisted()) { newUser = false; - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { userNameText.setEditable(false); diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLCatalog.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLCatalog.java index ae08d281772cb5b6b53b8229f4e9af6005e523ca..a37ebf0259802d54c5112037dfbee8797a36668f 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLCatalog.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLCatalog.java @@ -338,6 +338,7 @@ public class MySQLCatalog implements DBSCatalog, DBPSaveableObject, DBPRefreshab constraintCache.clearCache(); proceduresCache.clearCache(); triggerCache.clearCache(); + eventCache.clearCache(); return this; } diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLDataSource.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLDataSource.java index 2921fbe2f31eebab324eb34260e33b0c8daa3289..740fb56f5c7ad5172e151e4a8ca31e0691a28626 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLDataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLDataSource.java @@ -628,6 +628,11 @@ public class MySQLDataSource extends JDBCDataSource implements DBSObjectSelector return dataTypeCache.getCachedObject(typeName); } + @Override + public DBSDataType getLocalDataType(int typeID) { + return dataTypeCache.getCachedObject(typeID); + } + static class CatalogCache extends JDBCObjectCache { @Override diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLEvent.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLEvent.java index 25d8e27558b8083da7d9511deda4ac2b17a86a3e..28714f1b89019446177e65dcb3aecf2f74b66fbd 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLEvent.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLEvent.java @@ -19,12 +19,18 @@ package org.jkiss.dbeaver.ext.mysql.model; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.model.DBConstants; +import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.model.sql.SQLUtils; +import org.jkiss.utils.CommonUtils; import java.sql.ResultSet; import java.sql.SQLException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; @@ -208,7 +214,29 @@ public class MySQLEvent extends MySQLInformation implements MySQLSourceObject { @Override @Property(hidden = true, editable = true, updatable = true, order = -1) public String getObjectDefinitionText(DBRProgressMonitor monitor, Map options) throws DBException { - return eventDefinition; + DateFormat dateFormat = new SimpleDateFormat(DBConstants.DEFAULT_TIMESTAMP_FORMAT); + StringBuilder sql = new StringBuilder(); + sql.append("CREATE EVENT ").append(DBUtils.getQuotedIdentifier(this)).append("\n") + .append("ON SCHEDULE EVERY ").append(intervalValue).append(" ").append(intervalField).append("\n"); + if (starts != null) { + sql.append("STARTS '").append(dateFormat.format(starts)).append("'\n"); + } + if (ends != null) { + sql.append("ENDS '").append(dateFormat.format(ends)).append("'\n"); + } + if (!CommonUtils.isEmpty(onCompletion)) { + sql.append("ON COMPLETION ").append(onCompletion).append("\n"); + } + sql.append( + "ENABLED".equals(status) ? "ENABLE" : + "DISABLED".equals(status) ? "DISABLE" : "DISABLE ON SLAVE" + ).append("\n"); + + if (!CommonUtils.isEmpty(eventComment)) { + sql.append("COMMENT '").append(SQLUtils.escapeString(getDataSource(), eventComment)).append("'\n"); + } + sql.append("DO ").append(eventDefinition); + return sql.toString(); } @Override diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizardPageObjects.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizardPageObjects.java index b159cff8b03102217fa6753b7402cb37efe63acc..b2419bb679239a64ad311159b0638c56be993387 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizardPageObjects.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tools/MySQLExportWizardPageObjects.java @@ -26,7 +26,6 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.mysql.MySQLMessages; import org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog; import org.jkiss.dbeaver.ext.mysql.model.MySQLDataSource; @@ -231,7 +230,7 @@ class MySQLExportWizardPageObjects extends MySQLWizardPageSettings../../ org.jkiss.dbeaver.ext.netezza - 1.0.49 + 1.0.50 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.oracle/META-INF/MANIFEST.MF index 3568c4da4fefee468b2cbe7032b610e2fcd73931..e02f569752ffafb00899d1d91bd00a7bde863d4e 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.oracle/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.oracle;singleton:=true -Bundle-Version: 2.1.69 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.1.70 +Bundle-Release-Date: 20180604 Bundle-Activator: org.jkiss.dbeaver.ext.oracle.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/OSGI-INF/l10n/bundle.properties b/plugins/org.jkiss.dbeaver.ext.oracle/OSGI-INF/l10n/bundle.properties index 6f8fa88ac69791671efe189fb94c059b863fb7ce..c75587d1264e4c280c06fdbc7e6dba76f2dec3fb 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/OSGI-INF/l10n/bundle.properties +++ b/plugins/org.jkiss.dbeaver.ext.oracle/OSGI-INF/l10n/bundle.properties @@ -5,6 +5,8 @@ editor.package.declaration.name=Declaration editor.package.declaration.description=Declaration source editor.package.body.name=Body editor.package.body.description=Body source +editor.scheduler.job.action.name=Action +editor.scheduler.job.action.description=Action source editor.scheduler.job.log.name=Run Log editor.scheduler.job.log.description=Job run details log @@ -240,6 +242,7 @@ meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.authentication.name=Authentic meta.org.jkiss.dbeaver.ext.oracle.model.OracleRole.authentication.description=Indicates if the role requires a password to be enabled meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.name.name=Name meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.id.name=User ID +meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.schemaUser.name=Schema user meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.createTime.name=Create time meta.org.jkiss.dbeaver.ext.oracle.model.OracleSchema.createTime.description=Date the user was created meta.org.jkiss.dbeaver.ext.oracle.model.OracleSegment.schema.name=Owner @@ -412,6 +415,8 @@ meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.state.name=S meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.state.description=Wait state meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.event.name=Event meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.event.description=Resource or event for which the session is waiting +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.elapsedTime.name=Elapsed Time +meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.elapsedTime.description=If the session STATUS is currently ACTIVE, then the value represents the elapsed time in seconds since the session has become active.\nIf the session STATUS is currently INACTIVE, then the value represents the elapsed time in seconds since the session has become inactive. meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.logonTime.name=Logon Time meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.logonTime.description=Time of logon meta.org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession.serviceName.name=Service diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/icons/run.png b/plugins/org.jkiss.dbeaver.ext.oracle/icons/run.png new file mode 100644 index 0000000000000000000000000000000000000000..ee8d391356fed2eb1769e3aaec1bb937e1edce54 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ext.oracle/icons/run.png differ diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/plugin.xml b/plugins/org.jkiss.dbeaver.ext.oracle/plugin.xml index 18afd85c2c2aa284015a6bd2829cf45ec9c18cac..039a16c6f1a4fe133c85bb1d95ce72c7cf8a0d92 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ext.oracle/plugin.xml @@ -344,6 +344,12 @@ + + + + @@ -472,11 +478,13 @@ + + @@ -516,6 +524,29 @@ + + + + + + + + + + + + + + + + + + + + @@ -526,12 +557,16 @@ + + + + diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/pom.xml b/plugins/org.jkiss.dbeaver.ext.oracle/pom.xml index f20cdbb81cf228ceb06a0cff0ff761483d39a491..c8f73ecc993d3265ea1ae9083dd1b839c8ce8c6a 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.oracle/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.oracle - 2.1.69 + 2.1.70 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/CompileHandler.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/CompileHandler.java index b717ed8bd2b56cc8b8970374067ec143f0652dd8..1fe5140b6b73c54aa0f765fe8d451ac69491823c 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/CompileHandler.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/CompileHandler.java @@ -16,24 +16,17 @@ */ package org.jkiss.dbeaver.ext.oracle.actions; -import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchPartSite; -import org.eclipse.ui.commands.IElementUpdater; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.menus.UIElement; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.oracle.model.OracleObjectPersistAction; -import org.jkiss.dbeaver.ext.oracle.model.OracleObjectType; import org.jkiss.dbeaver.ext.oracle.model.source.OracleSourceObject; import org.jkiss.dbeaver.ext.oracle.views.OracleCompilerDialog; import org.jkiss.dbeaver.model.DBPEvent; @@ -46,31 +39,26 @@ import org.jkiss.dbeaver.model.exec.compile.DBCCompileError; import org.jkiss.dbeaver.model.exec.compile.DBCCompileLog; import org.jkiss.dbeaver.model.exec.compile.DBCCompileLogBase; import org.jkiss.dbeaver.model.exec.compile.DBCSourceHost; -import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement; import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; -import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.model.struct.DBSObjectState; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; -import org.jkiss.dbeaver.ui.editors.entity.EntityEditor; -import org.jkiss.dbeaver.utils.RuntimeUtils; import org.jkiss.dbeaver.ui.TextUtils; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.editors.entity.EntityEditor; import org.jkiss.dbeaver.utils.GeneralUtils; +import org.jkiss.dbeaver.utils.RuntimeUtils; import org.jkiss.utils.ArrayUtils; import org.jkiss.utils.CommonUtils; import java.lang.reflect.InvocationTargetException; -import java.sql.ResultSet; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; -public class CompileHandler extends AbstractHandler implements IElementUpdater +public class CompileHandler extends OracleTaskHandler { - private static final Log log = Log.getLog(CompileHandler.class); - @Override public Object execute(ExecutionEvent event) throws ExecutionException { @@ -109,15 +97,11 @@ public class CompileHandler extends AbstractHandler implements IElementUpdater compileLog.clearLog(); Throwable error = null; try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { - @Override - public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException - { - try { - compileUnit(monitor, compileLog, unit); - } catch (DBCException e) { - throw new InvocationTargetException(e); - } + UIUtils.runInProgressService(monitor -> { + try { + compileUnit(monitor, compileLog, unit); + } catch (DBCException e) { + throw new InvocationTargetException(e); } }); if (compileLog.getError() != null) { @@ -143,7 +127,7 @@ public class CompileHandler extends AbstractHandler implements IElementUpdater } // If compiled object is currently open in editor - try to position on error line - if (sourceHost != null && sourceHost.getSourceObject() == unit && line > 0 && position > 0) { + if (sourceHost != null && sourceHost.getSourceObject() == unit && line > 0 && position >= 0) { sourceHost.positionSource(line, position); activePart.getSite().getPage().activate(activePart); } @@ -195,30 +179,8 @@ public class CompileHandler extends AbstractHandler implements IElementUpdater @Override public void updateElement(UIElement element, Map parameters) { - List objects = new ArrayList<>(); - IWorkbenchPartSite partSite = UIUtils.getWorkbenchPartSite(element.getServiceLocator()); - if (partSite != null) { - final ISelectionProvider selectionProvider = partSite.getSelectionProvider(); - if (selectionProvider != null) { - ISelection selection = selectionProvider.getSelection(); - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - for (Iterator iter = ((IStructuredSelection) selection).iterator(); iter.hasNext(); ) { - final Object item = iter.next(); - final OracleSourceObject sourceObject = RuntimeUtils.getObjectAdapter(item, OracleSourceObject.class); - if (sourceObject != null) { - objects.add(sourceObject); - } - } - } - } - if (objects.isEmpty()) { - final IWorkbenchPart activePart = partSite.getPart(); - final OracleSourceObject sourceObject = RuntimeUtils.getObjectAdapter(activePart, OracleSourceObject.class); - if (sourceObject != null) { - objects.add(sourceObject); - } - } - } + List objects = getOracleSourceObjects(element); + if (!objects.isEmpty()) { if (objects.size() > 1) { element.setText("Compile " + objects.size() + " objects"); @@ -276,40 +238,5 @@ public class CompileHandler extends AbstractHandler implements IElementUpdater } } - public static boolean logObjectErrors( - JDBCSession session, - DBCCompileLog compileLog, - OracleSourceObject unit, - OracleObjectType objectType) - { - try { - try (JDBCPreparedStatement dbStat = session.prepareStatement( - "SELECT * FROM SYS.ALL_ERRORS WHERE OWNER=? AND NAME=? AND TYPE=? ORDER BY SEQUENCE")) { - dbStat.setString(1, unit.getSchema().getName()); - dbStat.setString(2, unit.getName()); - dbStat.setString(3, objectType.getTypeName()); - try (ResultSet dbResult = dbStat.executeQuery()) { - boolean hasErrors = false; - while (dbResult.next()) { - DBCCompileError error = new DBCCompileError( - "ERROR".equals(dbResult.getString("ATTRIBUTE")), - dbResult.getString("TEXT"), - dbResult.getInt("LINE"), - dbResult.getInt("POSITION")); - hasErrors = true; - if (error.isError()) { - compileLog.error(error); - } else { - compileLog.warn(error); - } - } - return !hasErrors; - } - } - } catch (Exception e) { - log.error("Can't read user errors", e); - return false; - } - } } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/JobRunHandler.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/JobRunHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..00f98ab0af1da028f616018d14d11c8a11185846 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/JobRunHandler.java @@ -0,0 +1,220 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ext.oracle.actions; + +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.menus.UIElement; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.ext.oracle.model.OracleObjectPersistAction; +import org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob; +import org.jkiss.dbeaver.ext.oracle.model.source.OracleSourceObject; +import org.jkiss.dbeaver.model.DBPEvent; +import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.edit.DBEPersistAction; +import org.jkiss.dbeaver.model.exec.DBCException; +import org.jkiss.dbeaver.model.exec.DBCStatement; +import org.jkiss.dbeaver.model.exec.DBCStatementType; +import org.jkiss.dbeaver.model.exec.compile.DBCCompileError; +import org.jkiss.dbeaver.model.exec.compile.DBCCompileLog; +import org.jkiss.dbeaver.model.exec.compile.DBCCompileLogBase; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; +import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.model.struct.DBSObjectState; +import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.TextUtils; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.editors.entity.EntityEditor; +import org.jkiss.dbeaver.utils.GeneralUtils; +import org.jkiss.dbeaver.utils.RuntimeUtils; +import org.jkiss.utils.ArrayUtils; +import org.jkiss.utils.CommonUtils; + +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/** + * This handler provides the capability to run scheduled jobs. + * The structure is copied from CompileHandler + * @author crowne + */ +public class JobRunHandler extends OracleTaskHandler +{ + private static final Log log = Log.getLog(JobRunHandler.class); + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException + { + final IWorkbenchPart activePart = HandlerUtil.getActiveEditor(event); + final List objects = getSelectedJobs(event); + if (!objects.isEmpty()) { + if (activePart instanceof EntityEditor) { + // Save editor before run + // Use null monitor as entity editor has its own detached job for save + EntityEditor entityEditor = (EntityEditor) activePart; + if (entityEditor.isDirty()) { + NullProgressMonitor monitor = new NullProgressMonitor(); + entityEditor.doSave(monitor); + if (monitor.isCanceled()) { + // Save failed - doesn't make sense to compile + return null; + } + } + } + final Shell activeShell = HandlerUtil.getActiveShell(event); + if (objects.size() == 1) { + final OracleSchedulerJob job = objects.get(0); + + final DBCCompileLog compileLog = new DBCCompileLogBase(); + compileLog.clearLog(); + Throwable error = null; + try { + UIUtils.runInProgressService(monitor -> { + try { + runJob(monitor, compileLog, job); + } catch (DBCException e) { + throw new InvocationTargetException(e); + } + }); + if (compileLog.getError() != null) { + error = compileLog.getError(); + } + } catch (InvocationTargetException e) { + error = e.getTargetException(); + } catch (InterruptedException e) { + return null; + } + if (error != null) { + DBUserInterface.getInstance().showError("Unexpected run schedule error", null, error); + } else if (!CommonUtils.isEmpty(compileLog.getErrorStack())) { + // Show compile errors + int line = -1, position = -1; + StringBuilder fullMessage = new StringBuilder(); + for (DBCCompileError oce : compileLog.getErrorStack()) { + fullMessage.append(oce.toString()).append(GeneralUtils.getDefaultLineSeparator()); + if (line < 0) { + line = oce.getLine(); + position = oce.getPosition(); + } + } + + String errorTitle = job.getName() + " run schedule failed"; + DBUserInterface.getInstance().showError(errorTitle, fullMessage.toString()); + } else { + String message = job.getName() + " successfully scheduled to run"; + UIUtils.showMessageBox(activeShell, "Done", message, SWT.ICON_INFORMATION); + } + } + } + return null; + } + + private List getSelectedJobs(ExecutionEvent event) + { + List objects = new ArrayList<>(); + final ISelection currentSelection = HandlerUtil.getCurrentSelection(event); + if (currentSelection instanceof IStructuredSelection && !currentSelection.isEmpty()) { + for (Iterator iter = ((IStructuredSelection) currentSelection).iterator(); iter.hasNext(); ) { + final Object element = iter.next(); + final OracleSchedulerJob sourceJob = RuntimeUtils.getObjectAdapter(element, OracleSchedulerJob.class); + if (sourceJob != null) { + objects.add(sourceJob); + } + } + } + if (objects.isEmpty()) { + final IWorkbenchPart activePart = HandlerUtil.getActivePart(event); + final OracleSchedulerJob sourceJob = RuntimeUtils.getObjectAdapter(activePart, OracleSchedulerJob.class); + if (sourceJob != null) { + objects.add(sourceJob); + } + } + return objects; + } + + @Override + public void updateElement(UIElement element, Map parameters) + { + List objects = getOracleSourceObjects(element); + if (!objects.isEmpty()) { + if (objects.size() > 1) { + element.setText("Run " + objects.size() + " jobs"); + } else { + final OracleSourceObject sourceObject = objects.get(0); + String objectType = TextUtils.formatWord(sourceObject.getSourceType().name()); + element.setText("Run " + objectType/* + " '" + sourceObject.getName() + "'"*/); + } + } + } + + public static boolean runJob(DBRProgressMonitor monitor, DBCCompileLog compileLog, OracleSchedulerJob job) throws DBCException + { + final DBEPersistAction[] compileActions = job.getRunActions(); + if (ArrayUtils.isEmpty(compileActions)) { + return true; + } + + try (JDBCSession session = DBUtils.openUtilSession(monitor, job.getDataSource(), "Run '" + job.getName() + "'")) { + boolean success = true; + for (DBEPersistAction action : compileActions) { + final String script = action.getScript(); + compileLog.trace(script); + + if (monitor.isCanceled()) { + break; + } + try { + try (DBCStatement dbStat = session.prepareStatement( + DBCStatementType.SCRIPT, + script, + false, false, false)) + { + action.beforeExecute(session); + dbStat.executeStatement(); + } + action.afterExecute(session, null); + } catch (DBCException e) { + action.afterExecute(session, e); + throw e; + } + if (action instanceof OracleObjectPersistAction) { + if (!logObjectErrors(session, compileLog, job, ((OracleObjectPersistAction) action).getObjectType())) { + success = false; + } + } + } + final DBSObjectState oldState = job.getObjectState(); + job.refreshObjectState(monitor); + if (job.getObjectState() != oldState) { + job.getDataSource().getContainer().fireEvent(new DBPEvent(DBPEvent.Action.OBJECT_UPDATE, job)); + } + + return success; + } + } + +} \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/OracleObjectAdapter.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/OracleObjectAdapter.java index 9bfb7c4711cd16093ea9a2b3e9357a5512a7f971..cef6f4d391a05f0dd294d2163fcfc5b2d6497e40 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/OracleObjectAdapter.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/OracleObjectAdapter.java @@ -18,9 +18,11 @@ package org.jkiss.dbeaver.ext.oracle.actions; import org.eclipse.core.runtime.IAdapterFactory; import org.jkiss.dbeaver.ext.oracle.model.OracleProcedurePackaged; +import org.jkiss.dbeaver.ext.oracle.model.OracleSchedulerJob; import org.jkiss.dbeaver.ui.editors.IDatabaseEditor; import org.jkiss.dbeaver.ext.oracle.model.source.OracleSourceObject; import org.jkiss.dbeaver.model.DBPScriptObjectExt; +import org.jkiss.dbeaver.model.navigator.DBNDatabaseItem; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.ui.editors.DatabaseEditorInput; @@ -43,6 +45,8 @@ public class OracleObjectAdapter implements IAdapterFactory { dbObject = ((IDatabaseEditor) adaptableObject).getEditorInput().getDatabaseObject(); } else if (adaptableObject instanceof DatabaseEditorInput) { dbObject = ((DatabaseEditorInput) adaptableObject).getDatabaseObject(); + } else if (adaptableObject instanceof DBNDatabaseItem) { + dbObject = ((DBNDatabaseItem) adaptableObject).getObject(); } if (dbObject != null && adapterType.isAssignableFrom(dbObject.getClass())) { return adapterType.cast(dbObject); @@ -53,6 +57,6 @@ public class OracleObjectAdapter implements IAdapterFactory { @Override public Class[] getAdapterList() { - return new Class[] { OracleSourceObject.class, OracleProcedurePackaged.class, DBPScriptObjectExt.class }; + return new Class[] { OracleSourceObject.class, OracleProcedurePackaged.class, DBPScriptObjectExt.class, OracleSchedulerJob.class }; } } diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/OracleTaskHandler.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/OracleTaskHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..bfb0472db5cd51eaa2161934e2bb86e4fe82e866 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/OracleTaskHandler.java @@ -0,0 +1,114 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ext.oracle.actions; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchPartSite; +import org.eclipse.ui.commands.IElementUpdater; +import org.eclipse.ui.menus.UIElement; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.ext.oracle.model.OracleObjectType; +import org.jkiss.dbeaver.ext.oracle.model.source.OracleSourceObject; +import org.jkiss.dbeaver.ext.oracle.model.source.OracleStatefulObject; +import org.jkiss.dbeaver.model.exec.compile.DBCCompileError; +import org.jkiss.dbeaver.model.exec.compile.DBCCompileLog; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.utils.RuntimeUtils; + +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * Base task handler + */ +public abstract class OracleTaskHandler extends AbstractHandler implements IElementUpdater +{ + private static final Log log = Log.getLog(OracleTaskHandler.class); + + protected List getOracleSourceObjects(UIElement element) { + List objects = new ArrayList<>(); + IWorkbenchPartSite partSite = UIUtils.getWorkbenchPartSite(element.getServiceLocator()); + if (partSite != null) { + final ISelectionProvider selectionProvider = partSite.getSelectionProvider(); + if (selectionProvider != null) { + ISelection selection = selectionProvider.getSelection(); + if (selection instanceof IStructuredSelection && !selection.isEmpty()) { + for (Iterator iter = ((IStructuredSelection) selection).iterator(); iter.hasNext(); ) { + final Object item = iter.next(); + final OracleSourceObject sourceObject = RuntimeUtils.getObjectAdapter(item, OracleSourceObject.class); + if (sourceObject != null) { + objects.add(sourceObject); + } + } + } + } + if (objects.isEmpty()) { + final IWorkbenchPart activePart = partSite.getPart(); + final OracleSourceObject sourceObject = RuntimeUtils.getObjectAdapter(activePart, OracleSourceObject.class); + if (sourceObject != null) { + objects.add(sourceObject); + } + } + } + return objects; + } + + public static boolean logObjectErrors( + JDBCSession session, + DBCCompileLog compileLog, + OracleStatefulObject schemaObject, + OracleObjectType objectType) + { + try { + try (JDBCPreparedStatement dbStat = session.prepareStatement( + "SELECT * FROM SYS.ALL_ERRORS WHERE OWNER=? AND NAME=? AND TYPE=? ORDER BY SEQUENCE")) { + dbStat.setString(1, schemaObject.getSchema().getName()); + dbStat.setString(2, schemaObject.getName()); + dbStat.setString(3, objectType.getTypeName()); + try (ResultSet dbResult = dbStat.executeQuery()) { + boolean hasErrors = false; + while (dbResult.next()) { + DBCCompileError error = new DBCCompileError( + "ERROR".equals(dbResult.getString("ATTRIBUTE")), + dbResult.getString("TEXT"), + dbResult.getInt("LINE"), + dbResult.getInt("POSITION")); + hasErrors = true; + if (error.isError()) { + compileLog.error(error); + } else { + compileLog.warn(error); + } + } + return !hasErrors; + } + } + } catch (Exception e) { + log.error("Can't read user errors", e); + return false; + } + } + +} \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/PackageNavigateHandler.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/PackageNavigateHandler.java index b6eb4fcca490bf232b9d42de85cdef51aadf3bdc..c07f9bac2119f21d224fc143498fae2fe9415cce 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/PackageNavigateHandler.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/actions/PackageNavigateHandler.java @@ -31,7 +31,6 @@ import org.eclipse.ui.IEditorPart; import org.eclipse.ui.handlers.HandlerUtil; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.oracle.model.OraclePackage; import org.jkiss.dbeaver.ext.oracle.model.OracleProcedureArgument; import org.jkiss.dbeaver.ext.oracle.model.OracleProcedurePackaged; @@ -39,6 +38,7 @@ import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.runtime.AbstractJob; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.rdb.DBSProcedureParameterKind; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.editors.entity.EntityEditor; import org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase; @@ -125,7 +125,7 @@ public class PackageNavigateHandler extends AbstractHandler //implements IElemen try { final IRegion procRegion = findAdapter.find(0, procRegex, true, false, false, true); if (procRegion != null) { - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { sqlEditor.selectAndReveal(procRegion.getOffset(), procRegion.getLength()); diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/data/OracleValueHandlerProvider.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/data/OracleValueHandlerProvider.java index 5cfc93ee7eccd269422d5a4de4c62f9cf5b6e041..56ac967763b0762df1664439d16ace4e6c974884 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/data/OracleValueHandlerProvider.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/data/OracleValueHandlerProvider.java @@ -17,6 +17,7 @@ package org.jkiss.dbeaver.ext.oracle.data; import org.jkiss.dbeaver.ext.oracle.model.OracleConstants; +import org.jkiss.dbeaver.ext.oracle.model.OracleDataSource; import org.jkiss.dbeaver.model.DBPDataKind; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.data.DBDPreferences; @@ -49,7 +50,11 @@ public class OracleValueHandlerProvider implements DBDValueHandlerProvider { typedObject.getTypeID() == Types.TIMESTAMP_WITH_TIMEZONE || typedObject.getTypeID() == OracleConstants.DATA_TYPE_TIMESTAMP_WITH_TIMEZONE) { - return new OracleTemporalAccessorValueHandler(preferences.getDataFormatterProfile()); + if (((OracleDataSource)dataSource).isDriverVersionAtLeast(12, 2)) { + return new OracleTemporalAccessorValueHandler(preferences.getDataFormatterProfile()); + } else { + return new OracleTimestampValueHandler(preferences.getDataFormatterProfile()); + } } else if (typeName.contains("TIMESTAMP") || typedObject.getDataKind() == DBPDataKind.DATETIME) { return new OracleTimestampValueHandler(preferences.getDataFormatterProfile()); } else { diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/edit/OracleSchemaManager.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/edit/OracleSchemaManager.java index bd1d79c2b33472e74822a20173872fb8692a90a8..b0aa03971a241762bc6f0e511af2ae7f33733364 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/edit/OracleSchemaManager.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/edit/OracleSchemaManager.java @@ -20,6 +20,7 @@ package org.jkiss.dbeaver.ext.oracle.edit; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -27,7 +28,6 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.edit.DBEPersistAction; import org.jkiss.dbeaver.ext.oracle.model.OracleDataSource; @@ -44,6 +44,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.ui.UITask; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.utils.CommonUtils; import java.util.List; import java.util.Map; @@ -72,7 +73,7 @@ public class OracleSchemaManager extends SQLObjectEditor() { @Override protected OracleSchema runTask() { - NewUserDialog dialog = new NewUserDialog(DBeaverUI.getActiveWorkbenchShell(), parent); + NewUserDialog dialog = new NewUserDialog(UIUtils.getActiveWorkbenchShell(), parent); if (dialog.open() != IDialogConstants.OK_ID) { return null; } @@ -88,10 +89,12 @@ public class OracleSchemaManager extends SQLObjectEditor actions, ObjectCreateCommand command, Map options) { OracleUser user = command.getObject().getUser(); - actions.add( - new SQLDatabasePersistAction("Create schema", - "CREATE USER " + DBUtils.getQuotedIdentifier(user) + " IDENTIFIED BY \"" + user.getPassword() + "\"") - ); + String sql = "CREATE USER " + DBUtils.getQuotedIdentifier(user); + if (!CommonUtils.isEmpty(user.getPassword())) { + sql += " IDENTIFIED BY \"" + user.getPassword() + "\""; + } + + actions.add(new SQLDatabasePersistAction("Create schema", sql)); } @Override @@ -136,8 +139,9 @@ public class OracleSchemaManager extends SQLObjectEditor { + + @Override + protected String getCompileCommandId() + { + return OracleConstants.CMD_COMPILE; + } + + @Override + protected String getSourceText(DBRProgressMonitor monitor) throws DBException { + OracleSchedulerJob schedulerJob = getSourceObject(); + return schedulerJob.getJobAction(); +// return ((DBPScriptObjectExt)getSourceObject()).getExtendedDefinitionText(monitor); + } + + @Override + protected void setSourceText(DBRProgressMonitor monitor, String sourceText) { + getEditorInput().getPropertySource().setPropertyValue( + monitor, + OracleConstants.PROP_OBJECT_BODY_DEFINITION, + sourceText); + } + + @Override + protected boolean isReadOnly() { + return false; + } +} diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleDataSource.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleDataSource.java index 4c4c352a0de2b24d85acf83b8ec40e96dfffd320..2d708040d6b91920cc91bdbd69ca3ce0f5697c8a 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleDataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleDataSource.java @@ -46,6 +46,7 @@ import org.jkiss.dbeaver.model.struct.*; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.utils.GeneralUtils; +import org.jkiss.utils.BeanUtils; import org.jkiss.utils.CommonUtils; import org.jkiss.utils.StandardConstants; @@ -316,6 +317,11 @@ public class OracleDataSource extends JDBCDataSource return userCache.getAllObjects(monitor, this); } + @Association + public OracleUser getUser(DBRProgressMonitor monitor, String name) throws DBException { + return userCache.getObject(monitor, this, name); + } + @Association public Collection getProfiles(DBRProgressMonitor monitor) throws DBException { return profileCache.getAllObjects(monitor, this); @@ -669,6 +675,20 @@ public class OracleDataSource extends JDBCDataSource return positions.toArray(new ErrorPosition[positions.size()]); } } + if (error.getCause() != null) { + // Maybe OracleDatabaseException + try { + Object errorPosition = BeanUtils.readObjectProperty(error.getCause(), "errorPosition"); + if (errorPosition instanceof Number) { + DBPErrorAssistant.ErrorPosition pos = new DBPErrorAssistant.ErrorPosition(); + pos.position = ((Number) errorPosition).intValue(); + return new ErrorPosition[]{pos}; + } + } catch (Exception e) { + // Nope, its not it + } + + } if (error instanceof SQLException && SQLState.SQL_42000.getCode().equals(((SQLException) error).getSQLState())) { try (JDBCSession session = (JDBCSession) context.openSession(monitor, DBCExecutionPurpose.UTIL, "Extract last error position")) { try (CallableStatement stat = session.prepareCall( diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleObjectValidateAction.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleObjectValidateAction.java index d81b6f5c9156c49c831feaa0ded772c58c8e51ba..5fb5378ce6cfdeb8e9a08142313423120ec723b8 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleObjectValidateAction.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleObjectValidateAction.java @@ -17,6 +17,7 @@ package org.jkiss.dbeaver.ext.oracle.model; import org.jkiss.dbeaver.ext.oracle.actions.CompileHandler; +import org.jkiss.dbeaver.ext.oracle.actions.OracleTaskHandler; import org.jkiss.dbeaver.ext.oracle.model.source.OracleSourceObject; import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.exec.DBCSession; @@ -43,7 +44,7 @@ public class OracleObjectValidateAction extends OracleObjectPersistAction { return; } DBCCompileLog log = new DBCCompileLogBase(); - CompileHandler.logObjectErrors((JDBCSession) session, log, object, getObjectType()); + OracleTaskHandler.logObjectErrors((JDBCSession) session, log, object, getObjectType()); if (!log.getErrorStack().isEmpty()) { StringBuilder message = new StringBuilder(); message.append("Error during ").append(getObjectType().getTypeName()).append(" '").append(object.getName()).append("' validation:"); diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchedulerJob.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchedulerJob.java index 0c03229c31212be4223572474d8612e73e7b907d..724fb983f4b1639a6b1506b3e15155020cec3991 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchedulerJob.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchedulerJob.java @@ -19,6 +19,13 @@ package org.jkiss.dbeaver.ext.oracle.model; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.ext.oracle.model.source.OracleStatefulObject; +import org.jkiss.dbeaver.model.DBConstants; +import org.jkiss.dbeaver.model.DBPEvaluationContext; +import org.jkiss.dbeaver.model.DBPScriptObjectExt; +import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.edit.DBEPersistAction; +import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement; import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet; import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; @@ -28,15 +35,17 @@ import org.jkiss.dbeaver.model.impl.jdbc.cache.JDBCObjectCache; import org.jkiss.dbeaver.model.meta.Association; import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.model.struct.DBSObjectState; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; +import java.util.Map; /** * Oracle scheduler job */ -public class OracleSchedulerJob extends OracleSchemaObject { +public class OracleSchedulerJob extends OracleSchemaObject implements OracleStatefulObject, DBPScriptObjectExt { private static final String CAT_SETTINGS = "Settings"; private static final String CAT_STATISTICS = "Statistics"; @@ -105,6 +114,19 @@ public class OracleSchedulerJob extends OracleSchemaObject { private final ArgumentsCache argumentsCache = new ArgumentsCache(); + enum JobState { + DISABLED, + RETRYSCHEDULED, + SCHEDULED, + RUNNING, + COMPLETED, + BROKEN, + FAILED, + REMOTE, + SUCCEEDED, + CHAIN_STALLED; + } + protected OracleSchedulerJob(OracleSchema schema, ResultSet dbResult) { super(schema, JDBCUtils.safeGetString(dbResult, "JOB_NAME"), true); @@ -482,4 +504,125 @@ public class OracleSchedulerJob extends OracleSchemaObject { } + public DBSObjectState getObjectState() { + DBSObjectState objectState = null; + + try { + if ( JobState.valueOf(state).equals(JobState.RUNNING) ) { + objectState = DBSObjectState.ACTIVE; + } else if ( JobState.valueOf(state).equals(JobState.BROKEN) ) { + objectState = DBSObjectState.INVALID; + } else if ( JobState.valueOf(state).equals(JobState.CHAIN_STALLED) ) { + objectState = DBSObjectState.INVALID; + } else if ( JobState.valueOf(state).equals(JobState.FAILED) ) { + objectState = DBSObjectState.INVALID; + } else { + objectState = DBSObjectState.NORMAL; + } + } catch (IllegalArgumentException e) { + objectState = DBSObjectState.UNKNOWN; + } + + return objectState; + } + + public void refreshObjectState(DBRProgressMonitor monitor) { + if (monitor != null) { + monitor.beginTask("Load action for '" + this.getName() + "'...", 1); + try (final JDBCSession session = DBUtils.openMetaSession(monitor, this.getDataSource(), "Load action for " + OracleObjectType.JOB + " '" + this.getName() + "'")) { + try (JDBCPreparedStatement dbStat = session.prepareStatement( + "SELECT STATE FROM " + OracleConstants.SCHEMA_SYS + ".ALL_SCHEDULER_JOBS " + + "WHERE OWNER=? AND JOB_NAME=? ")) { + dbStat.setString(1, getOwner() ); + dbStat.setString(2, getName()); + dbStat.setFetchSize(DBConstants.METADATA_FETCH_SIZE); + try (JDBCResultSet dbResult = dbStat.executeQuery()) { + StringBuilder jobState = null; + int lineCount = 0; + while (dbResult.next()) { + if (monitor.isCanceled()) { + break; + } + final String line = dbResult.getString(1); + if (jobState == null) { + jobState = new StringBuilder(15); + } + jobState.append(line); + lineCount++; + monitor.subTask("Line " + lineCount); + } + if (jobState != null) { + state = jobState.toString(); + } + } + } + } catch (SQLException e) { + monitor.subTask("Error refreshing job state " + e.getMessage()); + } finally { + monitor.done(); + } + } + } + + public DBEPersistAction[] getRunActions() { + StringBuffer runScript = new StringBuffer(); + runScript.append("BEGIN\n"); + runScript.append("\tDBMS_SCHEDULER.RUN_JOB(JOB_NAME => '"); + runScript.append(getFullyQualifiedName(DBPEvaluationContext.DDL)); + runScript.append("', USE_CURRENT_SESSION => FALSE);"); + runScript.append("END;"); + return new DBEPersistAction[] { + new OracleObjectPersistAction( + OracleObjectType.JOB, + "Run Job", + runScript.toString() + )}; + } + + @Override + public String getObjectDefinitionText(DBRProgressMonitor monitor, Map options) throws DBException { + if (jobAction == null && monitor != null) { + monitor.beginTask("Load action for '" + this.getName() + "'...", 1); + try (final JDBCSession session = DBUtils.openMetaSession(monitor, this.getDataSource(), "Load action for " + OracleObjectType.JOB + " '" + this.getName() + "'")) { + try (JDBCPreparedStatement dbStat = session.prepareStatement( + "SELECT JOB_ACTION FROM " + OracleConstants.SCHEMA_SYS + ".ALL_SCHEDULER_JOBS " + + "WHERE OWNER=? AND JOB_NAME=? ")) { + dbStat.setString(1, getOwner() ); + dbStat.setString(2, getName()); + dbStat.setFetchSize(DBConstants.METADATA_FETCH_SIZE); + try (JDBCResultSet dbResult = dbStat.executeQuery()) { + StringBuilder action = null; + int lineCount = 0; + while (dbResult.next()) { + if (monitor.isCanceled()) { + break; + } + final String line = dbResult.getString(1); + if (action == null) { + action = new StringBuilder(4000); + } + action.append(line); + lineCount++; + monitor.subTask("Line " + lineCount); + } + if (action != null) { + jobAction = action.toString(); + } + } + } + } catch (SQLException e) { + throw new DBCException(e, this.getDataSource()); + } finally { + monitor.done(); + } + } + return jobAction; + } + + @Override + public String getExtendedDefinitionText(DBRProgressMonitor monitor) throws DBException { + // TODO Complete this so that Generate DDL includes the entire job definition, not just the action block + return null; + } + } diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java index e72bc66228b172a2a0a8dc9021c3f716e1d7e29e..9fbc626e1261e21f777ca65ed411588de035ca63 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java @@ -100,13 +100,13 @@ public class OracleSchema extends OracleGlobalObject implements DBSSchema, DBPRe return OracleConstants.USER_PUBLIC.equals(this.name); } - @Property(viewable = false, order = 200) + @Property(order = 200) public long getId() { return id; } - @Property(viewable = false, order = 190) + @Property(order = 190) public Date getCreateTime() { return createTime; } @@ -269,12 +269,7 @@ public class OracleSchema extends OracleGlobalObject implements DBSSchema, DBPRe allTableTriggers.addAll(triggers); } } - allTableTriggers.sort(new Comparator() { - @Override - public int compare(OracleTableTrigger o1, OracleTableTrigger o2) { - return o1.getName().compareTo(o2.getName()); - } - }); + allTableTriggers.sort(Comparator.comparing(OracleTrigger::getName)); return allTableTriggers; } @@ -313,17 +308,18 @@ public class OracleSchema extends OracleGlobalObject implements DBSSchema, DBPRe return recycleBin.getAllObjects(monitor, this); } + @Property(order = 90) + public OracleUser getSchemaUser(DBRProgressMonitor monitor) throws DBException { + return getDataSource().getUser(monitor, name); + } + @Override public Collection getChildren(@NotNull DBRProgressMonitor monitor) throws DBException { List children = new ArrayList<>(); - for (OracleTableBase table : tableCache.getAllObjects(monitor, this)) { - children.add(table); - } - for (OraclePackage pack : packageCache.getAllObjects(monitor, this)) { - children.add(pack); - } + children.addAll(tableCache.getAllObjects(monitor, this)); + children.addAll(packageCache.getAllObjects(monitor, this)); return children; } @@ -410,7 +406,7 @@ public class OracleSchema extends OracleGlobalObject implements DBSSchema, DBPRe TableCache() { super("TABLE_NAME"); - setListOrderComparator(DBUtils.nameComparator()); + setListOrderComparator(DBUtils.nameComparator()); } @NotNull @@ -486,7 +482,7 @@ public class OracleSchema extends OracleGlobalObject implements DBSSchema, DBPRe @Override protected void cacheChildren(OracleTableBase parent, List oracleTableColumns) { - Collections.sort(oracleTableColumns, DBUtils.orderComparator()); + oracleTableColumns.sort(DBUtils.orderComparator()); super.cacheChildren(parent, oracleTableColumns); } diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleUtils.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleUtils.java index 5ef76d509f531d947b53d4646acd113a5c4a2f50..aba227cc4a00622fc6021715735a51e1597cbb99 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleUtils.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleUtils.java @@ -282,11 +282,16 @@ public class OracleUtils { throws DBException { final Object reference = referrer.getLazyReference(propertyId); - if (reference instanceof String && monitor != null) { - Object object = cache.getObject( - monitor, - parent, - (String) reference); + if (reference instanceof String) { + Object object; + if (monitor != null) { + object = cache.getObject( + monitor, + parent, + (String) reference); + } else { + object = cache.getCachedObject((String) reference); + } if (object != null) { return object; } else { diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/session/OracleServerSession.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/session/OracleServerSession.java index 245f152e33e5bf8538a0edc310cb027a8c6fcce4..2b367ab9d97aadb8b45f998672dc999a7d8f8613 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/session/OracleServerSession.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/session/OracleServerSession.java @@ -35,6 +35,7 @@ public class OracleServerSession implements DBAServerSession { private String state; private String sql; private String event; + private String elapsedTime; private Timestamp logonTime; private String serviceName; @@ -52,6 +53,7 @@ public class OracleServerSession implements DBAServerSession { this.state = JDBCUtils.safeGetString(dbResult, "STATE"); this.sql = JDBCUtils.safeGetString(dbResult, "SQL_FULLTEXT"); this.event = JDBCUtils.safeGetString(dbResult, "EVENT"); + this.elapsedTime = JDBCUtils.safeGetString(dbResult, "LAST_CALL_ET"); this.logonTime = JDBCUtils.safeGetTimestamp(dbResult, "LOGON_TIME"); this.serviceName = JDBCUtils.safeGetString(dbResult, "SERVICE_NAME"); @@ -101,13 +103,19 @@ public class OracleServerSession implements DBAServerSession { return event; } - @Property(category = "Session", order = 7) + @Property(category = "Session", viewable = true, order = 7) + public String getElapsedTime() + { + return elapsedTime; + } + + @Property(category = "Session", order = 8) public Timestamp getLogonTime() { return logonTime; } - @Property(category = "Session", order = 8) + @Property(category = "Session", order = 9) public String getServiceName() { return serviceName; diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/tools/OracleScriptExecuteWizardPageSettings.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/tools/OracleScriptExecuteWizardPageSettings.java index 6ed347c43dfee0a66fee4529c3a84a5b416c461f..6a5e9af8b32c6abca7c8285bec5180e5c5186ed3 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/tools/OracleScriptExecuteWizardPageSettings.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/tools/OracleScriptExecuteWizardPageSettings.java @@ -80,7 +80,8 @@ public class OracleScriptExecuteWizardPageSettings extends AbstractToolWizardPag //updateState(); } - private void updateState() + @Override + protected void updateState() { String fileName = inputFileText.getText(); wizard.setInputFile(CommonUtils.isEmpty(fileName) ? null : new File(fileName)); diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/views/OracleCompilerDialog.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/views/OracleCompilerDialog.java index 8aa566ef2ed053253e3d4c96a60295b4d9b19094..116c571ad492072e40139acfcef9c9fc93eafdf7 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/views/OracleCompilerDialog.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/views/OracleCompilerDialog.java @@ -27,8 +27,6 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.oracle.OracleMessages; import org.jkiss.dbeaver.ext.oracle.actions.CompileHandler; import org.jkiss.dbeaver.ext.oracle.model.source.OracleSourceObject; @@ -39,6 +37,7 @@ import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.ui.DBeaverIcons; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.ViewerColumnController; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.controls.ListContentProvider; @@ -204,7 +203,7 @@ public class OracleCompilerDialog extends BaseDialog if (!CommonUtils.isEmpty(toCompile)) { try { - DBeaverUI.runInProgressService(new DBRRunnableWithProgress() { + UIUtils.runInProgressService(new DBRRunnableWithProgress() { @Override public void run(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException { diff --git a/plugins/org.jkiss.dbeaver.ext.phoenix/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.phoenix/META-INF/MANIFEST.MF index 856e034c31f0aa34d117abb5b756922968f41b16..2b67750626ee46bd6580c38813a65478c69ca66c 100644 --- a/plugins/org.jkiss.dbeaver.ext.phoenix/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.phoenix/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.phoenix;singleton:=true -Bundle-Version: 1.0.53 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.54 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.phoenix/pom.xml b/plugins/org.jkiss.dbeaver.ext.phoenix/pom.xml index 3370751b256901ee5cf89b1f269ff5fad7b7c768..1db888d42426e9b91c436c7aac6d8dcb2dd18961 100644 --- a/plugins/org.jkiss.dbeaver.ext.phoenix/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.phoenix/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.phoenix - 1.0.53 + 1.0.54 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/META-INF/MANIFEST.MF index d761f0aec64786da9f8ade2da5768fb4209e2b29..654dbddd761cce06166a07a0c9121a631bad8200 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.postgresql.debug.core;singleton:=true -Bundle-Version: 1.0.13 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.14 +Bundle-Release-Date: 20180604 Bundle-Vendor: %Bundle-Vendor Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.core.runtime, diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/plugin.xml b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/plugin.xml index 82e37389dcf57552a084a3742db57db67edf28d8..5231404180a6ee832359dd25697ba25a61d623d8 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/plugin.xml @@ -24,6 +24,9 @@ + + + diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/pom.xml b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/pom.xml index d9fd8778a056256fb2bc0a80a0344f88c799d342..740511304e63e1124cd7c47edf036cec5266c855 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.postgresql.debug.core - 1.0.13 + 1.0.14 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/PostgreBreakpointAdapterFactory.java b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/PostgreBreakpointAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..ad0f41b3019444be7dc4c752da8ea4bfc6924a4f --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/PostgreBreakpointAdapterFactory.java @@ -0,0 +1,46 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * Copyright (C) 2017-2018 Alexander Fedorov (alexander.fedorov@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ext.postgresql.debug.internal; + +import org.eclipse.core.runtime.IAdapterFactory; +import org.jkiss.dbeaver.debug.DBGBreakpointDescriptor; +import org.jkiss.dbeaver.ext.postgresql.debug.internal.impl.PostgreDebugBreakpointDescriptor; +import org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure; + +public class PostgreBreakpointAdapterFactory implements IAdapterFactory { + + private static final Class[] CLASSES = new Class[] { DBGBreakpointDescriptor.class }; + + @Override + public T getAdapter(Object adaptableObject, Class adapterType) { + if (adapterType == DBGBreakpointDescriptor.class) { + if (adaptableObject instanceof PostgreProcedure) { + return adapterType.cast(new PostgreDebugBreakpointDescriptor( + ((PostgreProcedure) adaptableObject).getObjectId(), -1 + )); + } + } + return null; + } + + @Override + public Class[] getAdapterList() { + return CLASSES; + } + +} diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugBreakpointDescriptor.java b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugBreakpointDescriptor.java index d9f7b23b480833ad89402aa0e4c1ac52eee199a1..189453746c3d6e58cc75556df98c23f73570f8d9 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugBreakpointDescriptor.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugBreakpointDescriptor.java @@ -18,13 +18,17 @@ package org.jkiss.dbeaver.ext.postgresql.debug.internal.impl; +import org.eclipse.core.resources.IMarker; import org.jkiss.dbeaver.debug.DBGBreakpointDescriptor; +import org.jkiss.dbeaver.ext.postgresql.debug.PostgreDebugConstants; +import org.jkiss.utils.CommonUtils; import java.util.HashMap; import java.util.Map; /** - * PG breakpoint + * PG breakpoint. + * It contains PG-specific info for IDatabaseBreakpoint */ public class PostgreDebugBreakpointDescriptor implements DBGBreakpointDescriptor { @@ -33,36 +37,15 @@ public class PostgreDebugBreakpointDescriptor implements DBGBreakpointDescriptor private final boolean onStart; private final long targetId; private final boolean all; - private final boolean global; - public PostgreDebugBreakpointDescriptor(Object oid, long lineNo, long targetId, boolean global) { - this.oid = oid; - this.lineNo = lineNo; - this.onStart = lineNo < 0; - this.targetId = targetId; - this.all = targetId < 0; - this.global = global; - } - - public PostgreDebugBreakpointDescriptor(Object oid, long lineNo, boolean global) { + public PostgreDebugBreakpointDescriptor(Object oid, long lineNo) { this.oid = oid; this.lineNo = lineNo; this.onStart = lineNo < 0; this.targetId = -1; this.all = true; - this.global = global; } - public PostgreDebugBreakpointDescriptor(Object oid, boolean global) { - this.oid = oid; - this.lineNo = -1; - this.onStart = true; - this.targetId = -1; - this.all = true; - this.global = global; - } - - @Override public Object getObjectId() { return oid; } @@ -83,21 +66,22 @@ public class PostgreDebugBreakpointDescriptor implements DBGBreakpointDescriptor return all; } - public boolean isGlobal() { - return global; - } - @Override public Map toMap() { Map map = new HashMap<>(); - map.put("lineNo", lineNo); + map.put(PostgreDebugConstants.ATTR_FUNCTION_OID, String.valueOf(oid)); map.put("onStart", onStart); - map.put("targetId", targetId); + map.put("targetId", String.valueOf(targetId)); map.put("all", all); - map.put("global", global); return map; } + public static DBGBreakpointDescriptor fromMap(Map attributes) { + long oid = CommonUtils.toLong(attributes.get(PostgreDebugConstants.ATTR_FUNCTION_OID)); + long parsed = CommonUtils.toLong(attributes.get(IMarker.LINE_NUMBER)); + return new PostgreDebugBreakpointDescriptor(oid, parsed); + } + @Override public String toString() { return "PostgreDebugBreakpointDescriptor [obj=" + oid + ", properties=" + toMap() + "]"; diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugController.java b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugController.java index e21c28ac6338fe001dad3d44bb12b817710f5c7b..a1ba4889b096f7b2ae7bd54aeb5764ebe1b7763b 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugController.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugController.java @@ -70,10 +70,7 @@ public class PostgreDebugController extends DBGBaseController { @Override public DBGBreakpointDescriptor describeBreakpoint(Map attributes) { - Object oid = attributes.get(PostgreDebugConstants.ATTR_FUNCTION_OID); - Object lineNumber = attributes.get(IMarker.LINE_NUMBER); - long parsed = Long.parseLong(String.valueOf(lineNumber)); - return new PostgreDebugBreakpointDescriptor(oid, parsed, false); + return PostgreDebugBreakpointDescriptor.fromMap(attributes); } } diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugSession.java b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugSession.java index 3a2f5b4eb1db82000ae24d1bd1d73ea83304709e..eb60d161cc613867c447b506a75570bed747c39c 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugSession.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.core/src/org/jkiss/dbeaver/ext/postgresql/debug/internal/impl/PostgreDebugSession.java @@ -38,12 +38,12 @@ import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.DBDValueHandler; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCCallableStatement; import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; import org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource; import org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSourceInfo; import org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; -import org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCCallableStatementImpl; import org.jkiss.dbeaver.model.runtime.AbstractJob; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; @@ -78,18 +78,17 @@ import java.util.Map; */ public class PostgreDebugSession extends DBGJDBCSession { - private final JDBCExecutionContext connection; private final JDBCExecutionContext controllerConnection; - private final DBGSessionInfo sessionInfo; - + private int functionOid = -1; private int sessionId = -1; private int localPortNumber = -1; private PostgreDebugAttachKind attachKind = PostgreDebugAttachKind.UNKNOWN; + private DBGSessionInfo sessionInfo; private PostgreDebugBreakpointDescriptor bpGlobal; - private volatile CallableStatement localStatement; + private volatile JDBCCallableStatement localStatement; private static final int LOCAL_WAIT = 50; // 0.5 sec @@ -134,7 +133,6 @@ public class PostgreDebugSession extends DBGJDBCSession { DBPDataSource dataSource = controller.getDataSourceContainer().getDataSource(); try { - this.connection = (JDBCExecutionContext) dataSource.openIsolatedContext(monitor, "Debug process session"); log.debug("Controller session creating."); this.controllerConnection = (JDBCExecutionContext) dataSource.openIsolatedContext(monitor, "Debug controller session"); log.debug("Debug controller session created."); @@ -163,12 +161,6 @@ public class PostgreDebugSession extends DBGJDBCSession { log.debug(String.format("Error creating debug session %s",e.getMessage())); throw new DBGException(e, dataSource); } - - this.sessionInfo = getSessionDescriptor(monitor); - } - - public JDBCExecutionContext getConnection() { - return connection; } @Override @@ -176,7 +168,7 @@ public class PostgreDebugSession extends DBGJDBCSession { return controllerConnection; } - private PostgreDebugSessionInfo getSessionDescriptor(DBRProgressMonitor monitor) throws DBGException { + private PostgreDebugSessionInfo getSessionDescriptor(DBRProgressMonitor monitor, JDBCExecutionContext connection) throws DBGException { try (JDBCSession session = connection.openSession(monitor, DBCExecutionPurpose.UTIL, "Read session info")) { try (Statement stmt = session.createStatement()) { try (ResultSet rs = stmt.executeQuery(SQL_CURRENT_SESSION)) { @@ -252,12 +244,12 @@ public class PostgreDebugSession extends DBGJDBCSession { } } - private String createSlot(DBRProgressMonitor monitor, PostgreProcedure function) throws DBGException { + private String createSlot(DBRProgressMonitor monitor, JDBCExecutionContext connection, PostgreProcedure function) throws DBGException { String objId = String.valueOf(function.getObjectId()); String sql = SQL_PREPARE_SLOT.replaceAll("\\?objectid", objId); log.debug(String.format("Create slot for object ID %s", objId)); - try (JDBCSession session = getConnection().openSession(monitor, DBCExecutionPurpose.UTIL, "Attach to port")) { + try (JDBCSession session = connection.openSession(monitor, DBCExecutionPurpose.UTIL, "Attach to port")) { try (Statement stmt = session.createStatement()) { try (ResultSet rs = stmt.executeQuery(sql)) { if (!rs.next()) { @@ -285,9 +277,10 @@ public class PostgreDebugSession extends DBGJDBCSession { log.debug(String.format("Waiting for port number with timeout %d",LOCAL_TIMEOT)); while (totalWait < LOCAL_TIMEOT) { try { - if (localStatement != null) { + CallableStatement statement = this.localStatement; + if (statement != null) { hasStatement = true; - if (localPortRcv(localStatement.getWarnings())) { + if (localPortRcv(statement.getWarnings())) { log.debug("Local port recived"); break; } @@ -315,7 +308,7 @@ public class PostgreDebugSession extends DBGJDBCSession { } } - protected void runLocalProc(PostgreProcedure function, List paramValues, String name) throws DBGException { + protected void runLocalProc(JDBCExecutionContext connection, PostgreProcedure function, List paramValues, String name) throws DBGException { List parameters = function.getInputParameters(); log.debug("Run local proc"); if (parameters.size() != paramValues.size()) { @@ -326,46 +319,51 @@ public class PostgreDebugSession extends DBGJDBCSession { Job job = new AbstractJob(name) { @Override protected IStatus run(DBRProgressMonitor monitor) { - try (JDBCSession session = getConnection().openSession(monitor, DBCExecutionPurpose.USER, "Run SQL command")) { - StringBuilder query = new StringBuilder(); - query.append("{ CALL ").append(function.getFullyQualifiedName(DBPEvaluationContext.DML)).append("("); - for (int i = 0; i < parameters.size(); i++) { - if (i > 0) query.append(","); - query.append("?"); - } - query.append(") }"); - log.debug(String.format("Prepared local call %s", query)); - localStatement = session.prepareCall(query.toString()); - JDBCCallableStatementImpl callImpl = new JDBCCallableStatementImpl(session, localStatement, query.toString(), false); - for (int i = 0; i < parameters.size(); i++) { - PostgreProcedureParameter parameter = parameters.get(i); - String paramValue = paramValues.get(i); - DBDValueHandler valueHandler = DBUtils.findValueHandler(session, parameter); - valueHandler.bindValueObject(session, callImpl, parameter, i, paramValue); - } - localStatement.execute(); - // And Now His Watch Is Ended - log.debug("Local statment executed (ANHWIE)"); - fireEvent(new DBGEvent(this, DBGEvent.RESUME, DBGEvent.STEP_RETURN)); - } catch (Exception e) { + try (JDBCSession session = connection.openSession(monitor, DBCExecutionPurpose.USER, "Run SQL command")) { try { - if (localStatement != null) { - localStatement.close(); - localStatement = null; + StringBuilder query = new StringBuilder(); + query.append("{ CALL ").append(function.getFullyQualifiedName(DBPEvaluationContext.DML)).append("("); + for (int i = 0; i < parameters.size(); i++) { + if (i > 0) query.append(","); + query.append("?"); } - } catch (SQLException e1) { - log.debug(String.format("Error clearing local statment")); - log.error(e1); - } - log.debug(String.format("Error execute local statment",e.getMessage())); - fireEvent(new DBGEvent(this, DBGEvent.TERMINATE, DBGEvent.CLIENT_REQUEST)); - String sqlState = e instanceof SQLException ? ((SQLException) e).getSQLState() : null; - if (!PostgreConstants.EC_QUERY_CANCELED.equals(sqlState)) { - log.error(name, e); - return DebugUtils.newErrorStatus(name, e); + query.append(") }"); + log.debug(String.format("Prepared local call %s", query)); + localStatement = session.prepareCall(query.toString()); + + for (int i = 0; i < parameters.size(); i++) { + PostgreProcedureParameter parameter = parameters.get(i); + String paramValue = paramValues.get(i); + DBDValueHandler valueHandler = DBUtils.findValueHandler(session, parameter); + valueHandler.bindValueObject(session, localStatement, parameter, i, paramValue); + } + localStatement.execute(); + // And Now His Watch Is Ended + log.debug("Local statement executed (ANHWIE)"); + fireEvent(new DBGEvent(this, DBGEvent.RESUME, DBGEvent.STEP_RETURN)); + } catch (Exception e) { + log.debug("Error execute local statement: " + e.getMessage()); + String sqlState = e instanceof SQLException ? ((SQLException) e).getSQLState() : null; + if (!PostgreConstants.EC_QUERY_CANCELED.equals(sqlState)) { + log.error(name, e); + return DebugUtils.newErrorStatus(name, e); + } + } finally { + try { + if (localStatement != null) { + localStatement.close(); + localStatement = null; + } + } catch (Exception e1) { + log.debug("Error clearing local statment"); + log.error(e1); + } + connection.close(); + + fireEvent(new DBGEvent(this, DBGEvent.TERMINATE, DBGEvent.CLIENT_REQUEST)); } } - log.debug("Local stament executed"); + log.debug("Local statement executed"); return Status.OK_STATUS; } }; @@ -374,18 +372,26 @@ public class PostgreDebugSession extends DBGJDBCSession { private void attachLocal(DBRProgressMonitor monitor, PostgreProcedure function, List parameters) throws DBGException { - log.debug("Attaching locally...."); - createSlot(monitor, function); + try { + JDBCExecutionContext connection = (JDBCExecutionContext) controllerConnection.getDataSource().openIsolatedContext(monitor, "Debug process session"); + log.debug("Attaching locally...."); + this.sessionInfo = getSessionDescriptor(monitor, connection); + + createSlot(monitor, connection, function); - String taskName = "PostgreSQL Debug - Local session " + sessionInfo.getID(); + String taskName = "PostgreSQL Debug - Local session " + sessionInfo.getID(); - runLocalProc(function, parameters, taskName); + runLocalProc(connection, function, parameters, taskName); - waitPortNumber(); + waitPortNumber(); + + sessionId = attachToPort(monitor); + log.debug(String.format("Attached local session UD = %d", sessionId)); + getController().fireEvent(new DBGEvent(this, DBGEvent.SUSPEND, DBGEvent.MODEL_SPECIFIC)); + } catch (DBException e) { + throw new DBGException("Error opening debug session", e); + } - sessionId = attachToPort(monitor); - log.debug(String.format("Attached local session UD = %d",sessionId)); - getController().fireEvent(new DBGEvent(this, DBGEvent.SUSPEND, DBGEvent.MODEL_SPECIFIC)); } private void attachGlobal(DBRProgressMonitor monitor, int oid, int targetPID) throws DBGException { @@ -410,7 +416,7 @@ public class PostgreDebugSession extends DBGJDBCSession { throw new DBGException("SQL error", e); } - bpGlobal = new PostgreDebugBreakpointDescriptor(oid, true); + bpGlobal = new PostgreDebugBreakpointDescriptor(oid, -1); addBreakpoint(monitor, bpGlobal); log.debug("Global breakpoint added"); @@ -436,8 +442,8 @@ public class PostgreDebugSession extends DBGJDBCSession { } log.debug("Attaching..."); - - int functionOid = CommonUtils.toInt(configuration.get(PostgreDebugConstants.ATTR_FUNCTION_OID)); + + functionOid = CommonUtils.toInt(configuration.get(PostgreDebugConstants.ATTR_FUNCTION_OID)); log.debug(String.format("Function OID %d", functionOid)); String kind = String.valueOf(configuration.get(PostgreDebugConstants.ATTR_ATTACH_KIND)); @@ -450,7 +456,7 @@ public class PostgreDebugSession extends DBGJDBCSession { log.debug("Global attached"); } else { attachKind = PostgreDebugAttachKind.LOCAL; - PostgreProcedure function = PostgreSqlDebugCore.resolveFunction(monitor, connection.getDataSource().getContainer(), configuration); + PostgreProcedure function = PostgreSqlDebugCore.resolveFunction(monitor, controllerConnection.getDataSource().getContainer(), configuration); List parameterValues = (List) configuration.get(PostgreDebugConstants.ATTR_FUNCTION_PARAMETERS); attachLocal(monitor, function, parameterValues); @@ -469,13 +475,17 @@ public class PostgreDebugSession extends DBGJDBCSession { } } - private void detachLocal(DBRProgressMonitor monitor) throws DBGException { - try (JDBCSession session = getControllerConnection().openSession(monitor, DBCExecutionPurpose.UTIL, "Abort local session")) { + private void detachLocal(DBRProgressMonitor monitor, JDBCExecutionContext connection) throws DBGException { + if (localStatement == null) { + // Execution already terminated + return; + } + try (JDBCSession session = connection.openSession(monitor, DBCExecutionPurpose.UTIL, "Abort local session")) { JDBCUtils.executeQuery(session, composeAbortCommand()); - log.debug("Local deattached"); + log.debug("Local detached"); } catch (SQLException e) { - log.debug("Unable to abort target"); - log.error("Unable to abort target", e); + log.debug("Unable to abort local session"); + log.error("Unable to abort local target", e); } } @@ -486,7 +496,7 @@ public class PostgreDebugSession extends DBGJDBCSession { JDBCUtils.executeQuery(session, composeAbortCommand()); log.debug("Global deattached"); } catch (SQLException e) { - log.error("Unable to abort target", e); + log.error("Unable to abort global target", e); } } @@ -496,7 +506,7 @@ public class PostgreDebugSession extends DBGJDBCSession { detachGlobal(monitor); break; case LOCAL: - detachLocal(monitor); + detachLocal(monitor, getControllerConnection()); break; default: break; @@ -510,10 +520,10 @@ public class PostgreDebugSession extends DBGJDBCSession { protected String composeAddBreakpointCommand(DBGBreakpointDescriptor descriptor) { PostgreDebugBreakpointDescriptor bp = (PostgreDebugBreakpointDescriptor) descriptor; - String sqlPattern = bp.isGlobal() ? SQL_SET_GLOBAL_BREAKPOINT : SQL_SET_BREAKPOINT; + String sqlPattern = attachKind == PostgreDebugAttachKind.GLOBAL ? SQL_SET_GLOBAL_BREAKPOINT : SQL_SET_BREAKPOINT; String sqlCommand = sqlPattern.replaceAll("\\?sessionid", String.valueOf(getSessionId())) - .replaceAll("\\?obj", String.valueOf(descriptor.getObjectId())) + .replaceAll("\\?obj", String.valueOf(functionOid)) .replaceAll("\\?line", bp.isOnStart() ? "-1" : String.valueOf(bp.getLineNo())) .replaceAll("\\?target", bp.isAll() ? "null" : String.valueOf(bp.getTargetId())); return sqlCommand; @@ -522,7 +532,7 @@ public class PostgreDebugSession extends DBGJDBCSession { protected String composeRemoveBreakpointCommand(DBGBreakpointDescriptor breakpointDescriptor) { PostgreDebugBreakpointDescriptor bp = (PostgreDebugBreakpointDescriptor) breakpointDescriptor; String sqlCommand = SQL_DROP_BREAKPOINT.replaceAll("\\?sessionid", String.valueOf(getSessionId())) - .replaceAll("\\?obj", String.valueOf(bp.getObjectId())) + .replaceAll("\\?obj", String.valueOf(functionOid)) .replaceAll("\\?line", bp.isOnStart() ? "-1" : String.valueOf(bp.getLineNo())); return sqlCommand; } @@ -803,15 +813,7 @@ public class PostgreDebugSession extends DBGJDBCSession { * @return boolean */ public boolean isAttached() { - switch (attachKind) { - case GLOBAL: - return connection != null && (sessionId > 0); - case LOCAL: - return sessionId > 0; - default: - return false; - } - + return sessionId > 0; } /** @@ -833,14 +835,14 @@ public class PostgreDebugSession extends DBGJDBCSession { @Override public void closeSession(DBRProgressMonitor monitor) throws DBGException { + if (!isAttached()) { + return; + } log.debug("Closing session."); try { super.closeSession(monitor); log.debug("Session closed."); } finally { - if (connection != null) { - IOUtils.close(connection); - } if (controllerConnection != null) { IOUtils.close(controllerConnection); } diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.ui/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.ui/META-INF/MANIFEST.MF index 46bb04db933814f01f683f36fe63bc767bb1e84d..e35763beffc3e5a5a427fa3278cee9327de49a50 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.ui/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.ui/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.postgresql.debug.ui;singleton:=true -Bundle-Version: 1.0.13 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.14 +Bundle-Release-Date: 20180604 Bundle-Vendor: %Bundle-Vendor Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.core.runtime, diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.ui/pom.xml b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.ui/pom.xml index 84e0ca2f2225a624886702b4dc3d5df133264016..576337f88414973956918f1598791d098514f4be 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.debug.ui/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.debug.ui/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.postgresql.debug.ui - 1.0.13 + 1.0.14 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.postgresql/META-INF/MANIFEST.MF index 5386f8b631730fc0d4770bd3430c235716b7bb8d..766c5629c6ee01fe741f4445cee5cd87f75a93e9 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.postgresql;singleton:=true -Bundle-Version: 2.1.57 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.1.58 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.osgi.services, org.eclipse.e4.core.services, org.eclipse.e4.core.contexts, diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/pom.xml b/plugins/org.jkiss.dbeaver.ext.postgresql/pom.xml index 3f3e1d57e90e3c31849edb37ecb993115ed64f8f..531de8897da9d468eadebb9e9320c09461e5247b 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.postgresql - 2.1.57 + 2.1.58 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreDatabaseManager.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreDatabaseManager.java index a4b90757d6c29f9492769b12610e18f6e97f3239..bb1691e94cd83daaefb5926e419a2ac305b55899 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreDatabaseManager.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreDatabaseManager.java @@ -19,7 +19,6 @@ package org.jkiss.dbeaver.ext.postgresql.edit; import org.eclipse.jface.dialogs.IDialogConstants; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.postgresql.PostgreMessages; import org.jkiss.dbeaver.ext.postgresql.model.PostgreDataSource; import org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase; @@ -36,6 +35,7 @@ import org.jkiss.dbeaver.model.impl.sql.edit.SQLObjectEditor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.utils.CommonUtils; import java.util.List; @@ -74,7 +74,7 @@ public class PostgreDatabaseManager extends SQLObjectEditor() { @Override protected PostgreDatabase runTask() { - PostgreCreateDatabaseDialog dialog = new PostgreCreateDatabaseDialog(DBeaverUI.getActiveWorkbenchShell(), parent); + PostgreCreateDatabaseDialog dialog = new PostgreCreateDatabaseDialog(UIUtils.getActiveWorkbenchShell(), parent); if (dialog.open() != IDialogConstants.OK_ID) { return null; } diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreRoleManager.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreRoleManager.java index 58341cf4fcbbb49fe25faf75c931a7fd920a488a..2162b681be3e7e5b9d37d51d6513bc8d39e1b625 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreRoleManager.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreRoleManager.java @@ -20,10 +20,8 @@ package org.jkiss.dbeaver.ext.postgresql.edit; import org.eclipse.jface.dialogs.IDialogConstants; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase; import org.jkiss.dbeaver.ext.postgresql.model.PostgreRole; -import org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema; import org.jkiss.dbeaver.ext.postgresql.ui.PostgreCreateRoleDialog; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBUtils; @@ -33,9 +31,9 @@ import org.jkiss.dbeaver.model.impl.DBSObjectCache; import org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction; import org.jkiss.dbeaver.model.impl.sql.edit.SQLObjectEditor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; -import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.utils.CommonUtils; import java.util.List; @@ -64,7 +62,7 @@ public class PostgreRoleManager extends SQLObjectEditor() { @Override protected PostgreRole runTask() { - PostgreCreateRoleDialog dialog = new PostgreCreateRoleDialog(DBeaverUI.getActiveWorkbenchShell(), parent); + PostgreCreateRoleDialog dialog = new PostgreCreateRoleDialog(UIUtils.getActiveWorkbenchShell(), parent); if (dialog.open() != IDialogConstants.OK_ID) { return null; } diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreSchemaManager.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreSchemaManager.java index d26210b786c639f79f7a132029a1b18a2a9810bc..129704d46853cf62e52e80ee6a83fda8f56c50d2 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreSchemaManager.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreSchemaManager.java @@ -19,7 +19,6 @@ package org.jkiss.dbeaver.ext.postgresql.edit; import org.eclipse.jface.dialogs.IDialogConstants; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase; import org.jkiss.dbeaver.ext.postgresql.model.PostgreRole; import org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema; @@ -36,6 +35,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.model.sql.SQLUtils; import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.UIUtils; import java.util.List; import java.util.Map; @@ -64,7 +64,7 @@ public class PostgreSchemaManager extends SQLObjectEditor() { @Override protected PostgreSchema runTask() { - PostgreCreateSchemaDialog dialog = new PostgreCreateSchemaDialog(DBeaverUI.getActiveWorkbenchShell(), parent); + PostgreCreateSchemaDialog dialog = new PostgreCreateSchemaDialog(UIUtils.getActiveWorkbenchShell(), parent); if (dialog.open() != IDialogConstants.OK_ID) { return null; } diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreSequenceManager.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreSequenceManager.java index 879bd1733a0c5aa85266c7336d0547f2d79c6e0e..55f6601aa1ecc8b031db7c90325f100ea9983dfa 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreSequenceManager.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreSequenceManager.java @@ -101,7 +101,7 @@ public class PostgreSequenceManager extends SQLObjectEditor actions, ObjectDeleteCommand command, Map options) { actions.add( - new SQLDatabasePersistAction("Drop sequence", "DROP SEQUENCE " + DBUtils.getQuotedIdentifier(command.getObject())) //$NON-NLS-2$ + new SQLDatabasePersistAction("Drop sequence", "DROP SEQUENCE " + command.getObject().getFullyQualifiedName(DBPEvaluationContext.DDL)) //$NON-NLS-2$ ); } diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreDataSource.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreDataSource.java index 0bc224698478a8b362c66949a60d2a0ec3829fcd..0ea2efac6cdc7cbbbb2e7b9ab8965f2039d13cdd 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreDataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreDataSource.java @@ -442,6 +442,11 @@ public class PostgreDataSource extends JDBCDataSource implements DBSObjectSelect return getDefaultInstance().getDataType(new VoidProgressMonitor(), typeName); } + @Override + public DBSDataType getLocalDataType(int typeID) { + return getDefaultInstance().getDataType(new VoidProgressMonitor(), typeID); + } + @Override public String getDefaultDataTypeName(@NotNull DBPDataKind dataKind) { return PostgreUtils.getDefaultDataTypeName(dataKind); diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreStructureAssistant.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreStructureAssistant.java index ee83e904d35988755696f78c70610c1dcc7d2618..bd8bf3cf98325d0bbc0b24f831d800209f1fcc5e 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreStructureAssistant.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreStructureAssistant.java @@ -191,6 +191,7 @@ public class PostgreStructureAssistant extends JDBCStructureAssistant try (JDBCPreparedStatement dbStat = session.prepareStatement( "SELECT DISTINCT x.oid,x.proname,x.pronamespace FROM pg_catalog.pg_proc x " + "WHERE x.proname " + (caseSensitive ? "LIKE" : "ILIKE") + " ? " + + "AND x.proname NOT LIKE '\\_%'" + // Exclude procedures starting with underscore (CommonUtils.isEmpty(schema) ? "" : " AND x.pronamespace IN (" + SQLUtils.generateParamList(schema.size())+ ")") + " ORDER BY x.proname LIMIT " + maxResults)) { dbStat.setString(1, procNameMask); diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageObjects.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageObjects.java index 1ae94de2f7eb368a9f7abdb1ea4041ebb7dd5e66..2e80a18183a575bb08f4a4011aed4cd9cf215e97 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageObjects.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageObjects.java @@ -26,7 +26,6 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.postgresql.PostgreMessages; import org.jkiss.dbeaver.ext.postgresql.model.PostgreDataSource; import org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema; @@ -86,17 +85,15 @@ class PostgreBackupWizardPageObjects extends PostgreWizardPageSettings { + TableItem item = (TableItem) event.item; + PostgreSchema catalog = (PostgreSchema) item.getData(); + if (event.detail == SWT.CHECK) { + schemasTable.select(schemasTable.indexOf(item)); + checkedObjects.remove(catalog); } + loadTables(catalog); + updateState(); }); GridData gd = new GridData(GridData.FILL_BOTH); gd.heightHint = 50; @@ -117,12 +114,10 @@ class PostgreBackupWizardPageObjects extends PostgreWizardPageSettings { + if (event.detail == SWT.CHECK) { + updateCheckedTables(); + updateState(); } }); @@ -150,11 +145,7 @@ class PostgreBackupWizardPageObjects extends PostgreWizardPageSettings tables = checkedObjects.get(catalog); - if (tables == null) { - tables = new HashSet<>(); - checkedObjects.put(catalog, tables); - } + Set tables = checkedObjects.computeIfAbsent(catalog, k -> new HashSet<>()); tables.add((PostgreTableBase) object); if (((PostgreTableBase) object).isView()) { wizard.showViews = true; @@ -239,18 +230,15 @@ class PostgreBackupWizardPageObjects extends PostgreWizardPageSettings { + tablesTable.removeAll(); + for (PostgreTableBase table : objects) { + TableItem item = new TableItem(tablesTable, SWT.NONE); + item.setImage(DBeaverIcons.getImage(table.isView() ? DBIcon.TREE_VIEW : DBIcon.TREE_TABLE)); + item.setText(0, table.getName()); + item.setData(table); + item.setChecked(isCatalogChecked && (checkedObjects == null || checkedObjects.contains(table))); } }); } catch (DBException e) { @@ -282,7 +270,8 @@ class PostgreBackupWizardPageObjects extends PostgreWizardPageSettings { + UIUtils.asyncExec(() -> { UIUtils.packColumns(permissionTable, false); }); @@ -450,7 +450,7 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor

{ + UIUtils.syncExec(() -> { updateObjectPermissions(null); }); activatePart(); diff --git a/plugins/org.jkiss.dbeaver.ext.sample.database/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.sample.database/META-INF/MANIFEST.MF index 46f7438b3191f42af5023954ead9dce9e5e4efa2..734247c8f0848a5e091b87060b5f7e92c820139f 100644 --- a/plugins/org.jkiss.dbeaver.ext.sample.database/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.sample.database/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.sample.database;singleton:=true -Bundle-Version: 1.0.21 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.22 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.jkiss.dbeaver.core, diff --git a/plugins/org.jkiss.dbeaver.ext.sample.database/pom.xml b/plugins/org.jkiss.dbeaver.ext.sample.database/pom.xml index c62a09ab716c1c6280f1ccbcef6d1497b36c80eb..6e753f2e9eb29c319c563d269283e44eabcd2a41 100644 --- a/plugins/org.jkiss.dbeaver.ext.sample.database/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.sample.database/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.sample.database - 1.0.21 + 1.0.22 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.sqlite/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.sqlite/META-INF/MANIFEST.MF index 818d6fedd58ec4a929f936ad3eb87a0bcdfd4e28..3dcd970ca76a5cc3d2fe0ddb5cec0c55c6e2d69b 100644 --- a/plugins/org.jkiss.dbeaver.ext.sqlite/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.sqlite/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.sqlite;singleton:=true -Bundle-Version: 1.0.33 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.34 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.jkiss.dbeaver.core, diff --git a/plugins/org.jkiss.dbeaver.ext.sqlite/pom.xml b/plugins/org.jkiss.dbeaver.ext.sqlite/pom.xml index 090714352e48b4a1bde621cc96534ab9aa2a2d8b..44d51b8427cffa7165cf122cb1eb896812b1329c 100644 --- a/plugins/org.jkiss.dbeaver.ext.sqlite/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.sqlite/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.sqlite - 1.0.33 + 1.0.34 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.teradata/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.teradata/META-INF/MANIFEST.MF index 6e7e37743f5d3bf3e78d19b34f8fc0990341df43..2471ec242969d95a0de63413fa2ea1cd063c293f 100644 --- a/plugins/org.jkiss.dbeaver.ext.teradata/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.teradata/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.teradata;singleton:=true -Bundle-Version: 1.0.52 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.53 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.teradata/pom.xml b/plugins/org.jkiss.dbeaver.ext.teradata/pom.xml index 5796bb186c456ea4df054eb3ea671bc1df43c466..40f34023c0dbe81e74a8773d874563bc21fe86e4 100644 --- a/plugins/org.jkiss.dbeaver.ext.teradata/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.teradata/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.teradata - 1.0.52 + 1.0.53 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.ui.locks/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.ui.locks/META-INF/MANIFEST.MF index b2a0fa02653ebd07ffb994f971f2ea42c6f2a9e0..84347791f4dd506631ba26e283adf37d4631795d 100644 --- a/plugins/org.jkiss.dbeaver.ext.ui.locks/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.ui.locks/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.ui.locks;singleton:=true -Bundle-Version: 1.0.29 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.30 +Bundle-Release-Date: 20180604 Bundle-Vendor: %Bundle-Vendor Bundle-Authors: Andrew Khitrin Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/plugins/org.jkiss.dbeaver.ext.ui.locks/pom.xml b/plugins/org.jkiss.dbeaver.ext.ui.locks/pom.xml index b3db62f8e8f21782ba62686c89db989ae30579d6..9422e6bf6f96ad0f206c506c7a51b1f72674ffc9 100644 --- a/plugins/org.jkiss.dbeaver.ext.ui.locks/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.ui.locks/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.ui.locks - 1.0.29 + 1.0.30 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.ui.locks/src/org/jkiss/dbeaver/ext/ui/locks/manage/LockManagerViewer.java b/plugins/org.jkiss.dbeaver.ext.ui.locks/src/org/jkiss/dbeaver/ext/ui/locks/manage/LockManagerViewer.java index f71fc59e5e03804ac21582023e22463750b2718d..67d4c2f1b571ab7d195872418f3054c17816c941 100644 --- a/plugins/org.jkiss.dbeaver.ext.ui.locks/src/org/jkiss/dbeaver/ext/ui/locks/manage/LockManagerViewer.java +++ b/plugins/org.jkiss.dbeaver.ext.ui.locks/src/org/jkiss/dbeaver/ext/ui/locks/manage/LockManagerViewer.java @@ -32,7 +32,6 @@ import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchSite; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ext.ui.locks.graph.LockGraphicalView; import org.jkiss.dbeaver.ext.ui.locks.table.LockTable; import org.jkiss.dbeaver.ext.ui.locks.table.LockTableDetail; @@ -93,7 +92,7 @@ public class LockManagerViewer { protected LockManagerViewer(IWorkbenchPart part, Composite parent, final DBAServerLockManager lockManager) { - refreshControl = new AutoRefreshControl(parent, lockManager.getClass().getSimpleName(), monitor -> DBeaverUI.syncExec(() -> refreshLocks(null))); + refreshControl = new AutoRefreshControl(parent, lockManager.getClass().getSimpleName(), monitor -> UIUtils.syncExec(() -> refreshLocks(null))); this.graphManager = (LockGraphManager) lockManager; boldFont = UIUtils.makeBoldFont(parent.getFont()); diff --git a/plugins/org.jkiss.dbeaver.ext.ui.svg/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.ui.svg/META-INF/MANIFEST.MF index 680ddf89a69b9666c1a7341f13070efd1af26963..0e38b7f4f5d919c7d29404f614cdad7158631865 100644 --- a/plugins/org.jkiss.dbeaver.ext.ui.svg/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.ui.svg/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.ui.svg;singleton:=true -Bundle-Version: 1.0.20 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.21 +Bundle-Release-Date: 20180604 Bundle-Vendor: %Bundle-Vendor Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.core.runtime, diff --git a/plugins/org.jkiss.dbeaver.ext.ui.svg/pom.xml b/plugins/org.jkiss.dbeaver.ext.ui.svg/pom.xml index 9da1a7a3e926382bdc32a1af3ee03333227e6b81..6dada7c420df4d682dcc6973443e141215fa770b 100644 --- a/plugins/org.jkiss.dbeaver.ext.ui.svg/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.ui.svg/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.ui.svg - 1.0.20 + 1.0.21 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.vertica/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.vertica/META-INF/MANIFEST.MF index 59fedd28afed9ce1f6ee8516e1434f388892d7f6..6e58fb217174d1bc4461c439b22e75f66e21d986 100644 --- a/plugins/org.jkiss.dbeaver.ext.vertica/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.vertica/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.vertica;singleton:=true -Bundle-Version: 2.0.14 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.0.15 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ui.views, diff --git a/plugins/org.jkiss.dbeaver.ext.vertica/pom.xml b/plugins/org.jkiss.dbeaver.ext.vertica/pom.xml index ae712e7376e1e19d5b2c682022c09e0c21d32b11..65038d30082d9943351ee3a2f98bae0327fcd90e 100644 --- a/plugins/org.jkiss.dbeaver.ext.vertica/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.vertica/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.vertica - 2.0.14 + 2.0.15 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.ext.vertica/src/org/jkiss/dbeaver/ext/vertica/edit/VerticaTableColumnManager.java b/plugins/org.jkiss.dbeaver.ext.vertica/src/org/jkiss/dbeaver/ext/vertica/edit/VerticaTableColumnManager.java index 66e78bf11b7ca36af30edba38087e819d3911191..3b267b7e3c5ca9211061f80be6780942a485b19c 100644 --- a/plugins/org.jkiss.dbeaver.ext.vertica/src/org/jkiss/dbeaver/ext/vertica/edit/VerticaTableColumnManager.java +++ b/plugins/org.jkiss.dbeaver.ext.vertica/src/org/jkiss/dbeaver/ext/vertica/edit/VerticaTableColumnManager.java @@ -81,7 +81,7 @@ public class VerticaTableColumnManager extends GenericTableColumnManager { /** * Copy-pasted from PostgreSQL implementation. - * TODO: Vertica is originally based on PG. actionList, ObjectChangeCommand command, Map options) @@ -90,8 +90,8 @@ public class VerticaTableColumnManager extends GenericTableColumnManager { String prefix = "ALTER TABLE " + DBUtils.getObjectFullName(column.getTable(), DBPEvaluationContext.DDL) + " ALTER COLUMN " + DBUtils.getQuotedIdentifier(column) + " "; String typeClause = column.getFullTypeName(); - if (command.getProperty(DBConstants.PROP_ID_DATA_TYPE) != null || command.getProperty("maxLength") != null || command.getProperty("precision") != null || command.getProperty("scale") != null) { - actionList.add(new SQLDatabasePersistAction("Set column type", prefix + "TYPE " + typeClause)); + if (command.getProperty(DBConstants.PROP_ID_TYPE_NAME) != null || command.getProperty("maxLength") != null || command.getProperty("precision") != null || command.getProperty("scale") != null) { + actionList.add(new SQLDatabasePersistAction("Set column type", prefix + "SET DATA TYPE " + typeClause)); } if (command.getProperty(DBConstants.PROP_ID_REQUIRED) != null) { actionList.add(new SQLDatabasePersistAction("Set column nullability", prefix + (column.isRequired() ? "SET" : "DROP") + " NOT NULL")); diff --git a/plugins/org.jkiss.dbeaver.ext.wmi/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ext.wmi/META-INF/MANIFEST.MF index 56f06e43fe25a6d397c156d7d5936839c191ee79..27fafc88144795687b93ba4794e606780627091e 100644 --- a/plugins/org.jkiss.dbeaver.ext.wmi/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ext.wmi/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ext.wmi;singleton:=true -Bundle-Version: 2.0.86 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.0.87 +Bundle-Release-Date: 20180604 Bundle-Activator: org.jkiss.dbeaver.ext.wmi.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, diff --git a/plugins/org.jkiss.dbeaver.ext.wmi/pom.xml b/plugins/org.jkiss.dbeaver.ext.wmi/pom.xml index c934fae491ec9827db36d9805e8163fc4d8ca62a..d8fa612da66d059056f4753db81f3648bd771b77 100644 --- a/plugins/org.jkiss.dbeaver.ext.wmi/pom.xml +++ b/plugins/org.jkiss.dbeaver.ext.wmi/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ext.wmi - 2.0.86 + 2.0.87 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF index 5b6b87b95f498a2c0c89ee21ec7fb2bcd447271d..1ade9e926931b3fad56b9bb94c4af7a14f7c9bbb 100644 --- a/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.model;singleton:=true -Bundle-Version: 1.0.73 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.74 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-Activator: org.jkiss.dbeaver.bundle.ModelActivator diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties index 01ce18f6b87c45992e17fbb3bdfc2506b28c978f..35043beb1303b3cd807c3a57fc33f10098427cb3 100644 --- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties @@ -36,6 +36,8 @@ meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.required.name=Not meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.autoGenerated.name=Auto meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.autoGenerated.description=Auto-generated (auto-incremented) column meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.entityName.name=Table Name +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.catalogName.name=Catalog Name +meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.schemaName.name=Schema Name meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.scale.name=Scale meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.precision.name=Precision meta.org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCColumnMetaData.maxLength.name=Max Length diff --git a/plugins/org.jkiss.dbeaver.model/pom.xml b/plugins/org.jkiss.dbeaver.model/pom.xml index cb8447f1532286072245d4953cea6f5b0b19dd0e..afcefbf2442c9b394c3b12cab570ac8ffaf06963 100644 --- a/plugins/org.jkiss.dbeaver.model/pom.xml +++ b/plugins/org.jkiss.dbeaver.model/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.model - 1.0.73 + 1.0.74 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBConstants.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBConstants.java index f24e998d96180f3c89caab3fa84da4151677b383..7f7f3b6b15852505eebcd40531bbe3256570023e 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBConstants.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBConstants.java @@ -46,6 +46,8 @@ public class DBConstants { public static final String PROP_ID_MAX_LENGTH = "maxLength"; //NON-NLS-1 public static final String PROP_ID_NOT_NULL = "notNull"; //NON-NLS-1 public static final String PARAM_INIT_ON_TEST = "initOnTest"; //NON-NLS-1 + public static final String PARAM_OBJECT_DEFINITION_TEXT = "objectDefinitionText"; //NON-NLS-1 + public static final String PARAM_EXTENDED_DEFINITION_TEXT = "extendedDefinitionText"; //NON-NLS-1 // Internal properties prefix. This is a legacy properties marker (used to divide driver properties from provider properties) // Left for backward compatibility. Do not use it for new provider property names diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDataTypeProvider.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDataTypeProvider.java index 56574b7564fce7a49ad3f927cf5b828ff21a3a6f..d8ebc95a8e13ac7087c97566b318f8846d1fbbcc 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDataTypeProvider.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDataTypeProvider.java @@ -62,6 +62,13 @@ public interface DBPDataTypeProvider */ DBSDataType getLocalDataType(String typeName); + /** + * Gets data type with specified type id + * + * @return data type of null + */ + DBSDataType getLocalDataType(int typeID); + /** * Returns name of default data type for specified data kind * @param dataKind data kind diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/data/formatters/DateTimeDataFormatter.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/data/formatters/DateTimeDataFormatter.java index e726088a0ae7f17883033d62200fe63b4d53e38c..254d77c5283a61631648d888c62e789d277b7d5a 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/data/formatters/DateTimeDataFormatter.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/data/formatters/DateTimeDataFormatter.java @@ -48,7 +48,9 @@ public class DateTimeDataFormatter implements DBDDataFormatter { locale); buffer = new StringBuffer(); position = new FieldPosition(0); - dateTimeFormatter = DateTimeFormatter.ofPattern(pattern); + // DateTimeFormatter pattern for nanoseconds is "n" but old "f" (ExtendedDateFormat) + String java8DatePattern = pattern.replaceAll("f+", "n"); + dateTimeFormatter = DateTimeFormatter.ofPattern(java8DatePattern); } @Override diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java index 8ebc15de52342e2c0cffd081c942cf2640971d19..e49bd36e9a220885d2409736bc1b1ee0f378a1dc 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java @@ -37,6 +37,7 @@ import org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCFactoryDefault; import org.jkiss.dbeaver.model.messages.ModelMessages; import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.model.sql.SQLDataSource; import org.jkiss.dbeaver.model.sql.SQLDialect; import org.jkiss.dbeaver.model.sql.SQLState; @@ -191,7 +192,7 @@ public abstract class JDBCDataSource { // Use properties defined by datasource itself - Map internalProps = getInternalConnectionProperties(monitor, "Get connection prop[erties", connectionInfo); + Map internalProps = getInternalConnectionProperties(monitor, "Get connection properties", connectionInfo); if (internalProps != null) { connectProps.putAll(internalProps); } @@ -413,6 +414,22 @@ public abstract class JDBCDataSource return true; } + public boolean isDriverVersionAtLeast(int major, int minor) { + try { + Driver driver = getDriverInstance(new VoidProgressMonitor()); + int majorVersion = driver.getMajorVersion(); + if (majorVersion < major) { + return false; + } else if (majorVersion == major && driver.getMinorVersion() < minor) { + return false; + } + return true; + } catch (DBException e) { + log.debug("Can't obtain driver instance", e); + return false; + } + } + @NotNull @Override @Property(viewable = true, order = 1) @@ -550,6 +567,16 @@ public abstract class JDBCDataSource return getLocalDataType(typeFullName); } + @Override + public DBSDataType getLocalDataType(int typeID) { + for (DBSDataType dataType : getLocalDataTypes()) { + if (dataType.getTypeID() == typeID) { + return dataType; + } + } + return null; + } + @Override public String getDefaultDataTypeName(@NotNull DBPDataKind dataKind) { diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCBasicDataTypeCache.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCBasicDataTypeCache.java index 06eed6c61258a38af661108de341fc649ceb39fd..38449f7ea74b53c990081f239b2eda4550d2ac4c 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCBasicDataTypeCache.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCBasicDataTypeCache.java @@ -27,6 +27,7 @@ import org.jkiss.dbeaver.model.exec.jdbc.JDBCStatement; import org.jkiss.dbeaver.model.impl.jdbc.JDBCConstants; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; import org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCDataType; +import org.jkiss.dbeaver.model.struct.DBSDataType; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.utils.CommonUtils; @@ -74,6 +75,7 @@ public class JDBCBasicDataTypeCache DBDValueHandler keyValueHandler = DBUtils.findValueHandler(session, keyColumn); if (keyPattern != null) { - if (keyPattern instanceof CharSequence) { - if (((CharSequence)keyPattern).length() > 0) { - keyPattern = "%" + keyPattern.toString() + "%"; - } else { - keyPattern = null; - } - } else if (keyPattern instanceof Number) { + if (keyColumn.getDataKind() == DBPDataKind.NUMERIC || keyPattern instanceof Number) { // Subtract gap value to see some values before specified - int gapSize = maxResults / 2; + int gapSize = maxResults / 2; if (keyPattern instanceof Integer) { keyPattern = (Integer) keyPattern - gapSize; } else if (keyPattern instanceof Short) { @@ -170,10 +164,15 @@ public abstract class JDBCTableConstraint keyPattern = ((BigInteger) keyPattern).subtract(BigInteger.valueOf(gapSize)); } else if (keyPattern instanceof BigDecimal) { keyPattern = ((BigDecimal) keyPattern).subtract(new BigDecimal(gapSize)); + } else if (keyPattern instanceof String) { + keyPattern = Double.parseDouble((String) keyPattern) - gapSize; + } + } else if (keyPattern instanceof CharSequence) { + if (((CharSequence)keyPattern).length() > 0) { + keyPattern = "%" + keyPattern.toString() + "%"; + } else { + keyPattern = null; } - } else { - // not supported - keyPattern = null; } } diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/BasicSQLDialect.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/BasicSQLDialect.java index e4bed2ef170dfdb9780f04ae0257c6d1efb6634f..c1d84c72b895ab827a97cd47bd02cc6847ed587b 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/BasicSQLDialect.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/BasicSQLDialect.java @@ -49,7 +49,10 @@ public class BasicSQLDialect implements SQLDialect { }; private static final String[][] DEFAULT_BEGIN_END_BLOCK = new String[][]{ - {SQLConstants.BLOCK_BEGIN, SQLConstants.BLOCK_END} + { + SQLConstants.BLOCK_BEGIN, + SQLConstants.BLOCK_END + } }; protected static final String[] NON_TRANSACTIONAL_KEYWORDS = new String[]{ //SQLConstants.KEYWORD_SELECT, "WITH", diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/struct/SQLIndexManager.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/struct/SQLIndexManager.java index 28c4e876f921f1c6a5a59f1171b51715844fd556..f21c67f7af9ef296f175c4144f371f8d40d565cf 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/struct/SQLIndexManager.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/struct/SQLIndexManager.java @@ -112,7 +112,7 @@ public abstract class SQLIndexManager../../ org.jkiss.dbeaver.net.ssh.jsch - 1.0.5 + 1.0.6 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.net.ssh.sshj/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.net.ssh.sshj/META-INF/MANIFEST.MF index 3a9b47ce6d05ea8c6279c252fc214bac51e7c004..9c830dbb07fe2126d8b5c5310b5917689820b35b 100644 --- a/plugins/org.jkiss.dbeaver.net.ssh.sshj/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.net.ssh.sshj/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.net.ssh.sshj;singleton:=true -Bundle-Version: 1.0.5 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.6 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-ClassPath: . diff --git a/plugins/org.jkiss.dbeaver.net.ssh.sshj/pom.xml b/plugins/org.jkiss.dbeaver.net.ssh.sshj/pom.xml index df6b12b22d60f92035bee89a4ea8dd2b6e6cd67a..c20d8aa1dcfa8fa1ef5b86150a1a07c38c139ec7 100644 --- a/plugins/org.jkiss.dbeaver.net.ssh.sshj/pom.xml +++ b/plugins/org.jkiss.dbeaver.net.ssh.sshj/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.net.ssh.sshj - 1.0.5 + 1.0.6 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.net.ssh.ui/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.net.ssh.ui/META-INF/MANIFEST.MF index 51d6ab240aa7a503ab947cadc0c4539111248136..635f8bd0fa5237d7d807ba20e6c18d4e3e6b1999 100644 --- a/plugins/org.jkiss.dbeaver.net.ssh.ui/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.net.ssh.ui/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.net.ssh.ui;singleton:=true -Bundle-Version: 1.0.5 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.6 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-Activator: org.jkiss.dbeaver.ui.net.ssh.Activator diff --git a/plugins/org.jkiss.dbeaver.net.ssh.ui/pom.xml b/plugins/org.jkiss.dbeaver.net.ssh.ui/pom.xml index 4c6189821086ee4a4d54be329c241ba8410ce158..4fb5383e40a58f5d6ad9c32bc5628017f7a48d1f 100644 --- a/plugins/org.jkiss.dbeaver.net.ssh.ui/pom.xml +++ b/plugins/org.jkiss.dbeaver.net.ssh.ui/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.net.ssh.ui - 1.0.5 + 1.0.6 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.net.ssh.ui/src/org/jkiss/dbeaver/ui/net/ssh/SSHTunnelConfiguratorUI.java b/plugins/org.jkiss.dbeaver.net.ssh.ui/src/org/jkiss/dbeaver/ui/net/ssh/SSHTunnelConfiguratorUI.java index 4038e691e0890cb840f2017b5a7a4417b738d245..f335ff84829258ac75c457dc7658c9dbdc97fc39 100644 --- a/plugins/org.jkiss.dbeaver.net.ssh.ui/src/org/jkiss/dbeaver/ui/net/ssh/SSHTunnelConfiguratorUI.java +++ b/plugins/org.jkiss.dbeaver.net.ssh.ui/src/org/jkiss/dbeaver/ui/net/ssh/SSHTunnelConfiguratorUI.java @@ -25,7 +25,6 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration; import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration; import org.jkiss.dbeaver.model.net.ssh.SSHConstants; @@ -140,7 +139,7 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator { + UIUtils.runInProgressDialog(monitor -> { monitor.beginTask("Instantiate SSH tunnel", 2); SSHTunnelImpl tunnel = new SSHTunnelImpl(); DBPConnectionConfiguration connectionConfig = new DBPConnectionConfiguration(); @@ -282,7 +281,7 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator hostText.getParent().getParent().layout(true, true)); + UIUtils.asyncExec(() -> hostText.getParent().getParent().layout(true, true)); } @Override diff --git a/plugins/org.jkiss.dbeaver.net.ssh/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.net.ssh/META-INF/MANIFEST.MF index 8d60b281969081327c92e4ac96287b9c0003cb89..4cb146267b9b7920fa66df4e30d34c3be671ebfe 100644 --- a/plugins/org.jkiss.dbeaver.net.ssh/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.net.ssh/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.net.ssh;singleton:=true -Bundle-Version: 1.0.5 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.6 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Export-Package: org.jkiss.dbeaver.model.net.ssh, diff --git a/plugins/org.jkiss.dbeaver.net.ssh/pom.xml b/plugins/org.jkiss.dbeaver.net.ssh/pom.xml index 83ef1261e42fde340efb771fa58a4e1b6d044777..d8444a7f376a59452a391210a8999e2c61354a95 100644 --- a/plugins/org.jkiss.dbeaver.net.ssh/pom.xml +++ b/plugins/org.jkiss.dbeaver.net.ssh/pom.xml @@ -10,7 +10,7 @@ ../../ org.jkiss.dbeaver.net.ssh - 1.0.5 + 1.0.6 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.runtime.ide.core/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.runtime.ide.core/META-INF/MANIFEST.MF index cc4e316abbe54a2ee948ed54cfc6455e27ecdf61..2a4ade2c49eb6d73c2f36cb00547fb6354ccdc92 100644 --- a/plugins/org.jkiss.dbeaver.runtime.ide.core/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.runtime.ide.core/META-INF/MANIFEST.MF @@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.runtime.ide.core;singleton:=true -Bundle-Version: 2.1.6 -Bundle-Release-Date: 20180528 +Bundle-Version: 2.1.7 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.core.runtime;visibility:=reexport, org.eclipse.core.commands, diff --git a/plugins/org.jkiss.dbeaver.runtime.ide.core/pom.xml b/plugins/org.jkiss.dbeaver.runtime.ide.core/pom.xml index 87c58ab00b8ea0d1f4d4f43343b8c09615a482ae..cfd33a47e868fc62c75ff01e52d69a1b244a044b 100644 --- a/plugins/org.jkiss.dbeaver.runtime.ide.core/pom.xml +++ b/plugins/org.jkiss.dbeaver.runtime.ide.core/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.runtime.ide.core - 2.1.6 + 2.1.7 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.runtime.ide.core/src/org/jkiss/dbeaver/runtime/internal/ide/core/CreateLinkedFoldersRunnable.java b/plugins/org.jkiss.dbeaver.runtime.ide.core/src/org/jkiss/dbeaver/runtime/internal/ide/core/CreateLinkedFoldersRunnable.java index 40da624dc926cc28dbcec61d0c61ad4dcda16ff9..04dd66ecb6d2e2b166c82c58770741b7df38b236 100644 --- a/plugins/org.jkiss.dbeaver.runtime.ide.core/src/org/jkiss/dbeaver/runtime/internal/ide/core/CreateLinkedFoldersRunnable.java +++ b/plugins/org.jkiss.dbeaver.runtime.ide.core/src/org/jkiss/dbeaver/runtime/internal/ide/core/CreateLinkedFoldersRunnable.java @@ -34,23 +34,34 @@ public class CreateLinkedFoldersRunnable extends CreateLinkedResourcesRunnable { } public String composeErrorMessage(IResource resource, Path... paths) { - String message = NLS.bind(IdeCoreMessages.CreateLinkedFolderRunnable_e_unable_to_link, resource, paths); - return message; + return NLS.bind(IdeCoreMessages.CreateLinkedFolderRunnable_e_unable_to_link, resource, paths); } @Override public String composeCancelMessage(IResource resource, Path path) { - String message = NLS.bind(IdeCoreMessages.CreateLinkedFolderRunnable_e_cancelled_link, resource, path); - return message; + return NLS.bind(IdeCoreMessages.CreateLinkedFolderRunnable_e_cancelled_link, resource, path); } @Override protected void createLink(IContainer container, Path path, int flags, IProgressMonitor monitor) throws CoreException { - String memberName = path.getFileName().toString(); + String memberName; + if (path.getFileName() == null) { + // #3565 - external folders don't have file name + // Get last part of full path. + String pathStr = path.toString().replace('\\', '/'); + while (pathStr.endsWith("/")) pathStr = pathStr.substring(0, pathStr.length() - 1); + int divPos = pathStr.lastIndexOf('/'); + if (divPos >= 0) { + pathStr = pathStr.substring(divPos + 1); + } + memberName = pathStr; + } else { + memberName = path.getFileName().toString(); + } org.eclipse.core.runtime.Path memberPath = new org.eclipse.core.runtime.Path(memberName); final IFolder linked = container.getFolder(memberPath); - linked.createLink(path.toUri(), IResource.NONE, monitor); + linked.createLink(path.toUri(), IResource.ALLOW_MISSING_LOCAL, monitor); } } diff --git a/plugins/org.jkiss.dbeaver.runtime.ide.ui/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.runtime.ide.ui/META-INF/MANIFEST.MF index adef3f7fa03f766e84dd0d766189086ea937a8e4..6a477527bc9f05d0c2fa5f86a6f2f0a1aafe3635 100644 --- a/plugins/org.jkiss.dbeaver.runtime.ide.ui/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.runtime.ide.ui/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.runtime.ide.ui -Bundle-Version: 1.1.6 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.1.7 +Bundle-Release-Date: 20180604 Bundle-Vendor: %Bundle-Vendor Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.core.runtime, diff --git a/plugins/org.jkiss.dbeaver.runtime.ide.ui/pom.xml b/plugins/org.jkiss.dbeaver.runtime.ide.ui/pom.xml index a14576cf67233a3300b6014887391c602383e4e7..1e3296491125e0223f6f9e5143c8fbfa89cc63db 100644 --- a/plugins/org.jkiss.dbeaver.runtime.ide.ui/pom.xml +++ b/plugins/org.jkiss.dbeaver.runtime.ide.ui/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.runtime.ide.ui - 1.1.6 + 1.1.7 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.test/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.test/META-INF/MANIFEST.MF index caa12212ee10b3e2fe9d29b4c8f7e58d458fb802..53206a1e811a7d704340b6a46ba79774c07e2e31 100644 --- a/plugins/org.jkiss.dbeaver.test/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.test/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Tester Plug-in Bundle-SymbolicName: org.jkiss.dbeaver.ext.test;singleton:=true -Bundle-Version: 1.0.88 -Bundle-Release-Date: 20180528 +Bundle-Version: 1.0.89 +Bundle-Release-Date: 20180604 Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.jkiss.dbeaver.core, diff --git a/plugins/org.jkiss.dbeaver.test/pom.xml b/plugins/org.jkiss.dbeaver.test/pom.xml index 59747dd983df244421b6ea9ae8318deda37e98d0..0e023405eabdc4e9b911a63c6888494769d179cb 100644 --- a/plugins/org.jkiss.dbeaver.test/pom.xml +++ b/plugins/org.jkiss.dbeaver.test/pom.xml @@ -10,6 +10,6 @@ org.jkiss.dbeaver org.jkiss.dbeaver.ext.test - 1.0.88 + 1.0.89 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.test/src/org/jkiss/dbeaver/ext/test/handlers/HandlerObjectValidate.java b/plugins/org.jkiss.dbeaver.test/src/org/jkiss/dbeaver/ext/test/handlers/HandlerObjectValidate.java index 88041ad8fd94dcd557b0bdf15dd34929f37204b8..5e358fa95ae17d07b7584b31a0b05584988e7ece 100644 --- a/plugins/org.jkiss.dbeaver.test/src/org/jkiss/dbeaver/ext/test/handlers/HandlerObjectValidate.java +++ b/plugins/org.jkiss.dbeaver.test/src/org/jkiss/dbeaver/ext/test/handlers/HandlerObjectValidate.java @@ -24,11 +24,11 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.handlers.HandlerUtil; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.UIUtils; import java.lang.reflect.InvocationTargetException; @@ -49,7 +49,7 @@ public class HandlerObjectValidate extends AbstractHandler { private void validateNode(Shell shell, DBNNode element) { try { - DBeaverUI.runInProgressService(new NodeValidator(element)); + UIUtils.runInProgressService(new NodeValidator(element)); } catch (InterruptedException e) { // skip } catch (InvocationTargetException e) { diff --git a/plugins/org.jkiss.dbeaver.ui/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ui/META-INF/MANIFEST.MF index f785293232adb7724a82e2afb75235e7b78b7ab1..156deebb1e3fb2d87fedf7bb819dc7d4e7bdcb4b 100644 --- a/plugins/org.jkiss.dbeaver.ui/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ui/META-INF/MANIFEST.MF @@ -3,14 +3,15 @@ Bundle-ManifestVersion: 2 Bundle-Vendor: %Bundle-Vendor Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.jkiss.dbeaver.ui;singleton:=true -Bundle-Version: 4.2.18 -Bundle-Release-Date: 20180528 +Bundle-Version: 4.2.19 +Bundle-Release-Date: 20180604 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Activator: org.jkiss.dbeaver.bundle.UIActivator Bundle-ActivationPolicy: lazy Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.expressions, org.eclipse.swt, + org.eclipse.core.resources, org.eclipse.jface, org.eclipse.jface.text, org.eclipse.ui, @@ -23,5 +24,7 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.mylyn.commons.notifications.ui, org.eclipse.mylyn.commons.workbench, org.jkiss.dbeaver.model -Export-Package: org.jkiss.dbeaver.ui, +Export-Package: org.jkiss.dbeaver.runtime, + org.jkiss.dbeaver.ui, + org.jkiss.dbeaver.ui.controls, org.jkiss.dbeaver.ui.notifications diff --git a/plugins/org.jkiss.dbeaver.ui/build.properties b/plugins/org.jkiss.dbeaver.ui/build.properties index 3c833df018f8d70ced93e47092c72a9f05b1bc58..0093450a4041cf9575812d033f1ce2de9f31fcf0 100644 --- a/plugins/org.jkiss.dbeaver.ui/build.properties +++ b/plugins/org.jkiss.dbeaver.ui/build.properties @@ -1,6 +1,7 @@ source.. = src/ output.. = target/classes/ bin.includes = .,\ + icons/,\ META-INF/,\ OSGI-INF/,\ plugin.xml diff --git a/plugins/org.jkiss.dbeaver.core/icons/actions/marketplace.png b/plugins/org.jkiss.dbeaver.ui/icons/actions/marketplace.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/actions/marketplace.png rename to plugins/org.jkiss.dbeaver.ui/icons/actions/marketplace.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/actions/marketplace@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/actions/marketplace@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/actions/marketplace@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/actions/marketplace@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/actions/object.png b/plugins/org.jkiss.dbeaver.ui/icons/actions/object.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/actions/object.png rename to plugins/org.jkiss.dbeaver.ui/icons/actions/object.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/actions/object_add.png b/plugins/org.jkiss.dbeaver.ui/icons/actions/object_add.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/actions/object_add.png rename to plugins/org.jkiss.dbeaver.ui/icons/actions/object_add.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/actions/object_delete.png b/plugins/org.jkiss.dbeaver.ui/icons/actions/object_delete.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/actions/object_delete.png rename to plugins/org.jkiss.dbeaver.ui/icons/actions/object_delete.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/actions/user.png b/plugins/org.jkiss.dbeaver.ui/icons/actions/user.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/actions/user.png rename to plugins/org.jkiss.dbeaver.ui/icons/actions/user.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/actions/user_add.png b/plugins/org.jkiss.dbeaver.ui/icons/actions/user_add.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/actions/user_add.png rename to plugins/org.jkiss.dbeaver.ui/icons/actions/user_add.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/actions/user_delete.png b/plugins/org.jkiss.dbeaver.ui/icons/actions/user_delete.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/actions/user_delete.png rename to plugins/org.jkiss.dbeaver.ui/icons/actions/user_delete.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/loading1.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/loading1.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/loading1.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/loading1.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/loading2.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/loading2.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/loading2.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/loading2.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/loading3.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/loading3.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/loading3.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/loading3.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/loading4.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/loading4.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/loading4.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/loading4.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_0.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_0.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_0.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_0.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_1.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_1.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_1.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_1.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_2.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_2.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_2.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_2.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_3.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_3.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_3.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_3.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_4.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_4.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_4.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_4.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_5.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_5.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_5.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_5.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_6.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_6.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_6.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_6.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_7.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_7.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_7.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_7.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_8.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_8.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_8.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_8.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/animation/progress_9.gif b/plugins/org.jkiss.dbeaver.ui/icons/animation/progress_9.gif similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/animation/progress_9.gif rename to plugins/org.jkiss.dbeaver.ui/icons/animation/progress_9.gif diff --git a/plugins/org.jkiss.dbeaver.core/icons/bookmark.png b/plugins/org.jkiss.dbeaver.ui/icons/bookmark.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/bookmark.png rename to plugins/org.jkiss.dbeaver.ui/icons/bookmark.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/bookmark@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/bookmark@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/bookmark@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/bookmark@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/bookmark_folder.png b/plugins/org.jkiss.dbeaver.ui/icons/bookmark_folder.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/bookmark_folder.png rename to plugins/org.jkiss.dbeaver.ui/icons/bookmark_folder.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/bookmark_folder@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/bookmark_folder@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/bookmark_folder@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/bookmark_folder@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/configuration.png b/plugins/org.jkiss.dbeaver.ui/icons/configuration.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/configuration.png rename to plugins/org.jkiss.dbeaver.ui/icons/configuration.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/configuration@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/configuration@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/configuration@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/configuration@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/connections.png b/plugins/org.jkiss.dbeaver.ui/icons/connections.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/connections.png rename to plugins/org.jkiss.dbeaver.ui/icons/connections.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/connections@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/connections@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/connections@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/connections@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/create.png b/plugins/org.jkiss.dbeaver.ui/icons/create.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/create.png rename to plugins/org.jkiss.dbeaver.ui/icons/create.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/create@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/create@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/create@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/create@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/database.png b/plugins/org.jkiss.dbeaver.ui/icons/database.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/database.png rename to plugins/org.jkiss.dbeaver.ui/icons/database.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/database@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/database@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/database@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/database@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/database_connect.png b/plugins/org.jkiss.dbeaver.ui/icons/database_connect.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/database_connect.png rename to plugins/org.jkiss.dbeaver.ui/icons/database_connect.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/database_connect@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/database_connect@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/database_connect@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/database_connect@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/database_navigator.png b/plugins/org.jkiss.dbeaver.ui/icons/database_navigator.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/database_navigator.png rename to plugins/org.jkiss.dbeaver.ui/icons/database_navigator.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/database_navigator@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/database_navigator@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/database_navigator@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/database_navigator@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/database_type.png b/plugins/org.jkiss.dbeaver.ui/icons/database_type.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/database_type.png rename to plugins/org.jkiss.dbeaver.ui/icons/database_type.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/database_type@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/database_type@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/database_type@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/database_type@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/databases.png b/plugins/org.jkiss.dbeaver.ui/icons/databases.png new file mode 100644 index 0000000000000000000000000000000000000000..acbaba458495015cb88e84d7c2e410469c8aa8c5 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/databases.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/databases@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/databases@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3e80c914878a691fadbf923c59ec24d88dab4d03 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/databases@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/dbeaver_logo_medium.png b/plugins/org.jkiss.dbeaver.ui/icons/dbeaver_logo_medium.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/dbeaver_logo_medium.png rename to plugins/org.jkiss.dbeaver.ui/icons/dbeaver_logo_medium.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/dbeaver_logo_small.png b/plugins/org.jkiss.dbeaver.ui/icons/dbeaver_logo_small.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/dbeaver_logo_small.png rename to plugins/org.jkiss.dbeaver.ui/icons/dbeaver_logo_small.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/dbeaver_logo_small@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/dbeaver_logo_small@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/dbeaver_logo_small@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/dbeaver_logo_small@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/dbeaver_perspective.png b/plugins/org.jkiss.dbeaver.ui/icons/dbeaver_perspective.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/dbeaver_perspective.png rename to plugins/org.jkiss.dbeaver.ui/icons/dbeaver_perspective.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/dbeaver_perspective@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/dbeaver_perspective@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/dbeaver_perspective@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/dbeaver_perspective@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/delete.png b/plugins/org.jkiss.dbeaver.ui/icons/delete.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/delete.png rename to plugins/org.jkiss.dbeaver.ui/icons/delete.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/delete@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/delete@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/delete@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/delete@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/driver_manager.png b/plugins/org.jkiss.dbeaver.ui/icons/driver_manager.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/driver_manager.png rename to plugins/org.jkiss.dbeaver.ui/icons/driver_manager.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/driver_manager@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/driver_manager@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/driver_manager@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/driver_manager@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/edit.png b/plugins/org.jkiss.dbeaver.ui/icons/edit.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/edit.png rename to plugins/org.jkiss.dbeaver.ui/icons/edit.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/edit@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/edit@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/edit@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/edit@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/compare.png b/plugins/org.jkiss.dbeaver.ui/icons/file/compare.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/compare.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/compare.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/compare@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/compare@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/compare@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/compare@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/export.png b/plugins/org.jkiss.dbeaver.ui/icons/file/export.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/export.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/export.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/export@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/export@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/export@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/export@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/file.png b/plugins/org.jkiss.dbeaver.ui/icons/file/file.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/file.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/file.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/file@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/file@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/file@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/file@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/folder_add.png b/plugins/org.jkiss.dbeaver.ui/icons/file/folder_add.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/folder_add.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/folder_add.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/folder_add@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/folder_add@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/folder_add@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/folder_add@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/import.png b/plugins/org.jkiss.dbeaver.ui/icons/file/import.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/import.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/import.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/import@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/import@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/import@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/import@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/link.png b/plugins/org.jkiss.dbeaver.ui/icons/file/link.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/link.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/link.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/link@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/link@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/link@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/link@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/load.png b/plugins/org.jkiss.dbeaver.ui/icons/file/load.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/load.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/load.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/load@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/load@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/load@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/load@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/reset.png b/plugins/org.jkiss.dbeaver.ui/icons/file/reset.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/reset.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/reset.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/reset@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/reset@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/reset@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/reset@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/save.png b/plugins/org.jkiss.dbeaver.ui/icons/file/save.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/save.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/save.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/save@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/save@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/save@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/save@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/save_as.png b/plugins/org.jkiss.dbeaver.ui/icons/file/save_as.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/save_as.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/save_as.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/save_as@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/save_as@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/save_as@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/save_as@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/saveall.png b/plugins/org.jkiss.dbeaver.ui/icons/file/saveall.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/saveall.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/saveall.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/file/saveall@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/file/saveall@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/file/saveall@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/file/saveall@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/link_to_editor.png b/plugins/org.jkiss.dbeaver.ui/icons/link_to_editor.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/link_to_editor.png rename to plugins/org.jkiss.dbeaver.ui/icons/link_to_editor.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/link_to_editor@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/link_to_editor@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/link_to_editor@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/link_to_editor@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/apache.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/apache.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/apache.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/apache.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/apache@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/apache@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/apache@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/apache@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_bottom.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_bottom.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_bottom.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_bottom.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_bottom@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_bottom@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_bottom@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_bottom@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_down.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_down.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_down.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_down.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_down@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_down@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_down@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_down@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_left.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_left.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_left.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_left.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_left@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_left@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_left@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_left@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_left_all.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_left_all.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_left_all.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_left_all.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_left_all@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_left_all@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_left_all@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_left_all@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_reset.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_reset.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_reset.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_reset.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_reset@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_reset@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_reset@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_reset@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_right.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_right.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_right.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_right.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_right@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_right@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_right@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_right@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_right_all.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_right_all.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_right_all.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_right_all.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_right_all@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_right_all@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_right_all@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_right_all@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_top.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_top.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_top.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_top.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_top@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_top@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_top@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_top@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_up.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_up.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_up.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_up.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/arrow_up@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_up@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/arrow_up@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/arrow_up@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/asterisk.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/asterisk.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/asterisk.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/asterisk.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/asterisk@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/asterisk@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/asterisk@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/asterisk@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/binary.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/binary.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb2fd0d3947ae99dcca83008b429806ebc7e682 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/binary.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/binary@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/binary@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1970c5dbd422bf9539910a21de9879aa60fe7351 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/binary@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/browser.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/browser.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/browser.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/browser.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/browser@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/browser@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/browser@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/browser@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/bullet_black.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_black.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/bullet_black.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_black.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/bullet_black@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_black@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/bullet_black@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_black@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/bullet_green.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_green.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/bullet_green.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_green.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/bullet_green@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_green@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/bullet_green@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_green@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/bullet_red.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_red.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/bullet_red.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_red.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/bullet_red@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_red@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/bullet_red@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_red@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/bullet_star.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_star.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/bullet_star.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_star.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/bullet_star@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_star@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/bullet_star@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/bullet_star@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/cancel.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/cancel.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/cancel.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/cancel.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/cancel@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/cancel@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/cancel@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/cancel@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/check.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/check.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/check.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/check.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/check2.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/check2.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/check2.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/check2.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/check2@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/check2@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/check2@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/check2@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/check@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/check@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/check@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/check@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/checked.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/checked.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/checked.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/checked.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/checked@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/checked@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/checked@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/checked@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/clock_play.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/clock_play.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/clock_play.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/clock_play.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/clock_play@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/clock_play@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/clock_play@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/clock_play@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/clock_stop.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/clock_stop.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/clock_stop.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/clock_stop.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/clock_stop@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/clock_stop@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/clock_stop@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/clock_stop@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/close.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/close.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/close.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/close.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/close@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/close@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/close@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/close@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/collapse.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/collapse.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/collapse.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/collapse.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/collapse@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/collapse@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/collapse@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/collapse@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/compile.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/compile.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/compile.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/compile.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/compile@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/compile@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/compile@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/compile@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/compile_log.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/compile_log.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/compile_log.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/compile_log.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/compile_log@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/compile_log@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/compile_log@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/compile_log@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/config_table.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/config_table.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/config_table.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/config_table.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/config_table@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/config_table@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/config_table@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/config_table@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/confirm.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/confirm.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/confirm.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/confirm.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/confirm@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/confirm@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/confirm@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/confirm@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/csv.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/csv.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/csv.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/csv.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/csv@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/csv@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/csv@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/csv@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/cursor.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/cursor.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/cursor.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/cursor.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/cursor@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/cursor@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/cursor@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/cursor@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/drop_down.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/drop_down.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/drop_down.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/drop_down.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/drop_down@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/drop_down@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/drop_down@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/drop_down@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/edit_column.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/edit_column.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/edit_column.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/edit_column.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/edit_column@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/edit_column@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/edit_column@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/edit_column@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/edit_database.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/edit_database.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/edit_database.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/edit_database.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/edit_database@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/edit_database@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/edit_database@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/edit_database@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/edit_table.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/edit_table.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/edit_table.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/edit_table.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/edit_table@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/edit_table@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/edit_table@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/edit_table@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/event.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/event.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/event.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/event.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/event@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/event@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/event@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/event@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/expand.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/expand.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/expand.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/expand.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/expand@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/expand@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/expand@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/expand@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_add.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_add.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_add.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_add.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_add@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_add@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_add@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_add@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_apply.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_apply.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_apply.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_apply.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_apply@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_apply@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_apply@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_apply@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_clipboard.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_clipboard.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_clipboard.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_clipboard.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_clipboard@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_clipboard@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_clipboard@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_clipboard@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_input.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_input.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_input.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_input.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_input@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_input@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_input@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_input@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_reset.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_reset.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_reset.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_reset.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_reset@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_reset@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_reset@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_reset@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_save.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_save.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_save.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_save.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_save@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_save@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_save@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_save@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_small.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_small.png new file mode 100644 index 0000000000000000000000000000000000000000..0cb97b55b76c99852ea15cc8b9ce070be63d3532 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_small.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_small@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_small@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d7853d8939b462ad6eb63460bdbb1e1ce1a6d4f0 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_small@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_value.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_value.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_value.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_value.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_value@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/filter_value@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/filter_value@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/filter_value@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/find.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/find.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/find.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/find.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/find@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/find@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/find@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/find@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/find_text.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/find_text.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/find_text.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/find_text.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/find_text@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/find_text@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/find_text@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/find_text@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/fit-window.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/fit-window.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/fit-window.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/fit-window.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/fit-window@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/fit-window@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/fit-window@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/fit-window@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/group_attributes.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/group_attributes.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/group_attributes.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/group_attributes.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/group_attributes@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/group_attributes@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/group_attributes@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/group_attributes@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/home.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/home.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/home.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/home.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/home@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/home@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/home@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/home@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/html.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/html.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/html.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/html.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/html@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/html@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/html@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/html@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/jar.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/jar.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/jar.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/jar.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/jar@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/jar@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/jar@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/jar@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/json.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/json.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/json.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/json.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/json@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/json@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/json@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/json@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/library.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/library.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/library.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/library.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/library@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/library@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/library@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/library@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/link.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/link.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/link.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/link.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/link2.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/link2.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/link2.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/link2.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/markdown.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/markdown.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/markdown.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/markdown.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/markdown@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/markdown@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/markdown@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/markdown@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/object_add.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/object_add.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/object_add.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/object_add.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/object_add@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/object_add@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/object_add@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/object_add@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/object_refresh.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/object_refresh.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/object_refresh.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/object_refresh.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/object_refresh@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/object_refresh@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/object_refresh@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/object_refresh@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/object_remove.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/object_remove.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/object_remove.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/object_remove.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/object_remove@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/object_remove@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/object_remove@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/object_remove@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/original-size.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/original-size.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/original-size.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/original-size.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/original-size@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/original-size@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/original-size@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/original-size@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/pages.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/pages.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/pages.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/pages.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/pages@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/pages@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/pages@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/pages@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/print.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/print.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/print.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/print.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/print@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/print@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/print@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/print@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/qm.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/qm.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/qm.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/qm.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/qm@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/qm@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/qm@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/qm@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/rotate.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/rotate.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/rotate.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/rotate.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/rotate@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/rotate@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/rotate@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/rotate@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/rotate_left.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/rotate_left.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/rotate_left.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/rotate_left.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/rotate_left@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/rotate_left@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/rotate_left@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/rotate_left@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/rotate_right.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/rotate_right.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/rotate_right.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/rotate_right.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/rotate_right@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/rotate_right@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/rotate_right@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/rotate_right@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/ruler_position.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/ruler_position.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/ruler_position.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/ruler_position.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/ruler_position@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/ruler_position@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/ruler_position@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/ruler_position@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/search.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/search.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/search.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/search.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/search@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/search@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/search@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/search@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/shell.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/shell.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/shell.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/shell.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/shell@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/shell@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/shell@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/shell@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/sort.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort.png new file mode 100644 index 0000000000000000000000000000000000000000..a140e8246c6b7fb6857e3431ccaa215493e1f012 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/sort@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1d94297cfc6113b44f25dadba8ca3ef333a2bd84 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_decrease.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_decrease.png new file mode 100644 index 0000000000000000000000000000000000000000..7563a378ec18d40decc36ce321059b4dce9f8419 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_decrease.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_decrease@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_decrease@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3bdf742b8764abe560fb72bb0efa9ed5a320c0d7 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_decrease@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_increase.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_increase.png new file mode 100644 index 0000000000000000000000000000000000000000..77b794deedbc57d93d035555543489dac896d5ed Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_increase.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_increase@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_increase@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..69e46d483cce1a283dab2524eb48c29500c58f7d Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_increase@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sort_increase_1.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_increase_1.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/sort_increase_1.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/sort_increase_1.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_unknown.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8d1565eb4810fabc82c613ca3bab59d2927ec5 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_unknown.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_unknown@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_unknown@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7815511cb7b7f8ce73111408f58cec247dd56690 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/misc/sort_unknown@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sources.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sources.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/sources.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/sources.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sources@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sources@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/sources@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/sources@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sql.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sql.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/sql.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/sql.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/sql@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/sql@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/sql@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/sql@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/textfield.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/textfield.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/textfield.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/textfield.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/textfield@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/textfield@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/textfield@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/textfield@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/tools.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/tools.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/tools.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/tools.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/tools@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/tools@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/tools@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/tools@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/unchecked.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/unchecked.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/unchecked.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/unchecked.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/unchecked@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/unchecked@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/unchecked@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/unchecked@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/xml.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/xml.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/xml.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/xml.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/xml@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/xml@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/xml@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/xml@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/zoom.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/zoom.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/zoom.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/zoom.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/zoom@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/zoom@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/zoom@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/zoom@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/zoom_in.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/zoom_in.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/zoom_in.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/zoom_in.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/zoom_in@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/zoom_in@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/zoom_in@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/zoom_in@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/zoom_out.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/zoom_out.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/zoom_out.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/zoom_out.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/zoom_out@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/misc/zoom_out@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/misc/zoom_out@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/misc/zoom_out@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/picture.png b/plugins/org.jkiss.dbeaver.ui/icons/picture.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/picture.png rename to plugins/org.jkiss.dbeaver.ui/icons/picture.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/picture@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/picture@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/picture@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/picture@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/picture_save.png b/plugins/org.jkiss.dbeaver.ui/icons/picture_save.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/picture_save.png rename to plugins/org.jkiss.dbeaver.ui/icons/picture_save.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/picture_save@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/picture_save@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/picture_save@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/picture_save@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/project.png b/plugins/org.jkiss.dbeaver.ui/icons/project.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/project.png rename to plugins/org.jkiss.dbeaver.ui/icons/project.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/project@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/project@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/project@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/project@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/projects.png b/plugins/org.jkiss.dbeaver.ui/icons/projects.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/projects.png rename to plugins/org.jkiss.dbeaver.ui/icons/projects.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/projects@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/projects@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/projects@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/projects@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/properties.png b/plugins/org.jkiss.dbeaver.ui/icons/properties.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a098b0ccb3cb2bfa9cf204b089677626ba17a0 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/properties.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/properties@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/properties@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2d63b1cc334e28704b9e3f17524d6f763c356145 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/properties@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/refresh.png b/plugins/org.jkiss.dbeaver.ui/icons/refresh.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/refresh.png rename to plugins/org.jkiss.dbeaver.ui/icons/refresh.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/refresh@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/refresh@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/refresh@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/refresh@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/remove.png b/plugins/org.jkiss.dbeaver.ui/icons/remove.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/remove.png rename to plugins/org.jkiss.dbeaver.ui/icons/remove.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/remove@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/remove@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/remove@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/remove@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/scripts.png b/plugins/org.jkiss.dbeaver.ui/icons/scripts.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/scripts.png rename to plugins/org.jkiss.dbeaver.ui/icons/scripts.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/scripts@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/scripts@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/scripts@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/scripts@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/accept.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/accept.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/accept.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/accept.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/accept@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/accept@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/accept@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/accept@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/back.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/back.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/back.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/back.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/back@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/back@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/back@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/back@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/cancel.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/cancel.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/cancel.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/cancel.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/cancel@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/cancel@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/cancel@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/cancel@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/commit.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/commit.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/commit.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/commit.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/commit@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/commit@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/commit@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/commit@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/connect.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/connect.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/connect.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/connect.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/connect@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/connect@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/connect@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/connect@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/details.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/details.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/details.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/details.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/details@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/details@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/details@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/details@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/disconnect.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/disconnect.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/disconnect.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/disconnect.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/disconnect@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/disconnect@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/disconnect@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/disconnect@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/event.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/event.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/event.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/event.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/folder_link.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/folder_link.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/folder_link.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/folder_link.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/forward.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/forward.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/forward.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/forward.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/forward@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/forward@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/forward@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/forward@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/grid.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/grid.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/grid.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/grid.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/grid@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/grid@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/grid@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/grid@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_data_grid.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_data_grid.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_data_grid.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_data_grid.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_data_grid@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_data_grid@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_data_grid@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_data_grid@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_data_grid_locked.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_data_grid_locked.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_data_grid_locked.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_data_grid_locked.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_data_grid_locked@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_data_grid_locked@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_data_grid_locked@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_data_grid_locked@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_error.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_error.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_error.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_error.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_error@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_error@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_error@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_error@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_explain_plan.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_explain_plan.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_explain_plan.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_explain_plan.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_explain_plan@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_explain_plan@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_explain_plan@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_explain_plan@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_output.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_output.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_output.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_output.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_output@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_output@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_output@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_output@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_output_alert.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_output_alert.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_output_alert.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_output_alert.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_output_alert@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_output_alert@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_output_alert@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_output_alert@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_white.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_white.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_white.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_white.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/page_white@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/page_white@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/page_white@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/page_white@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/panel_aggregate.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_aggregate.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/panel_aggregate.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/panel_aggregate.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/panel_aggregate@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_aggregate@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/panel_aggregate@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/panel_aggregate@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/panel_customize.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_customize.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/panel_customize.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/panel_customize.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/panel_customize@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_customize@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/panel_customize@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/panel_customize@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_grouping.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_grouping.png new file mode 100644 index 0000000000000000000000000000000000000000..2183c226390d13cd988f93ac23fa35831395b9a7 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_grouping.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_grouping@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_grouping@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0dd4393e03ad260f47a8ca2deabf0a293e1ff36 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_grouping@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/panel_metadata.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_metadata.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/panel_metadata.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/panel_metadata.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/panel_metadata@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_metadata@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/panel_metadata@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/panel_metadata@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/panel_value.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_value.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/panel_value.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/panel_value.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/panel_value@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/panel_value@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/panel_value@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/panel_value@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/reconnect.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/reconnect.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/reconnect.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/reconnect.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/reconnect@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/reconnect@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/reconnect@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/reconnect@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_count.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_count.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_count.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_count.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_count@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_count@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_count@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_count@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_fetch_all.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_fetch_all.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_fetch_all.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_fetch_all.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_fetch_all@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_fetch_all@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_fetch_all@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_fetch_all@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_fetch_page.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_fetch_page.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_fetch_page.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_fetch_page.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_fetch_page@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_fetch_page@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_fetch_page@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_fetch_page@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_first.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_first.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_first.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_first.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_first@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_first@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_first@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_first@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_last.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_last.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_last.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_last.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_last@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_last@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_last@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_last@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_next.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_next.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_next.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_next.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_next@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_next@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_next@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_next@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_previous.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_previous.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_previous.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_previous.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_previous@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_previous@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_previous@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_previous@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_refresh.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_refresh.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_refresh.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_refresh.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/resultset_refresh@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_refresh@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/resultset_refresh@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/resultset_refresh@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/revert.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/revert.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/revert.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/revert.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/revert@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/revert@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/revert@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/revert@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/rollback.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/rollback.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/rollback.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/rollback.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/rollback@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/rollback@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/rollback@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/rollback@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/row_add.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/row_add.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/row_add.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/row_add.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/row_add@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/row_add@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/row_add@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/row_add@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/row_copy.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/row_copy.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/row_copy.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/row_copy.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/row_copy@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/row_copy@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/row_copy@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/row_copy@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/row_delete.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/row_delete.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/row_delete.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/row_delete.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/row_delete@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/row_delete@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/row_delete@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/row_delete@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/row_edit.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/row_edit.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/row_edit.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/row_edit.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/row_edit@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/row_edit@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/row_edit@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/row_edit@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/save_to_database.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/save_to_database.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/save_to_database.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/save_to_database.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/save_to_database@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/save_to_database@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/save_to_database@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/save_to_database@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_analyse.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_analyse.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_analyse.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_analyse.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_analyse@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_analyse@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_analyse@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_analyse@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_console.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_console.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_console.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_console.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_console@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_console@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_console@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_console@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_exec.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_exec.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_exec@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_exec@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec_new.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_exec_new.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec_new.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_exec_new.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec_new@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_exec_new@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec_new@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_exec_new@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_inspector.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_inspector.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_inspector.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_inspector.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_inspector@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_inspector@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_inspector@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_inspector@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_plan.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_plan.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_plan.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_plan.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_plan@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_plan@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_plan@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_plan@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_preview.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_preview.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_preview.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_preview.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_preview@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_preview@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_preview@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_preview@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script.png new file mode 100644 index 0000000000000000000000000000000000000000..1dbda3b042fa3e5c03a3365082b6dc8630d25b18 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2f13e34fcbfdc02c3492c9e0473438df278f4ef1 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_create.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_create.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_create.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_create.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_create@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_create@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_create@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_create@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_exec.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_exec.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_exec@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_exec@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_exec_new.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec_new.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_exec_new.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec_new.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_exec_new@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec_new@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_exec_new@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_exec_new@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_recent.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_recent.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_recent.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_recent.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_recent@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_recent@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_script_recent@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_script_recent@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_table.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_table.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_table.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_table.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_table@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_table@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_table@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_table@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_text.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_text.png new file mode 100644 index 0000000000000000000000000000000000000000..3e13ba1c09fd3d1d3464f7dacd520a04cfe6c933 Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_text.png differ diff --git a/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_text@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_text@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..302e101596c414c738fbdf67d5c9283aacff19eb Binary files /dev/null and b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_text@2x.png differ diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_validate.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_validate.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_validate.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_validate.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/sql_validate@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/sql_validate@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/sql_validate@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/sql_validate@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/table_export.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/table_export.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/table_export.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/table_export.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/table_export@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/table_export@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/table_export@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/table_export@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/table_import.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/table_import.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/table_import.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/table_import.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/table_import@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/table_import@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/table_import@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/table_import@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_auto.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_auto.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_auto.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_auto.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_auto@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_auto@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_auto@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_auto@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_config.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_config.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_config.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_config.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_config@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_config@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_config@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_config@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_config_2.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_config_2.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_config_2.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_config_2.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_config_2@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_config_2@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_config_2@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_config_2@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_log.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_log.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_log.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_log.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_log@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_log@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_log@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_log@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_manual.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_manual.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_manual.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_manual.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sql/txn_manual@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sql/txn_manual@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sql/txn_manual@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sql/txn_manual@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sync_connection.png b/plugins/org.jkiss.dbeaver.ui/icons/sync_connection.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sync_connection.png rename to plugins/org.jkiss.dbeaver.ui/icons/sync_connection.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/sync_connection@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/sync_connection@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/sync_connection@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/sync_connection@2x.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/table.png b/plugins/org.jkiss.dbeaver.ui/icons/table.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/table.png rename to plugins/org.jkiss.dbeaver.ui/icons/table.png diff --git a/plugins/org.jkiss.dbeaver.core/icons/table@2x.png b/plugins/org.jkiss.dbeaver.ui/icons/table@2x.png similarity index 100% rename from plugins/org.jkiss.dbeaver.core/icons/table@2x.png rename to plugins/org.jkiss.dbeaver.ui/icons/table@2x.png diff --git a/plugins/org.jkiss.dbeaver.ui/pom.xml b/plugins/org.jkiss.dbeaver.ui/pom.xml index 57ef53ac22f080a74b8df664008d25326c043109..02bc3893b6e837c16adef69c63d03296bc923f5d 100644 --- a/plugins/org.jkiss.dbeaver.ui/pom.xml +++ b/plugins/org.jkiss.dbeaver.ui/pom.xml @@ -9,6 +9,6 @@ ../../ org.jkiss.dbeaver.ui - 4.2.18 + 4.2.19 eclipse-plugin diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/DummyRunnableContext.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/runtime/DummyRunnableContext.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/DummyRunnableContext.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/runtime/DummyRunnableContext.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/RunnableContextDelegate.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/runtime/RunnableContextDelegate.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/RunnableContextDelegate.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/runtime/RunnableContextDelegate.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/AbstractUIJob.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/AbstractUIJob.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/AbstractUIJob.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/AbstractUIJob.java index f3410e86d95bb5a5cc5bbbcc4e910f7a0bebd12c..a26ba16a3b48b7f196140ec5a2a2ba4fc124d33f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/AbstractUIJob.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/AbstractUIJob.java @@ -1,46 +1,46 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.ui.progress.UIJob; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; -import org.jkiss.dbeaver.utils.RuntimeUtils; - -/** - * Abstract Database Job - */ -public abstract class AbstractUIJob extends UIJob -{ - static protected final Log log = Log.getLog(AbstractUIJob.class); - - protected AbstractUIJob(String name) - { - super(name); - } - - @Override - public IStatus runInUIThread(IProgressMonitor monitor) - { - return this.runInUIThread(RuntimeUtils.makeMonitor(monitor)); - } - - protected abstract IStatus runInUIThread(DBRProgressMonitor monitor); - +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.ui.progress.UIJob; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.utils.RuntimeUtils; + +/** + * Abstract Database Job + */ +public abstract class AbstractUIJob extends UIJob +{ + static protected final Log log = Log.getLog(AbstractUIJob.class); + + protected AbstractUIJob(String name) + { + super(name); + } + + @Override + public IStatus runInUIThread(IProgressMonitor monitor) + { + return this.runInUIThread(RuntimeUtils.makeMonitor(monitor)); + } + + protected abstract IStatus runInUIThread(DBRProgressMonitor monitor); + } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ActionUtils.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ActionUtils.java similarity index 97% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ActionUtils.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ActionUtils.java index 76b648bf3939597ba364684b8b528b6a75349fc5..bfc332b3189ccd8f6fdaab29a4c2f3e1cd925638 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ActionUtils.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ActionUtils.java @@ -1,305 +1,305 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.eclipse.core.commands.Command; -import org.eclipse.core.commands.ParameterizedCommand; -import org.eclipse.core.commands.common.NotDefinedException; -import org.eclipse.core.expressions.EvaluationContext; -import org.eclipse.core.expressions.IEvaluationContext; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.ActionContributionItem; -import org.eclipse.jface.action.ContributionItem; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.bindings.Binding; -import org.eclipse.jface.bindings.TriggerSequence; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.ui.*; -import org.eclipse.ui.commands.ICommandService; -import org.eclipse.ui.handlers.IHandlerService; -import org.eclipse.ui.keys.IBindingService; -import org.eclipse.ui.menus.CommandContributionItem; -import org.eclipse.ui.menus.CommandContributionItemParameter; -import org.eclipse.ui.services.IEvaluationService; -import org.eclipse.ui.services.IServiceLocator; -import org.jkiss.code.NotNull; -import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.model.DBPImage; - -/** - * Action utils - */ -public class ActionUtils -{ - private static final Log log = Log.getLog(ActionUtils.class); - - public static CommandContributionItem makeCommandContribution(@NotNull IServiceLocator serviceLocator, @NotNull String commandId) - { - return makeCommandContribution(serviceLocator, commandId, CommandContributionItem.STYLE_PUSH); - } - - public static CommandContributionItem makeCommandContribution(@NotNull IServiceLocator serviceLocator, @NotNull String commandId, int style) - { - return new CommandContributionItem(new CommandContributionItemParameter( - serviceLocator, - null, - commandId, - style)); - } - - public static CommandContributionItem makeCommandContribution(@NotNull IServiceLocator serviceLocator, @NotNull String commandId, int style, @Nullable DBPImage icon) - { - CommandContributionItemParameter parameters = new CommandContributionItemParameter( - serviceLocator, - null, - commandId, - style); - parameters.icon = DBeaverIcons.getImageDescriptor(icon); - return new CommandContributionItem(parameters); - } - - public static CommandContributionItem makeCommandContribution(IServiceLocator serviceLocator, String commandId, String name, DBPImage image) - { - return makeCommandContribution(serviceLocator, commandId, name, image, null, false); - } - - public static ContributionItem makeActionContribution( - @NotNull IAction action, - boolean showText) - { - ActionContributionItem item = new ActionContributionItem(action); - if (showText) { - item.setMode(ActionContributionItem.MODE_FORCE_TEXT); - } - return item; - } - - public static CommandContributionItem makeCommandContribution( - @NotNull IServiceLocator serviceLocator, - @NotNull String commandId, - @Nullable String name, - @Nullable DBPImage image, - @Nullable String toolTip, - boolean showText) - { - final CommandContributionItemParameter contributionParameters = new CommandContributionItemParameter( - serviceLocator, - null, - commandId, - null, - image == null ? null : DBeaverIcons.getImageDescriptor(image), - null, - null, - name, - null, - toolTip, - CommandContributionItem.STYLE_PUSH, - null, - false); - if (showText) { - contributionParameters.mode = CommandContributionItem.MODE_FORCE_TEXT; - } - return new CommandContributionItem(contributionParameters); - } - - public static boolean isCommandEnabled(String commandId, IWorkbenchPartSite site) - { - if (commandId != null && site != null) { - try { - //Command cmd = new Command(); - ICommandService commandService = site.getService(ICommandService.class); - if (commandService != null) { - Command command = commandService.getCommand(commandId); - return command != null && command.isEnabled(); - } - } catch (Exception e) { - log.error("Can't execute command '" + commandId + "'", e); - } - } - return false; - } - - @Nullable - public static String findCommandName(String commandId) - { - ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class); - if (commandService != null) { - Command command = commandService.getCommand(commandId); - if (command != null && command.isDefined()) { - try { - return command.getName(); - } catch (NotDefinedException e) { - log.debug(e); - } - } - } - return "???"; - } - - @Nullable - public static String findCommandDescription(String commandId, IServiceLocator serviceLocator, boolean shortcutOnly) - { - String commandName = null; - String shortcut = null; - ICommandService commandService = serviceLocator.getService(ICommandService.class); - if (commandService != null) { - Command command = commandService.getCommand(commandId); - if (command != null && command.isDefined()) { - try { - commandName = command.getName(); - } catch (NotDefinedException e) { - log.debug(e); - } - } - } - IBindingService bindingService = serviceLocator.getService(IBindingService.class); - if (bindingService != null) { - TriggerSequence sequence = null; - for (Binding b : bindingService.getBindings()) { - ParameterizedCommand parameterizedCommand = b.getParameterizedCommand(); - if (parameterizedCommand != null && commandId.equals(parameterizedCommand.getId())) { - sequence = b.getTriggerSequence(); - } - } - if (sequence == null) { - sequence = bindingService.getBestActiveBindingFor(commandId); - } - if (sequence != null) { - shortcut = sequence.format(); - } - } - if (shortcutOnly) { - return shortcut == null ? "?" : shortcut; - } - if (shortcut == null) { - return commandName; - } - if (commandName == null) { - return shortcut; - } - return commandName + " (" + shortcut + ")"; - } - - public static void runCommand(String commandId, IServiceLocator serviceLocator) - { - runCommand(commandId, null, serviceLocator); - } - - public static void runCommand(String commandId, ISelection selection, IServiceLocator serviceLocator) - { - if (commandId != null) { - try { - ICommandService commandService = serviceLocator.getService(ICommandService.class); - IHandlerService handlerService = serviceLocator.getService(IHandlerService.class); - if (commandService != null) { - Command command = commandService.getCommand(commandId); - boolean needContextPatch = false; - if (selection != null) { - needContextPatch = true; - if (serviceLocator instanceof IWorkbenchSite) { - final ISelection curSelection = ((IWorkbenchSite) serviceLocator).getSelectionProvider().getSelection(); - if (curSelection instanceof IStructuredSelection && selection instanceof IStructuredSelection) { - if (((IStructuredSelection) curSelection).size() == ((IStructuredSelection) selection).size() && - ((IStructuredSelection) curSelection).getFirstElement() == ((IStructuredSelection) selection).getFirstElement()) - { - // The same selection - needContextPatch = false; - } - } - } - } - if (selection != null && needContextPatch) { - // Create new eval context - IEvaluationContext context = new EvaluationContext( - handlerService.createContextSnapshot(false), selection); - if (serviceLocator instanceof IWorkbenchPartSite) { - context.addVariable(ISources.ACTIVE_PART_NAME, ((IWorkbenchPartSite) serviceLocator).getPart()); - } - context.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection); - - ParameterizedCommand pc = new ParameterizedCommand(command, null); - handlerService.executeCommandInContext(pc, null, context); - } else if (command != null) { - if (command.isEnabled()) { - handlerService.executeCommand(commandId, null); - } else { - log.warn("Command '" + commandId + "' is disabled"); - } - } else { - log.warn("Command '" + commandId + "' not found"); - } - } - } catch (Exception e) { - log.error("Can't execute command '" + commandId + "'", e); - } - } - } - - public static IAction makeAction( - @NotNull final IActionDelegate actionDelegate, - @Nullable IWorkbenchSite site, - @Nullable ISelection selection, - @Nullable String text, - @Nullable ImageDescriptor image, - @Nullable String toolTip) - { - Action actionImpl = new Action() { - @Override - public void run() { - actionDelegate.run(this); - } - }; - if (text != null) { - actionImpl.setText(text); - } - if (image != null) { - actionImpl.setImageDescriptor(image); - } - if (toolTip != null) { - actionImpl.setToolTipText(toolTip); - } - - actionDelegate.selectionChanged(actionImpl, selection); - - if (site != null) { - if (actionDelegate instanceof IObjectActionDelegate && site instanceof IWorkbenchPartSite) { - ((IObjectActionDelegate)actionDelegate).setActivePart(actionImpl, ((IWorkbenchPartSite) site).getPart()); - } else if (actionDelegate instanceof IWorkbenchWindowActionDelegate) { - ((IWorkbenchWindowActionDelegate)actionDelegate).init(site.getWorkbenchWindow()); - } - } - - return actionImpl; - } - - public static void evaluatePropertyState(String propertyName) - { - IEvaluationService service = PlatformUI.getWorkbench().getService(IEvaluationService.class); - if (service != null) { - try { - service.requestEvaluation(propertyName); - } catch (Exception e) { - log.warn("Error evaluating property [" + propertyName + "]"); - } - } - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +import org.eclipse.core.commands.Command; +import org.eclipse.core.commands.ParameterizedCommand; +import org.eclipse.core.commands.common.NotDefinedException; +import org.eclipse.core.expressions.EvaluationContext; +import org.eclipse.core.expressions.IEvaluationContext; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.ContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.bindings.Binding; +import org.eclipse.jface.bindings.TriggerSequence; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.*; +import org.eclipse.ui.commands.ICommandService; +import org.eclipse.ui.handlers.IHandlerService; +import org.eclipse.ui.keys.IBindingService; +import org.eclipse.ui.menus.CommandContributionItem; +import org.eclipse.ui.menus.CommandContributionItemParameter; +import org.eclipse.ui.services.IEvaluationService; +import org.eclipse.ui.services.IServiceLocator; +import org.jkiss.code.NotNull; +import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.DBPImage; + +/** + * Action utils + */ +public class ActionUtils +{ + private static final Log log = Log.getLog(ActionUtils.class); + + public static CommandContributionItem makeCommandContribution(@NotNull IServiceLocator serviceLocator, @NotNull String commandId) + { + return makeCommandContribution(serviceLocator, commandId, CommandContributionItem.STYLE_PUSH); + } + + public static CommandContributionItem makeCommandContribution(@NotNull IServiceLocator serviceLocator, @NotNull String commandId, int style) + { + return new CommandContributionItem(new CommandContributionItemParameter( + serviceLocator, + null, + commandId, + style)); + } + + public static CommandContributionItem makeCommandContribution(@NotNull IServiceLocator serviceLocator, @NotNull String commandId, int style, @Nullable DBPImage icon) + { + CommandContributionItemParameter parameters = new CommandContributionItemParameter( + serviceLocator, + null, + commandId, + style); + parameters.icon = DBeaverIcons.getImageDescriptor(icon); + return new CommandContributionItem(parameters); + } + + public static CommandContributionItem makeCommandContribution(IServiceLocator serviceLocator, String commandId, String name, DBPImage image) + { + return makeCommandContribution(serviceLocator, commandId, name, image, null, false); + } + + public static ContributionItem makeActionContribution( + @NotNull IAction action, + boolean showText) + { + ActionContributionItem item = new ActionContributionItem(action); + if (showText) { + item.setMode(ActionContributionItem.MODE_FORCE_TEXT); + } + return item; + } + + public static CommandContributionItem makeCommandContribution( + @NotNull IServiceLocator serviceLocator, + @NotNull String commandId, + @Nullable String name, + @Nullable DBPImage image, + @Nullable String toolTip, + boolean showText) + { + final CommandContributionItemParameter contributionParameters = new CommandContributionItemParameter( + serviceLocator, + null, + commandId, + null, + image == null ? null : DBeaverIcons.getImageDescriptor(image), + null, + null, + name, + null, + toolTip, + CommandContributionItem.STYLE_PUSH, + null, + false); + if (showText) { + contributionParameters.mode = CommandContributionItem.MODE_FORCE_TEXT; + } + return new CommandContributionItem(contributionParameters); + } + + public static boolean isCommandEnabled(String commandId, IWorkbenchPartSite site) + { + if (commandId != null && site != null) { + try { + //Command cmd = new Command(); + ICommandService commandService = site.getService(ICommandService.class); + if (commandService != null) { + Command command = commandService.getCommand(commandId); + return command != null && command.isEnabled(); + } + } catch (Exception e) { + log.error("Can't execute command '" + commandId + "'", e); + } + } + return false; + } + + @Nullable + public static String findCommandName(String commandId) + { + ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class); + if (commandService != null) { + Command command = commandService.getCommand(commandId); + if (command != null && command.isDefined()) { + try { + return command.getName(); + } catch (NotDefinedException e) { + log.debug(e); + } + } + } + return "???"; + } + + @Nullable + public static String findCommandDescription(String commandId, IServiceLocator serviceLocator, boolean shortcutOnly) + { + String commandName = null; + String shortcut = null; + ICommandService commandService = serviceLocator.getService(ICommandService.class); + if (commandService != null) { + Command command = commandService.getCommand(commandId); + if (command != null && command.isDefined()) { + try { + commandName = command.getName(); + } catch (NotDefinedException e) { + log.debug(e); + } + } + } + IBindingService bindingService = serviceLocator.getService(IBindingService.class); + if (bindingService != null) { + TriggerSequence sequence = null; + for (Binding b : bindingService.getBindings()) { + ParameterizedCommand parameterizedCommand = b.getParameterizedCommand(); + if (parameterizedCommand != null && commandId.equals(parameterizedCommand.getId())) { + sequence = b.getTriggerSequence(); + } + } + if (sequence == null) { + sequence = bindingService.getBestActiveBindingFor(commandId); + } + if (sequence != null) { + shortcut = sequence.format(); + } + } + if (shortcutOnly) { + return shortcut == null ? "?" : shortcut; + } + if (shortcut == null) { + return commandName; + } + if (commandName == null) { + return shortcut; + } + return commandName + " (" + shortcut + ")"; + } + + public static void runCommand(String commandId, IServiceLocator serviceLocator) + { + runCommand(commandId, null, serviceLocator); + } + + public static void runCommand(String commandId, ISelection selection, IServiceLocator serviceLocator) + { + if (commandId != null) { + try { + ICommandService commandService = serviceLocator.getService(ICommandService.class); + IHandlerService handlerService = serviceLocator.getService(IHandlerService.class); + if (commandService != null) { + Command command = commandService.getCommand(commandId); + boolean needContextPatch = false; + if (selection != null) { + needContextPatch = true; + if (serviceLocator instanceof IWorkbenchSite) { + final ISelection curSelection = ((IWorkbenchSite) serviceLocator).getSelectionProvider().getSelection(); + if (curSelection instanceof IStructuredSelection && selection instanceof IStructuredSelection) { + if (((IStructuredSelection) curSelection).size() == ((IStructuredSelection) selection).size() && + ((IStructuredSelection) curSelection).getFirstElement() == ((IStructuredSelection) selection).getFirstElement()) + { + // The same selection + needContextPatch = false; + } + } + } + } + if (selection != null && needContextPatch) { + // Create new eval context + IEvaluationContext context = new EvaluationContext( + handlerService.createContextSnapshot(false), selection); + if (serviceLocator instanceof IWorkbenchPartSite) { + context.addVariable(ISources.ACTIVE_PART_NAME, ((IWorkbenchPartSite) serviceLocator).getPart()); + } + context.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection); + + ParameterizedCommand pc = new ParameterizedCommand(command, null); + handlerService.executeCommandInContext(pc, null, context); + } else if (command != null) { + if (command.isEnabled()) { + handlerService.executeCommand(commandId, null); + } else { + log.warn("Command '" + commandId + "' is disabled"); + } + } else { + log.warn("Command '" + commandId + "' not found"); + } + } + } catch (Exception e) { + log.error("Can't execute command '" + commandId + "'", e); + } + } + } + + public static IAction makeAction( + @NotNull final IActionDelegate actionDelegate, + @Nullable IWorkbenchSite site, + @Nullable ISelection selection, + @Nullable String text, + @Nullable ImageDescriptor image, + @Nullable String toolTip) + { + Action actionImpl = new Action() { + @Override + public void run() { + actionDelegate.run(this); + } + }; + if (text != null) { + actionImpl.setText(text); + } + if (image != null) { + actionImpl.setImageDescriptor(image); + } + if (toolTip != null) { + actionImpl.setToolTipText(toolTip); + } + + actionDelegate.selectionChanged(actionImpl, selection); + + if (site != null) { + if (actionDelegate instanceof IObjectActionDelegate && site instanceof IWorkbenchPartSite) { + ((IObjectActionDelegate)actionDelegate).setActivePart(actionImpl, ((IWorkbenchPartSite) site).getPart()); + } else if (actionDelegate instanceof IWorkbenchWindowActionDelegate) { + ((IWorkbenchWindowActionDelegate)actionDelegate).init(site.getWorkbenchWindow()); + } + } + + return actionImpl; + } + + public static void evaluatePropertyState(String propertyName) + { + IEvaluationService service = PlatformUI.getWorkbench().getService(IEvaluationService.class); + if (service != null) { + try { + service.requestEvaluation(propertyName); + } catch (Exception e) { + log.warn("Error evaluating property [" + propertyName + "]"); + } + } + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ClipboardData.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ClipboardData.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ClipboardData.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ClipboardData.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/CompositeSelectionProvider.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/CompositeSelectionProvider.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/CompositeSelectionProvider.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/CompositeSelectionProvider.java index 1ca5d03b882f8eca7ebf6c31327cec63437f4480..c43dcddbe1eb5f6315baaccbdea8a21b2b595dfa 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/CompositeSelectionProvider.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/CompositeSelectionProvider.java @@ -1,122 +1,122 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.viewers.*; -import org.eclipse.swt.events.FocusAdapter; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.widgets.Control; -import org.jkiss.utils.CommonUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * Composite selection provider - */ -public class CompositeSelectionProvider implements ISelectionProvider { - - private List listeners = new ArrayList<>(); - private ISelectionProvider provider; - private ISelection selection = StructuredSelection.EMPTY; - - public void trackProvider(final Control control, final ISelectionProvider selectionProvider) - { - control.addFocusListener(new FocusAdapter() { - @Override - public void focusGained(FocusEvent e) - { - setProvider(selectionProvider); - } - }); - } - - @Override - public void addSelectionChangedListener(ISelectionChangedListener listener) - { - listeners.add(listener); - } - - @Override - public void removeSelectionChangedListener(ISelectionChangedListener listener) - { - listeners.remove(listener); - } - - @Override - public ISelection getSelection() - { - ISelectionProvider cp = getProvider(); - if (cp != null) { - return cp.getSelection(); - } else { - return selection; - } - } - - @Override - public void setSelection(ISelection selection) - { - ISelectionProvider cp = getProvider(); - if (cp != null) { - cp.setSelection(selection); - } else { - this.selection = selection; - if (!CommonUtils.isEmpty(listeners)) { - SelectionChangedEvent event = new SelectionChangedEvent(this, selection); - for (ISelectionChangedListener listener : listeners) { - listener.selectionChanged(event); - } - } - } - } - - public ISelectionProvider getProvider() - { - return provider; - } - - public void setProvider(ISelectionProvider newProvider) - { - if (this.provider != newProvider){ - ISelection newSelection = null; - if (!CommonUtils.isEmpty(listeners)) { - if (this.provider != null){ - for (ISelectionChangedListener listener : listeners) { - this.provider.removeSelectionChangedListener(listener); - } - } - - if (newProvider != null) { - for (ISelectionChangedListener listener : listeners) { - newProvider.addSelectionChangedListener(listener); - } - - newSelection = newProvider.getSelection(); - } else { - newSelection = this.selection; - } - } - this.provider = newProvider; - - if (newSelection != null){ - //force a selection change event propagation - setSelection(newSelection); - } - } - } -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.viewers.*; +import org.eclipse.swt.events.FocusAdapter; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.widgets.Control; +import org.jkiss.utils.CommonUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * Composite selection provider + */ +public class CompositeSelectionProvider implements ISelectionProvider { + + private List listeners = new ArrayList<>(); + private ISelectionProvider provider; + private ISelection selection = StructuredSelection.EMPTY; + + public void trackProvider(final Control control, final ISelectionProvider selectionProvider) + { + control.addFocusListener(new FocusAdapter() { + @Override + public void focusGained(FocusEvent e) + { + setProvider(selectionProvider); + } + }); + } + + @Override + public void addSelectionChangedListener(ISelectionChangedListener listener) + { + listeners.add(listener); + } + + @Override + public void removeSelectionChangedListener(ISelectionChangedListener listener) + { + listeners.remove(listener); + } + + @Override + public ISelection getSelection() + { + ISelectionProvider cp = getProvider(); + if (cp != null) { + return cp.getSelection(); + } else { + return selection; + } + } + + @Override + public void setSelection(ISelection selection) + { + ISelectionProvider cp = getProvider(); + if (cp != null) { + cp.setSelection(selection); + } else { + this.selection = selection; + if (!CommonUtils.isEmpty(listeners)) { + SelectionChangedEvent event = new SelectionChangedEvent(this, selection); + for (ISelectionChangedListener listener : listeners) { + listener.selectionChanged(event); + } + } + } + } + + public ISelectionProvider getProvider() + { + return provider; + } + + public void setProvider(ISelectionProvider newProvider) + { + if (this.provider != newProvider){ + ISelection newSelection = null; + if (!CommonUtils.isEmpty(listeners)) { + if (this.provider != null){ + for (ISelectionChangedListener listener : listeners) { + this.provider.removeSelectionChangedListener(listener); + } + } + + if (newProvider != null) { + for (ISelectionChangedListener listener : listeners) { + newProvider.addSelectionChangedListener(listener); + } + + newSelection = newProvider.getSelection(); + } else { + newSelection = this.selection; + } + } + this.provider = newProvider; + + if (newSelection != null){ + //force a selection change event propagation + setSelection(newSelection); + } + } + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/CopyMode.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/CopyMode.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/CopyMode.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/CopyMode.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/CustomSelectionProvider.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/CustomSelectionProvider.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/CustomSelectionProvider.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/CustomSelectionProvider.java index e073fecaa867ba3873b7b5b21ed7490f0e4411df..db9f3d94a005e9391fb6bb2e18617e858d45a1d8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/CustomSelectionProvider.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/CustomSelectionProvider.java @@ -1,64 +1,64 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.viewers.*; - -import java.util.ArrayList; -import java.util.List; - -/** - * Composite selection provider - */ -public class CustomSelectionProvider implements ISelectionProvider { - - private List listeners = new ArrayList<>(); - private ISelection selection; - - public CustomSelectionProvider() - { - selection = new StructuredSelection(); - } - - @Override - public void addSelectionChangedListener(ISelectionChangedListener listener) - { - listeners.add(listener); - } - - @Override - public void removeSelectionChangedListener(ISelectionChangedListener listener) - { - listeners.remove(listener); - } - - @Override - public ISelection getSelection() - { - return selection; - } - - @Override - public void setSelection(ISelection selection) - { - this.selection = selection; - for (ISelectionChangedListener listener : listeners) { - listener.selectionChanged(new SelectionChangedEvent(this, selection)); - } - - } -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.viewers.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * Composite selection provider + */ +public class CustomSelectionProvider implements ISelectionProvider { + + private List listeners = new ArrayList<>(); + private ISelection selection; + + public CustomSelectionProvider() + { + selection = new StructuredSelection(); + } + + @Override + public void addSelectionChangedListener(ISelectionChangedListener listener) + { + listeners.add(listener); + } + + @Override + public void removeSelectionChangedListener(ISelectionChangedListener listener) + { + listeners.remove(listener); + } + + @Override + public ISelection getSelection() + { + return selection; + } + + @Override + public void setSelection(ISelection selection) + { + this.selection = selection; + for (ISelectionChangedListener listener : listeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DBIconBinary.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DBIconBinary.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DBIconBinary.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DBIconBinary.java index c108f692492891828721de22a9f8f927d27f74c4..856882b2f8766d425bae898db50e3e7e19a72cc0 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DBIconBinary.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DBIconBinary.java @@ -1,66 +1,66 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; -import org.jkiss.dbeaver.model.DBPImage; -import org.jkiss.utils.CommonUtils; - -/** - * Image with binary data - */ -public class DBIconBinary implements DBPImage -{ - private final String location; - private Image image; - private ImageDescriptor imageDescriptor; - - public DBIconBinary(final String location, final ImageData data) { - this.location = "binary:" + location; - this.image = new Image(null, data); - imageDescriptor = ImageDescriptor.createFromImageData(data); - } - - public Image getImage() { - return image; - } - - public ImageDescriptor getImageDescriptor() { - return imageDescriptor; - } - - @Override - public String getLocation() { - return location; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof DBIconBinary) { - return CommonUtils.equalObjects(location, ((DBIconBinary) obj).location); - } - return false; - } - - @Override - public String toString() { - return location; - } -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.jkiss.dbeaver.model.DBPImage; +import org.jkiss.utils.CommonUtils; + +/** + * Image with binary data + */ +public class DBIconBinary implements DBPImage +{ + private final String location; + private Image image; + private ImageDescriptor imageDescriptor; + + public DBIconBinary(final String location, final ImageData data) { + this.location = "binary:" + location; + this.image = new Image(null, data); + imageDescriptor = ImageDescriptor.createFromImageData(data); + } + + public Image getImage() { + return image; + } + + public ImageDescriptor getImageDescriptor() { + return imageDescriptor; + } + + @Override + public String getLocation() { + return location; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof DBIconBinary) { + return CommonUtils.equalObjects(location, ((DBIconBinary) obj).location); + } + return false; + } + + @Override + public String toString() { + return location; + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DBeaverIcons.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DBeaverIcons.java similarity index 97% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DBeaverIcons.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DBeaverIcons.java index 92d69cfce551d19f8619bf00b03db44200ffc0f4..89588ea65afb0b7083f82dce7225852a42cce24c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DBeaverIcons.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DBeaverIcons.java @@ -1,220 +1,220 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.widgets.Display; -import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.model.DBIconComposite; -import org.jkiss.dbeaver.model.DBPImage; - -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -/** - * DBeaverIcons - */ -public class DBeaverIcons -{ - private static final Log log = Log.getLog(DBeaverIcons.class); - - private static final boolean useLegacyOverlay; - - static { - boolean hasCachedImageDataProvider; - try { - Class.forName("org.eclipse.jface.resource.CompositeImageDescriptor$CachedImageDataProvider"); - hasCachedImageDataProvider = true; - } catch (ClassNotFoundException e) { - hasCachedImageDataProvider = false; - } - useLegacyOverlay = !hasCachedImageDataProvider; - } - - private static class IconDescriptor { - String id; - Image image; - ImageDescriptor imageDescriptor; - - IconDescriptor(String id, ImageDescriptor imageDescriptor) { - this.id = id; - this.image = imageDescriptor.createImage(false); - this.imageDescriptor = imageDescriptor; - } - IconDescriptor(String id, Image image) { - this.id = id; - this.image = image; - this.imageDescriptor = ImageDescriptor.createFromImage(image); - } - } - - private static Map imageMap = new HashMap<>(); - private static Map compositeMap = new HashMap<>(); - private static Image viewMenuImage; - - @NotNull - public static Image getImage(@NotNull DBPImage image) - { - if (image == null) { - return null; - } - if (image instanceof DBIconBinary) { - return ((DBIconBinary) image).getImage(); - } else { - IconDescriptor icon = getIconByLocation(image.getLocation()); - if (icon == null) { - throw new IllegalArgumentException("Image '" + image.getLocation() + "' not found"); - } else if (image instanceof DBIconComposite) { - return getCompositeIcon(icon, (DBIconComposite) image).image; - } else { - return icon.image; - } - } - } - - @NotNull - public static ImageDescriptor getImageDescriptor(@NotNull DBPImage image) - { - if (image == null) { - return null; - } - if (image instanceof DBIconBinary) { - return ((DBIconBinary) image).getImageDescriptor(); - } else { - IconDescriptor icon = getIconByLocation(image.getLocation()); - if (icon == null) { - throw new IllegalArgumentException("Image '" + image.getLocation() + "' not found"); - } else if (image instanceof DBIconComposite) { - return getCompositeIcon(icon, (DBIconComposite) image).imageDescriptor; - } else { - return icon.imageDescriptor; - } - } - } - - private static IconDescriptor getCompositeIcon(IconDescriptor mainIcon, DBIconComposite image) { - if (!image.hasOverlays()) { - return mainIcon; - } - String compositeId = mainIcon.id + "^" + - (image.getTopLeft() == null ? "" : image.getTopLeft().getLocation()) + "^" + - (image.getTopRight() == null ? "" : image.getTopRight().getLocation()) + "^" + - (image.getBottomLeft() == null ? "" : image.getBottomLeft().getLocation()) + "^" + - (image.getBottomRight() == null ? "" : image.getBottomRight().getLocation()); - IconDescriptor icon = compositeMap.get(compositeId); - if (icon == null) { - Image resultImage; - if (useLegacyOverlay) { - OverlayImageDescriptorLegacy ovrImage = new OverlayImageDescriptorLegacy(mainIcon.image.getImageData()); - if (image.getTopLeft() != null) - ovrImage.setTopLeft(new ImageDescriptor[]{getImageDescriptor(image.getTopLeft())}); - if (image.getTopRight() != null) - ovrImage.setTopRight(new ImageDescriptor[]{getImageDescriptor(image.getTopRight())}); - if (image.getBottomLeft() != null) - ovrImage.setBottomLeft(new ImageDescriptor[]{getImageDescriptor(image.getBottomLeft())}); - if (image.getBottomRight() != null) - ovrImage.setBottomRight(new ImageDescriptor[]{getImageDescriptor(image.getBottomRight())}); - resultImage = ovrImage.createImage(); - } else { - OverlayImageDescriptor ovrImage = new OverlayImageDescriptor(mainIcon.imageDescriptor); - if (image.getTopLeft() != null) - ovrImage.setTopLeft(new ImageDescriptor[]{getImageDescriptor(image.getTopLeft())}); - if (image.getTopRight() != null) - ovrImage.setTopRight(new ImageDescriptor[]{getImageDescriptor(image.getTopRight())}); - if (image.getBottomLeft() != null) - ovrImage.setBottomLeft(new ImageDescriptor[]{getImageDescriptor(image.getBottomLeft())}); - if (image.getBottomRight() != null) - ovrImage.setBottomRight(new ImageDescriptor[]{getImageDescriptor(image.getBottomRight())}); - resultImage = ovrImage.createImage(); - } - icon = new IconDescriptor(compositeId, resultImage); - compositeMap.put(compositeId, icon); - } - return icon; - } - - private static IconDescriptor getIconByLocation(String location) { - IconDescriptor icon = imageMap.get(location); - if (icon == null) { - try { - ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(new URL(location)); - icon = new IconDescriptor(location, imageDescriptor); - if (icon.image == null) { - log.warn("Bad image: " + location); - return null; - } else { - imageMap.put(location, icon); - } - } catch (Exception e) { - log.error(e); - return null; - } - } - return icon; - } - - public static synchronized Image getViewMenuImage() { - if (viewMenuImage == null) { - Display d = Display.getCurrent(); - - Image viewMenu = new Image(d, 16, 16); - Image viewMenuMask = new Image(d, 16, 16); - - Display display = Display.getCurrent(); - GC gc = new GC(viewMenu); - GC maskgc = new GC(viewMenuMask); - gc.setForeground(display - .getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW)); - gc.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND)); - - int[] shapeArray = new int[]{6, 3, 15, 3, 11, 7, 10, 7}; - gc.fillPolygon(shapeArray); - gc.drawPolygon(shapeArray); - - Color black = display.getSystemColor(SWT.COLOR_BLACK); - Color white = display.getSystemColor(SWT.COLOR_WHITE); - - maskgc.setBackground(black); - maskgc.fillRectangle(0, 0, 16, 16); - - maskgc.setBackground(white); - maskgc.setForeground(white); - maskgc.fillPolygon(shapeArray); - maskgc.drawPolygon(shapeArray); - gc.dispose(); - maskgc.dispose(); - - ImageData data = viewMenu.getImageData(); - data.transparentPixel = data.getPixel(0, 0); - - viewMenuImage = new Image(d, viewMenu.getImageData(), - viewMenuMask.getImageData()); - viewMenu.dispose(); - viewMenuMask.dispose(); - } - return viewMenuImage; - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.widgets.Display; +import org.jkiss.code.NotNull; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.DBIconComposite; +import org.jkiss.dbeaver.model.DBPImage; + +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +/** + * DBeaverIcons + */ +public class DBeaverIcons +{ + private static final Log log = Log.getLog(DBeaverIcons.class); + + private static final boolean useLegacyOverlay; + + static { + boolean hasCachedImageDataProvider; + try { + Class.forName("org.eclipse.jface.resource.CompositeImageDescriptor$CachedImageDataProvider"); + hasCachedImageDataProvider = true; + } catch (ClassNotFoundException e) { + hasCachedImageDataProvider = false; + } + useLegacyOverlay = !hasCachedImageDataProvider; + } + + private static class IconDescriptor { + String id; + Image image; + ImageDescriptor imageDescriptor; + + IconDescriptor(String id, ImageDescriptor imageDescriptor) { + this.id = id; + this.image = imageDescriptor.createImage(false); + this.imageDescriptor = imageDescriptor; + } + IconDescriptor(String id, Image image) { + this.id = id; + this.image = image; + this.imageDescriptor = ImageDescriptor.createFromImage(image); + } + } + + private static Map imageMap = new HashMap<>(); + private static Map compositeMap = new HashMap<>(); + private static Image viewMenuImage; + + @NotNull + public static Image getImage(@NotNull DBPImage image) + { + if (image == null) { + return null; + } + if (image instanceof DBIconBinary) { + return ((DBIconBinary) image).getImage(); + } else { + IconDescriptor icon = getIconByLocation(image.getLocation()); + if (icon == null) { + throw new IllegalArgumentException("Image '" + image.getLocation() + "' not found"); + } else if (image instanceof DBIconComposite) { + return getCompositeIcon(icon, (DBIconComposite) image).image; + } else { + return icon.image; + } + } + } + + @NotNull + public static ImageDescriptor getImageDescriptor(@NotNull DBPImage image) + { + if (image == null) { + return null; + } + if (image instanceof DBIconBinary) { + return ((DBIconBinary) image).getImageDescriptor(); + } else { + IconDescriptor icon = getIconByLocation(image.getLocation()); + if (icon == null) { + throw new IllegalArgumentException("Image '" + image.getLocation() + "' not found"); + } else if (image instanceof DBIconComposite) { + return getCompositeIcon(icon, (DBIconComposite) image).imageDescriptor; + } else { + return icon.imageDescriptor; + } + } + } + + private static IconDescriptor getCompositeIcon(IconDescriptor mainIcon, DBIconComposite image) { + if (!image.hasOverlays()) { + return mainIcon; + } + String compositeId = mainIcon.id + "^" + + (image.getTopLeft() == null ? "" : image.getTopLeft().getLocation()) + "^" + + (image.getTopRight() == null ? "" : image.getTopRight().getLocation()) + "^" + + (image.getBottomLeft() == null ? "" : image.getBottomLeft().getLocation()) + "^" + + (image.getBottomRight() == null ? "" : image.getBottomRight().getLocation()); + IconDescriptor icon = compositeMap.get(compositeId); + if (icon == null) { + Image resultImage; + if (useLegacyOverlay) { + OverlayImageDescriptorLegacy ovrImage = new OverlayImageDescriptorLegacy(mainIcon.image.getImageData()); + if (image.getTopLeft() != null) + ovrImage.setTopLeft(new ImageDescriptor[]{getImageDescriptor(image.getTopLeft())}); + if (image.getTopRight() != null) + ovrImage.setTopRight(new ImageDescriptor[]{getImageDescriptor(image.getTopRight())}); + if (image.getBottomLeft() != null) + ovrImage.setBottomLeft(new ImageDescriptor[]{getImageDescriptor(image.getBottomLeft())}); + if (image.getBottomRight() != null) + ovrImage.setBottomRight(new ImageDescriptor[]{getImageDescriptor(image.getBottomRight())}); + resultImage = ovrImage.createImage(); + } else { + OverlayImageDescriptor ovrImage = new OverlayImageDescriptor(mainIcon.imageDescriptor); + if (image.getTopLeft() != null) + ovrImage.setTopLeft(new ImageDescriptor[]{getImageDescriptor(image.getTopLeft())}); + if (image.getTopRight() != null) + ovrImage.setTopRight(new ImageDescriptor[]{getImageDescriptor(image.getTopRight())}); + if (image.getBottomLeft() != null) + ovrImage.setBottomLeft(new ImageDescriptor[]{getImageDescriptor(image.getBottomLeft())}); + if (image.getBottomRight() != null) + ovrImage.setBottomRight(new ImageDescriptor[]{getImageDescriptor(image.getBottomRight())}); + resultImage = ovrImage.createImage(); + } + icon = new IconDescriptor(compositeId, resultImage); + compositeMap.put(compositeId, icon); + } + return icon; + } + + private static IconDescriptor getIconByLocation(String location) { + IconDescriptor icon = imageMap.get(location); + if (icon == null) { + try { + ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(new URL(location)); + icon = new IconDescriptor(location, imageDescriptor); + if (icon.image == null) { + log.warn("Bad image: " + location); + return null; + } else { + imageMap.put(location, icon); + } + } catch (Exception e) { + log.error(e); + return null; + } + } + return icon; + } + + public static synchronized Image getViewMenuImage() { + if (viewMenuImage == null) { + Display d = Display.getCurrent(); + + Image viewMenu = new Image(d, 16, 16); + Image viewMenuMask = new Image(d, 16, 16); + + Display display = Display.getCurrent(); + GC gc = new GC(viewMenu); + GC maskgc = new GC(viewMenuMask); + gc.setForeground(display + .getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW)); + gc.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND)); + + int[] shapeArray = new int[]{6, 3, 15, 3, 11, 7, 10, 7}; + gc.fillPolygon(shapeArray); + gc.drawPolygon(shapeArray); + + Color black = display.getSystemColor(SWT.COLOR_BLACK); + Color white = display.getSystemColor(SWT.COLOR_WHITE); + + maskgc.setBackground(black); + maskgc.fillRectangle(0, 0, 16, 16); + + maskgc.setBackground(white); + maskgc.setForeground(white); + maskgc.fillPolygon(shapeArray); + maskgc.drawPolygon(shapeArray); + gc.dispose(); + maskgc.dispose(); + + ImageData data = viewMenu.getImageData(); + data.transparentPixel = data.getPixel(0, 0); + + viewMenuImage = new Image(d, viewMenu.getImageData(), + viewMenuMask.getImageData()); + viewMenu.dispose(); + viewMenuMask.dispose(); + } + return viewMenuImage; + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DynamicFindReplaceTarget.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DynamicFindReplaceTarget.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DynamicFindReplaceTarget.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DynamicFindReplaceTarget.java index 00dbbd622befa9aed756a17b6289631e6c9fdff3..4177c33416419b85ff15c5b2c9265c0c20295370 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/DynamicFindReplaceTarget.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/DynamicFindReplaceTarget.java @@ -1,184 +1,184 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.text.IFindReplaceTarget; -import org.eclipse.jface.text.IFindReplaceTargetExtension; -import org.eclipse.jface.text.IFindReplaceTargetExtension3; -import org.eclipse.jface.text.IRegion; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Point; - -/** - * Composite find/replace target - */ -public class DynamicFindReplaceTarget implements IFindReplaceTarget, IFindReplaceTargetExtension, IFindReplaceTargetExtension3 { - - private IFindReplaceTarget target; - - public DynamicFindReplaceTarget() - { - } - - public IFindReplaceTarget getTarget() - { - return target; - } - - public void setTarget(IFindReplaceTarget target) - { - this.target = target; - } - - @Override - public boolean canPerformFind() - { - IFindReplaceTarget t = getTarget(); - return t != null && t.canPerformFind(); - } - - @Override - public int findAndSelect(int widgetOffset, String findString, boolean searchForward, boolean caseSensitive, boolean wholeWord) - { - IFindReplaceTarget t = getTarget(); - return t == null ? -1 : t.findAndSelect(widgetOffset, findString, searchForward, caseSensitive, wholeWord); - } - - @Override - public Point getSelection() - { - IFindReplaceTarget t = getTarget(); - return t == null ? new Point(0, 0) : t.getSelection(); - } - - @Override - public String getSelectionText() - { - IFindReplaceTarget t = getTarget(); - return t == null ? "" : t.getSelectionText(); - } - - @Override - public boolean isEditable() - { - IFindReplaceTarget t = getTarget(); - return t != null && t.isEditable(); - } - - @Override - public void replaceSelection(String text) - { - IFindReplaceTarget t = getTarget(); - if (t != null) { - t.replaceSelection(text); - } - } - - @Override - public void beginSession() - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension) { - ((IFindReplaceTargetExtension) t).beginSession(); - } - } - - @Override - public void endSession() - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension) { - ((IFindReplaceTargetExtension) t).endSession(); - } - } - - @Override - public IRegion getScope() - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension) { - return ((IFindReplaceTargetExtension) t).getScope(); - } - return null; - } - - @Override - public void setScope(IRegion scope) - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension) { - ((IFindReplaceTargetExtension) t).setScope(scope); - } - } - - @Override - public Point getLineSelection() - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension) { - return ((IFindReplaceTargetExtension) t).getLineSelection(); - } - return getSelection(); - } - - @Override - public void setSelection(int offset, int length) - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension) { - ((IFindReplaceTargetExtension) t).setSelection(offset, length); - } - } - - @Override - public void setScopeHighlightColor(Color color) - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension) { - ((IFindReplaceTargetExtension) t).setScopeHighlightColor(color); - } - } - - @Override - public void setReplaceAllMode(boolean replaceAll) - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension) { - ((IFindReplaceTargetExtension) t).setReplaceAllMode(replaceAll); - } - } - - @Override - public int findAndSelect(int offset, String findString, boolean searchForward, boolean caseSensitive, boolean wholeWord, boolean regExSearch) - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension3) { - return ((IFindReplaceTargetExtension3) t).findAndSelect(offset, findString, searchForward, caseSensitive, wholeWord, regExSearch); - } - return findAndSelect(offset, findString, searchForward, caseSensitive, wholeWord); - } - - @Override - public void replaceSelection(String text, boolean regExReplace) - { - IFindReplaceTarget t = getTarget(); - if (t instanceof IFindReplaceTargetExtension3) { - ((IFindReplaceTargetExtension3) t).replaceSelection(text, regExReplace); - } - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.text.IFindReplaceTarget; +import org.eclipse.jface.text.IFindReplaceTargetExtension; +import org.eclipse.jface.text.IFindReplaceTargetExtension3; +import org.eclipse.jface.text.IRegion; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Point; + +/** + * Composite find/replace target + */ +public class DynamicFindReplaceTarget implements IFindReplaceTarget, IFindReplaceTargetExtension, IFindReplaceTargetExtension3 { + + private IFindReplaceTarget target; + + public DynamicFindReplaceTarget() + { + } + + public IFindReplaceTarget getTarget() + { + return target; + } + + public void setTarget(IFindReplaceTarget target) + { + this.target = target; + } + + @Override + public boolean canPerformFind() + { + IFindReplaceTarget t = getTarget(); + return t != null && t.canPerformFind(); + } + + @Override + public int findAndSelect(int widgetOffset, String findString, boolean searchForward, boolean caseSensitive, boolean wholeWord) + { + IFindReplaceTarget t = getTarget(); + return t == null ? -1 : t.findAndSelect(widgetOffset, findString, searchForward, caseSensitive, wholeWord); + } + + @Override + public Point getSelection() + { + IFindReplaceTarget t = getTarget(); + return t == null ? new Point(0, 0) : t.getSelection(); + } + + @Override + public String getSelectionText() + { + IFindReplaceTarget t = getTarget(); + return t == null ? "" : t.getSelectionText(); + } + + @Override + public boolean isEditable() + { + IFindReplaceTarget t = getTarget(); + return t != null && t.isEditable(); + } + + @Override + public void replaceSelection(String text) + { + IFindReplaceTarget t = getTarget(); + if (t != null) { + t.replaceSelection(text); + } + } + + @Override + public void beginSession() + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension) { + ((IFindReplaceTargetExtension) t).beginSession(); + } + } + + @Override + public void endSession() + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension) { + ((IFindReplaceTargetExtension) t).endSession(); + } + } + + @Override + public IRegion getScope() + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension) { + return ((IFindReplaceTargetExtension) t).getScope(); + } + return null; + } + + @Override + public void setScope(IRegion scope) + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension) { + ((IFindReplaceTargetExtension) t).setScope(scope); + } + } + + @Override + public Point getLineSelection() + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension) { + return ((IFindReplaceTargetExtension) t).getLineSelection(); + } + return getSelection(); + } + + @Override + public void setSelection(int offset, int length) + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension) { + ((IFindReplaceTargetExtension) t).setSelection(offset, length); + } + } + + @Override + public void setScopeHighlightColor(Color color) + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension) { + ((IFindReplaceTargetExtension) t).setScopeHighlightColor(color); + } + } + + @Override + public void setReplaceAllMode(boolean replaceAll) + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension) { + ((IFindReplaceTargetExtension) t).setReplaceAllMode(replaceAll); + } + } + + @Override + public int findAndSelect(int offset, String findString, boolean searchForward, boolean caseSensitive, boolean wholeWord, boolean regExSearch) + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension3) { + return ((IFindReplaceTargetExtension3) t).findAndSelect(offset, findString, searchForward, caseSensitive, wholeWord, regExSearch); + } + return findAndSelect(offset, findString, searchForward, caseSensitive, wholeWord); + } + + @Override + public void replaceSelection(String text, boolean regExReplace) + { + IFindReplaceTarget t = getTarget(); + if (t instanceof IFindReplaceTargetExtension3) { + ((IFindReplaceTargetExtension3) t).replaceSelection(text, regExReplace); + } + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IActionConstants.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IActionConstants.java similarity index 97% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IActionConstants.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IActionConstants.java index 121d8f0768dc63b3c14d631158576529963dcb4b..eb7a4fca8bf61fea8aefcec37edaca8ed1c46c19 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IActionConstants.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IActionConstants.java @@ -1,47 +1,47 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -/** - * Action constants - */ -public interface IActionConstants { - - String LOG_VIEW_ID = "org.eclipse.pde.runtime.LogView"; //$NON-NLS-1$ - String HELP_VIEW_ID = "org.eclipse.help.ui.HelpView"; //$NON-NLS-1$ - - String M_DATABASE = "dataSourceMenu"; //$NON-NLS-1$ - String M_DRIVER_GROUP = "driverGroup"; //$NON-NLS-1$ - String M_CONNECTION_GROUP = "connectionGroup"; //$NON-NLS-1$ - String M_TOOLS_GROUP = "toolsGroup"; //$NON-NLS-1$ - String M_SESSION_GROUP = "sessionGroup"; //$NON-NLS-1$ - - String TOOLBAR_DATABASE = "dbeaver-general"; //$NON-NLS-1$ - String TOOLBAR_TXN = "dbeaver-transactions"; //$NON-NLS-1$ - String TOOLBAR_DATASOURCE = "datasource-settings"; //$NON-NLS-1$ - String TOOLBAR_EDIT = "dbeaver-edit"; //$NON-NLS-1$ - //String MENU_ID = "org.jkiss.dbeaver.core.navigationMenu"; - - String MB_ADDITIONS_END = "additions_end"; //$NON-NLS-1$ - String MB_ADDITIONS_PROPS = "additions_props"; //$NON-NLS-1$ - String MB_ADDITIONS_MIDDLE = "additions_middle"; //$NON-NLS-1$ - String MB_ADDITIONS_START = "additions_start"; //$NON-NLS-1$ - - String NEW_CONNECTION_POINT = "org.jkiss.dbeaver.ext.ui.newConnectionWizard"; //$NON-NLS-1$ - String EDIT_CONNECTION_POINT = "org.jkiss.dbeaver.ext.ui.editConnectionDialog"; //$NON-NLS-1$ -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +/** + * Action constants + */ +public interface IActionConstants { + + String LOG_VIEW_ID = "org.eclipse.pde.runtime.LogView"; //$NON-NLS-1$ + String HELP_VIEW_ID = "org.eclipse.help.ui.HelpView"; //$NON-NLS-1$ + + String M_DATABASE = "dataSourceMenu"; //$NON-NLS-1$ + String M_DRIVER_GROUP = "driverGroup"; //$NON-NLS-1$ + String M_CONNECTION_GROUP = "connectionGroup"; //$NON-NLS-1$ + String M_TOOLS_GROUP = "toolsGroup"; //$NON-NLS-1$ + String M_SESSION_GROUP = "sessionGroup"; //$NON-NLS-1$ + + String TOOLBAR_DATABASE = "dbeaver-general"; //$NON-NLS-1$ + String TOOLBAR_TXN = "dbeaver-transactions"; //$NON-NLS-1$ + String TOOLBAR_DATASOURCE = "datasource-settings"; //$NON-NLS-1$ + String TOOLBAR_EDIT = "dbeaver-edit"; //$NON-NLS-1$ + //String MENU_ID = "org.jkiss.dbeaver.core.navigationMenu"; + + String MB_ADDITIONS_END = "additions_end"; //$NON-NLS-1$ + String MB_ADDITIONS_PROPS = "additions_props"; //$NON-NLS-1$ + String MB_ADDITIONS_MIDDLE = "additions_middle"; //$NON-NLS-1$ + String MB_ADDITIONS_START = "additions_start"; //$NON-NLS-1$ + + String NEW_CONNECTION_POINT = "org.jkiss.dbeaver.ext.ui.newConnectionWizard"; //$NON-NLS-1$ + String EDIT_CONNECTION_POINT = "org.jkiss.dbeaver.ext.ui.editConnectionDialog"; //$NON-NLS-1$ +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IActiveWorkbenchPart.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IActiveWorkbenchPart.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IActiveWorkbenchPart.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IActiveWorkbenchPart.java index 0a8e279207598d4e27bc0604cbbef7fd98b61d36..689cd6bcd4e102a54716b63a9e7ba63a3d494dc9 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IActiveWorkbenchPart.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IActiveWorkbenchPart.java @@ -1,39 +1,39 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.eclipse.ui.IWorkbenchPart; - -/** - * Active workbench part - */ -public interface IActiveWorkbenchPart extends IWorkbenchPart -{ - /** - * Activates editor part. - * Called when part becomes active (visible). - */ - void activatePart(); - - /** - * Deactivates editor part. - * Called when part becomes inactive (invisible). - */ - void deactivatePart(); - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +import org.eclipse.ui.IWorkbenchPart; + +/** + * Active workbench part + */ +public interface IActiveWorkbenchPart extends IWorkbenchPart +{ + /** + * Activates editor part. + * Called when part becomes active (visible). + */ + void activatePart(); + + /** + * Deactivates editor part. + * Called when part becomes inactive (invisible). + */ + void deactivatePart(); + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IClipboardSource.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IClipboardSource.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IClipboardSource.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IClipboardSource.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ICommentsSupport.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ICommentsSupport.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ICommentsSupport.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ICommentsSupport.java index d97a98bfb7d8ef108e5ca7e61b1d3c167f103ecb..dde2f361b2769e9d6cf177cd3a7730229333f519 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ICommentsSupport.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ICommentsSupport.java @@ -1,41 +1,41 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.jkiss.code.Nullable; -import org.jkiss.utils.Pair; - -/** - * Comments manager. - *

- * Contains information about comments - */ -public interface ICommentsSupport { - /** - * Two-item array containing begin and end of multi-line comments. - * @return string array or null if multi-line comments are not supported - */ - @Nullable - Pair getMultiLineComments(); - - /** - * List of possible single-line comment prefixes - * @return comment prefixes or null if single line comments are nto supported - */ - String[] getSingleLineComments(); -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +import org.jkiss.code.Nullable; +import org.jkiss.utils.Pair; + +/** + * Comments manager. + *

+ * Contains information about comments + */ +public interface ICommentsSupport { + /** + * Two-item array containing begin and end of multi-line comments. + * @return string array or null if multi-line comments are not supported + */ + @Nullable + Pair getMultiLineComments(); + + /** + * List of possible single-line comment prefixes + * @return comment prefixes or null if single line comments are nto supported + */ + String[] getSingleLineComments(); +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ICompositeDialogPage.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ICompositeDialogPage.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ICompositeDialogPage.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ICompositeDialogPage.java index 750c02dd92ed58f8a0f2f3670cfe7375cbc98257..fca44806b50aa295e05f1e47330bdacd63748139 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ICompositeDialogPage.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ICompositeDialogPage.java @@ -1,31 +1,31 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.dialogs.IDialogPage; -import org.jkiss.code.Nullable; - -/** - * ICompositeDialogPage - */ -public interface ICompositeDialogPage extends IDialogPage -{ - @Nullable - IDialogPage[] getSubPages(); - +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.dialogs.IDialogPage; +import org.jkiss.code.Nullable; + +/** + * ICompositeDialogPage + */ +public interface ICompositeDialogPage extends IDialogPage +{ + @Nullable + IDialogPage[] getSubPages(); + } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditor.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditor.java index 0622213a671aecb244b9a2d499af3b1991be6c18..6c6afb32ff1be8dc24a97aaa76b55b9476ad5969 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditor.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditor.java @@ -1,36 +1,36 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.dialogs.IDialogPage; -import org.jkiss.dbeaver.model.DBPDataSourceContainer; - -/** - * IDataSourceConnectionEditor - */ -public interface IDataSourceConnectionEditor extends IDialogPage -{ - void setSite(IDataSourceConnectionEditorSite site); - - boolean isComplete(); - - void loadSettings(); - - void saveSettings(DBPDataSourceContainer dataSource); - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.dialogs.IDialogPage; +import org.jkiss.dbeaver.model.DBPDataSourceContainer; + +/** + * IDataSourceConnectionEditor + */ +public interface IDataSourceConnectionEditor extends IDialogPage +{ + void setSite(IDataSourceConnectionEditorSite site); + + boolean isComplete(); + + void loadSettings(); + + void saveSettings(DBPDataSourceContainer dataSource); + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditorSite.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditorSite.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditorSite.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditorSite.java index bdea24aa3339a481fca2bcdcd2c2897e11da6ef2..8f3c11c9bd13d583db794746c23990e4e6184560 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditorSite.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IDataSourceConnectionEditorSite.java @@ -1,50 +1,50 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.model.DBPDataSourceContainer; -import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry; -import org.jkiss.dbeaver.model.connection.DBPDriver; -import org.jkiss.dbeaver.model.runtime.DBRRunnableContext; - -/** - * IDataSourceConnectionEditorSite - */ -public interface IDataSourceConnectionEditorSite -{ - DBRRunnableContext getRunnableContext(); - - DBPDataSourceRegistry getDataSourceRegistry(); - - boolean isNew(); - - DBPDriver getDriver(); - - @NotNull - DBPDataSourceContainer getActiveDataSource(); - - void updateButtons(); - - boolean openDriverEditor(); - - boolean openSettingsPage(String pageId); - - void testConnection(); - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +import org.jkiss.code.NotNull; +import org.jkiss.dbeaver.model.DBPDataSourceContainer; +import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry; +import org.jkiss.dbeaver.model.connection.DBPDriver; +import org.jkiss.dbeaver.model.runtime.DBRRunnableContext; + +/** + * IDataSourceConnectionEditorSite + */ +public interface IDataSourceConnectionEditorSite +{ + DBRRunnableContext getRunnableContext(); + + DBPDataSourceRegistry getDataSourceRegistry(); + + boolean isNew(); + + DBPDriver getDriver(); + + @NotNull + DBPDataSourceContainer getActiveDataSource(); + + void updateButtons(); + + boolean openDriverEditor(); + + boolean openSettingsPage(String pageId); + + void testConnection(); + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IDataSourceConnectionTester.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IDataSourceConnectionTester.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IDataSourceConnectionTester.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IDataSourceConnectionTester.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IErrorVisualizer.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IErrorVisualizer.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IErrorVisualizer.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IErrorVisualizer.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IHelpContextIds.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IHelpContextIds.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IHelpContextIds.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IHelpContextIds.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ILabelProviderEx.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ILabelProviderEx.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ILabelProviderEx.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ILabelProviderEx.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ILazyLabelProvider.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ILazyLabelProvider.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ILazyLabelProvider.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ILazyLabelProvider.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IObjectPropertyConfigurator.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IObjectPropertyConfigurator.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IObjectPropertyConfigurator.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IObjectPropertyConfigurator.java index 185a23352df7b071b93310d62fc644db27244260..503d1e96ee26f252f14363a64e09eb043fc5f70b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IObjectPropertyConfigurator.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IObjectPropertyConfigurator.java @@ -1,34 +1,34 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.swt.widgets.Composite; - -/** - * IDataSourceConnectionEditor - */ -public interface IObjectPropertyConfigurator -{ - void createControl(Composite parent); - - void loadSettings(T configuration); - - void saveSettings(T configuration); - - boolean isComplete(); - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.swt.widgets.Composite; + +/** + * IDataSourceConnectionEditor + */ +public interface IObjectPropertyConfigurator +{ + void createControl(Composite parent); + + void loadSettings(T configuration); + + void saveSettings(T configuration); + + boolean isComplete(); + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IPropertyChangeReflector.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IPropertyChangeReflector.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IPropertyChangeReflector.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IPropertyChangeReflector.java index 45016385b5581d92b959b06048bbf82f7fa95765..b14322d041233d924ab24e2a647952ebbaf4f196 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IPropertyChangeReflector.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IPropertyChangeReflector.java @@ -1,27 +1,27 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -/** - * IPropertyChangeReflector - */ -public interface IPropertyChangeReflector { - - void handlePropertyChange(int propId); - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +/** + * IPropertyChangeReflector + */ +public interface IPropertyChangeReflector { + + void handlePropertyChange(int propId); + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IRefreshablePart.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IRefreshablePart.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IRefreshablePart.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IRefreshablePart.java index 3bd46872e1e146344c39fdc78a55adc862f10923..453264121248b5265b61d987597538c9a21c364a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IRefreshablePart.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IRefreshablePart.java @@ -1,26 +1,26 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -/** - * IRefreshablePart - */ -public interface IRefreshablePart -{ - void refreshPart(Object source, boolean force); +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +/** + * IRefreshablePart + */ +public interface IRefreshablePart +{ + void refreshPart(Object source, boolean force); } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISearchContextProvider.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISearchContextProvider.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISearchContextProvider.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISearchContextProvider.java index ef7cf1d1549ea2a11889efe13e7945a7544c9f85..e0be515ad8e6e38deb0975e450cb656ad2faaafc 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISearchContextProvider.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISearchContextProvider.java @@ -1,37 +1,37 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -/** - * ISearchContextProvider - */ -public interface ISearchContextProvider -{ - enum SearchType { - NONE, - NEXT, - PREVIOUS - } - - boolean isSearchPossible(); - - boolean isSearchEnabled(); - - boolean performSearch(SearchType searchType); - +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +/** + * ISearchContextProvider + */ +public interface ISearchContextProvider +{ + enum SearchType { + NONE, + NEXT, + PREVIOUS + } + + boolean isSearchPossible(); + + boolean isSearchEnabled(); + + boolean performSearch(SearchType searchType); + } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISearchExecutor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISearchExecutor.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISearchExecutor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISearchExecutor.java index 3439762321f311534725839f37f3b17eb6eacfee..b0838d223ac5a620790574421168b7e6b9175f2e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISearchExecutor.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISearchExecutor.java @@ -1,33 +1,33 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.ui; - -/** - * ISearchExecutor - */ -public interface ISearchExecutor -{ - int SEARCH_CASE_SENSITIVE = 1; - int SEARCH_NEXT = 2; - int SEARCH_PREVIOUS = 4; - - boolean performSearch(String searchString, int options); - - void cancelSearch(); - +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.ui; + +/** + * ISearchExecutor + */ +public interface ISearchExecutor +{ + int SEARCH_CASE_SENSITIVE = 1; + int SEARCH_NEXT = 2; + int SEARCH_PREVIOUS = 4; + + boolean performSearch(String searchString, int options); + + void cancelSearch(); + } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISingleControlEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISingleControlEditor.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISingleControlEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISingleControlEditor.java index a82ea64d7033c7619013feebf7d17cc453e620c3..47fe240e0e4c29bdc572cfa42db6ee20d5f3d9a0 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ISingleControlEditor.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ISingleControlEditor.java @@ -1,36 +1,36 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.IEditorPart; -import org.jkiss.code.Nullable; - -/** - * Editor with single main control. - * Usually used by editors represented by text of table/tree control. - */ -public interface ISingleControlEditor extends IEditorPart -{ - /** - * Gets main editor control - * @return control - */ - @Nullable - Control getEditorControl(); - +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.IEditorPart; +import org.jkiss.code.Nullable; + +/** + * Editor with single main control. + * Usually used by editors represented by text of table/tree control. + */ +public interface ISingleControlEditor extends IEditorPart +{ + /** + * Gets main editor control + * @return control + */ + @Nullable + Control getEditorControl(); + } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IWorkbenchWindowInitializer.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IWorkbenchWindowInitializer.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/IWorkbenchWindowInitializer.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/IWorkbenchWindowInitializer.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ImageUtils.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ImageUtils.java similarity index 98% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ImageUtils.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ImageUtils.java index 427b78affcbe18ce3c175cd9f0b78889070eb3bb..332fa44cf9d9e56ffc60bcb44422d2ed4e8e2289 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ImageUtils.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ImageUtils.java @@ -20,11 +20,7 @@ package org.jkiss.dbeaver.ui; import org.eclipse.core.runtime.Assert; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; -import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; /** * Image-related utils diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/OverlayImageDescriptor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/OverlayImageDescriptor.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/OverlayImageDescriptor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/OverlayImageDescriptor.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/OverlayImageDescriptorLegacy.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/OverlayImageDescriptorLegacy.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/OverlayImageDescriptorLegacy.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/OverlayImageDescriptorLegacy.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ProxyPageSite.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ProxyPageSite.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ProxyPageSite.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ProxyPageSite.java index fa0cc63206b895a1d79e84ee5fb3ad249f18240f..a907e0b2892e0829aed6fbbd326c8f5262fff2aa 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/ProxyPageSite.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/ProxyPageSite.java @@ -1,102 +1,102 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.*; -import org.eclipse.ui.part.IPageSite; - -/** -* ProxyPageSite -*/ -public class ProxyPageSite implements IPageSite { - - private final IWorkbenchPartSite partSite; - - public ProxyPageSite(IWorkbenchPartSite partSite) - { - this.partSite = partSite; - } - - @Override - public void registerContextMenu(String menuId, MenuManager menuManager, ISelectionProvider selectionProvider) - { - partSite.registerContextMenu(menuId, menuManager, selectionProvider); - } - - @Override - public IActionBars getActionBars() - { - if (partSite instanceof IEditorSite) { - return ((IEditorSite)partSite).getActionBars(); - } else if (partSite instanceof IViewSite) { - return ((IViewSite)partSite).getActionBars(); - } else { - return null; - } - } - - @Override - public IWorkbenchPage getPage() - { - return partSite.getPage(); - } - - @Override - public ISelectionProvider getSelectionProvider() - { - return partSite.getSelectionProvider(); - } - - @Override - public Shell getShell() - { - return partSite.getShell(); - } - - @Override - public IWorkbenchWindow getWorkbenchWindow() - { - return partSite.getWorkbenchWindow(); - } - - @Override - public void setSelectionProvider(ISelectionProvider provider) - { - partSite.setSelectionProvider(provider); - } - - @Override - public T getAdapter(Class adapter) - { - return partSite.getAdapter(adapter); - } - - @Override - public T getService(Class api) - { - return partSite.getService(api); - } - - @Override - public boolean hasService(Class api) - { - return partSite.hasService(api); - } -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.*; +import org.eclipse.ui.part.IPageSite; + +/** +* ProxyPageSite +*/ +public class ProxyPageSite implements IPageSite { + + private final IWorkbenchPartSite partSite; + + public ProxyPageSite(IWorkbenchPartSite partSite) + { + this.partSite = partSite; + } + + @Override + public void registerContextMenu(String menuId, MenuManager menuManager, ISelectionProvider selectionProvider) + { + partSite.registerContextMenu(menuId, menuManager, selectionProvider); + } + + @Override + public IActionBars getActionBars() + { + if (partSite instanceof IEditorSite) { + return ((IEditorSite)partSite).getActionBars(); + } else if (partSite instanceof IViewSite) { + return ((IViewSite)partSite).getActionBars(); + } else { + return null; + } + } + + @Override + public IWorkbenchPage getPage() + { + return partSite.getPage(); + } + + @Override + public ISelectionProvider getSelectionProvider() + { + return partSite.getSelectionProvider(); + } + + @Override + public Shell getShell() + { + return partSite.getShell(); + } + + @Override + public IWorkbenchWindow getWorkbenchWindow() + { + return partSite.getWorkbenchWindow(); + } + + @Override + public void setSelectionProvider(ISelectionProvider provider) + { + partSite.setSelectionProvider(provider); + } + + @Override + public T getAdapter(Class adapter) + { + return partSite.getAdapter(adapter); + } + + @Override + public T getService(Class api) + { + return partSite.getService(api); + } + + @Override + public boolean hasService(Class api) + { + return partSite.hasService(api); + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/SharedTextColors.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/SharedTextColors.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/SharedTextColors.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/SharedTextColors.java index 2b7fb6d320d153dbd272e42c95d734b8180bf552..1aa6a0ee017855a8a1f7720b973714e9fbc74b2f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/SharedTextColors.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/SharedTextColors.java @@ -1,120 +1,120 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.resource.StringConverter; -import org.eclipse.jface.text.source.ISharedTextColors; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; -import org.jkiss.code.NotNull; - -import java.util.HashMap; -import java.util.Map; - -public class SharedTextColors implements ISharedTextColors { - - public static final RGB COLOR_WARNING = new RGB(0xFF, 0x63, 0x47); - - /** - * The display table. - */ - private final Map> fDisplayTable = new HashMap<>(); - private final Map rgbMap = new HashMap<>(); - - public SharedTextColors() - { - super(); - } - - @NotNull - public Color getColor(String rgbString) - { - RGB rgb; - synchronized (rgbMap) { - rgb = rgbMap.get(rgbString); - if (rgb == null) { - rgb = StringConverter.asRGB(rgbString); - rgbMap.put(rgbString, rgb); - } - } - return getColor(rgb); - } - - @NotNull - @Override - public Color getColor(@NotNull RGB rgb) - { - Display display = Display.getCurrent(); - if (display == null) { - display = Display.getDefault(); - } - final Display curDisplay = display; - - Map colorTable; - synchronized (fDisplayTable) { - colorTable = fDisplayTable.get(display); - if (colorTable == null) { - colorTable = new HashMap<>(10); - fDisplayTable.put(curDisplay, colorTable); - display.disposeExec(new Runnable() { - @Override - public void run() { - dispose(curDisplay); - } - }); - } - } - - Color color = colorTable.get(rgb); - if (color == null) { - color = new Color(curDisplay, rgb); - colorTable.put(rgb, color); - } - - return color; - } - - @Override - public void dispose() - { - for (Map rgbColorMap : fDisplayTable.values()) { - dispose(rgbColorMap); - } - fDisplayTable.clear(); - } - - private void dispose(Display display) - { - if (fDisplayTable != null) { - dispose(fDisplayTable.remove(display)); - } - } - - private void dispose(Map colorTable) - { - if (colorTable == null) - return; - - for (Color color : colorTable.values()) { - color.dispose(); - } - - colorTable.clear(); - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.jface.resource.StringConverter; +import org.eclipse.jface.text.source.ISharedTextColors; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; +import org.jkiss.code.NotNull; + +import java.util.HashMap; +import java.util.Map; + +public class SharedTextColors implements ISharedTextColors { + + public static final RGB COLOR_WARNING = new RGB(0xFF, 0x63, 0x47); + + /** + * The display table. + */ + private final Map> fDisplayTable = new HashMap<>(); + private final Map rgbMap = new HashMap<>(); + + public SharedTextColors() + { + super(); + } + + @NotNull + public Color getColor(String rgbString) + { + RGB rgb; + synchronized (rgbMap) { + rgb = rgbMap.get(rgbString); + if (rgb == null) { + rgb = StringConverter.asRGB(rgbString); + rgbMap.put(rgbString, rgb); + } + } + return getColor(rgb); + } + + @NotNull + @Override + public Color getColor(@NotNull RGB rgb) + { + Display display = Display.getCurrent(); + if (display == null) { + display = Display.getDefault(); + } + final Display curDisplay = display; + + Map colorTable; + synchronized (fDisplayTable) { + colorTable = fDisplayTable.get(display); + if (colorTable == null) { + colorTable = new HashMap<>(10); + fDisplayTable.put(curDisplay, colorTable); + display.disposeExec(new Runnable() { + @Override + public void run() { + dispose(curDisplay); + } + }); + } + } + + Color color = colorTable.get(rgb); + if (color == null) { + color = new Color(curDisplay, rgb); + colorTable.put(rgb, color); + } + + return color; + } + + @Override + public void dispose() + { + for (Map rgbColorMap : fDisplayTable.values()) { + dispose(rgbColorMap); + } + fDisplayTable.clear(); + } + + private void dispose(Display display) + { + if (fDisplayTable != null) { + dispose(fDisplayTable.remove(display)); + } + } + + private void dispose(Map colorTable) + { + if (colorTable == null) + return; + + for (Color color : colorTable.values()) { + color.dispose(); + } + + colorTable.clear(); + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/TableToolTip.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/TableToolTip.java similarity index 97% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/TableToolTip.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/TableToolTip.java index f49d594102b7e465d4ef22d551226fcbd61ddda8..96b23397512e029781bc9b9b7e24f65f79fddef0 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/TableToolTip.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/TableToolTip.java @@ -1,123 +1,123 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.*; -import org.jkiss.utils.CommonUtils; - -/** - * Fake table tooltip provider - */ -public class TableToolTip { - - private final Table table; - - public TableToolTip(Table table) { - this.table = table; - applyCustomTolTips(); - } - - public void applyCustomTolTips() - { - // Disable native tooltip - table.setToolTipText (""); //$NON-NLS-1$ - - // Implement a "fake" tooltip - final Listener labelListener = new Listener () { - @Override - public void handleEvent (Event event) { - Label label = (Label)event.widget; - Shell shell = label.getShell (); - switch (event.type) { - case SWT.MouseExit: - shell.dispose (); - break; - } - } - }; - - Listener tableListener = new Listener () { - Shell tip = null; - Label label = null; - @Override - public void handleEvent (Event event) { - switch (event.type) { - case SWT.Dispose: - case SWT.KeyDown: - case SWT.MouseMove: { - if (tip == null) break; - tip.dispose (); - tip = null; - label = null; - break; - } - case SWT.MouseHover: { - Point eventPt = new Point(event.x, event.y); - TableItem item = table.getItem (eventPt); - int selectedColumn = -1; - if (item != null) { - int columnCount = table.getColumnCount(); - for (int i = 0; i < columnCount; i++) { - if (item.getBounds(i).contains(eventPt)) { - selectedColumn = i; - break; - } - } - } - - if (item != null && selectedColumn >= 0) { - String toolTip = getItemToolTip(item, selectedColumn); - if (toolTip != null) { - toolTip = toolTip.trim(); - } - if (!CommonUtils.isEmpty(toolTip)) { - if (tip != null && !tip.isDisposed ()) tip.dispose (); - tip = new Shell (table.getShell(), SWT.ON_TOP | SWT.NO_FOCUS | SWT.TOOL); - tip.setForeground (table.getDisplay().getSystemColor (SWT.COLOR_INFO_FOREGROUND)); - tip.setBackground (table.getDisplay().getSystemColor (SWT.COLOR_INFO_BACKGROUND)); - FillLayout layout = new FillLayout (); - layout.marginWidth = 2; - tip.setLayout (layout); - label = new Label (tip, SWT.NONE); - label.setForeground (table.getDisplay().getSystemColor (SWT.COLOR_INFO_FOREGROUND)); - label.setBackground (table.getDisplay().getSystemColor (SWT.COLOR_INFO_BACKGROUND)); - label.setText (toolTip); - label.addListener (SWT.MouseExit, labelListener); - Point size = tip.computeSize (SWT.DEFAULT, SWT.DEFAULT); - Point pt = table.toDisplay (event.x, event.y); - tip.setBounds (pt.x, pt.y + item.getBounds().height, size.x, size.y); - tip.setVisible (true); - } - } - } - } - } - }; - table.addListener (SWT.Dispose, tableListener); - table.addListener (SWT.KeyDown, tableListener); - table.addListener (SWT.MouseMove, tableListener); - table.addListener (SWT.MouseHover, tableListener); - } - - public String getItemToolTip(TableItem item, int selectedColumn) { - return item.getText(selectedColumn); - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.*; +import org.jkiss.utils.CommonUtils; + +/** + * Fake table tooltip provider + */ +public class TableToolTip { + + private final Table table; + + public TableToolTip(Table table) { + this.table = table; + applyCustomTolTips(); + } + + public void applyCustomTolTips() + { + // Disable native tooltip + table.setToolTipText (""); //$NON-NLS-1$ + + // Implement a "fake" tooltip + final Listener labelListener = new Listener () { + @Override + public void handleEvent (Event event) { + Label label = (Label)event.widget; + Shell shell = label.getShell (); + switch (event.type) { + case SWT.MouseExit: + shell.dispose (); + break; + } + } + }; + + Listener tableListener = new Listener () { + Shell tip = null; + Label label = null; + @Override + public void handleEvent (Event event) { + switch (event.type) { + case SWT.Dispose: + case SWT.KeyDown: + case SWT.MouseMove: { + if (tip == null) break; + tip.dispose (); + tip = null; + label = null; + break; + } + case SWT.MouseHover: { + Point eventPt = new Point(event.x, event.y); + TableItem item = table.getItem (eventPt); + int selectedColumn = -1; + if (item != null) { + int columnCount = table.getColumnCount(); + for (int i = 0; i < columnCount; i++) { + if (item.getBounds(i).contains(eventPt)) { + selectedColumn = i; + break; + } + } + } + + if (item != null && selectedColumn >= 0) { + String toolTip = getItemToolTip(item, selectedColumn); + if (toolTip != null) { + toolTip = toolTip.trim(); + } + if (!CommonUtils.isEmpty(toolTip)) { + if (tip != null && !tip.isDisposed ()) tip.dispose (); + tip = new Shell (table.getShell(), SWT.ON_TOP | SWT.NO_FOCUS | SWT.TOOL); + tip.setForeground (table.getDisplay().getSystemColor (SWT.COLOR_INFO_FOREGROUND)); + tip.setBackground (table.getDisplay().getSystemColor (SWT.COLOR_INFO_BACKGROUND)); + FillLayout layout = new FillLayout (); + layout.marginWidth = 2; + tip.setLayout (layout); + label = new Label (tip, SWT.NONE); + label.setForeground (table.getDisplay().getSystemColor (SWT.COLOR_INFO_FOREGROUND)); + label.setBackground (table.getDisplay().getSystemColor (SWT.COLOR_INFO_BACKGROUND)); + label.setText (toolTip); + label.addListener (SWT.MouseExit, labelListener); + Point size = tip.computeSize (SWT.DEFAULT, SWT.DEFAULT); + Point pt = table.toDisplay (event.x, event.y); + tip.setBounds (pt.x, pt.y + item.getBounds().height, size.x, size.y); + tip.setVisible (true); + } + } + } + } + } + }; + table.addListener (SWT.Dispose, tableListener); + table.addListener (SWT.KeyDown, tableListener); + table.addListener (SWT.MouseMove, tableListener); + table.addListener (SWT.MouseHover, tableListener); + } + + public String getItemToolTip(TableItem item, int selectedColumn) { + return item.getText(selectedColumn); + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIConfirmation.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIConfirmation.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIConfirmation.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIConfirmation.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIIcon.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIIcon.java similarity index 95% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIIcon.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIIcon.java index 86c249d58c821e6a79ee69931081b158a471e77e..f6fe3198703d474c2666d35e1e71367f0901db6e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIIcon.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIIcon.java @@ -1,198 +1,209 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.jkiss.dbeaver.model.DBIcon; - -/** - * UI Icons - */ -public class UIIcon { - - public static final DBIcon DBEAVER_LOGO = new DBIcon("dbeaver_logo", "dbeaver_logo_medium.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon DBEAVER_LOGO_SMALL = new DBIcon("dbeaver_logo_small", "dbeaver_logo_small.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon DBEAVER_MARKETPLACE = new DBIcon("dbeaver_marketplace", "actions/marketplace.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon DRAG_HANDLE = new DBIcon("dragHandle", "platform:/plugin/org.eclipse.platform/images/dragHandle.png"); - - public static final DBIcon LOADING1 = new DBIcon("loading1", "animation/loading1.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon LOADING2 = new DBIcon("loading2", "animation/loading2.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon LOADING3 = new DBIcon("loading3", "animation/loading3.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon LOADING4 = new DBIcon("loading4", "animation/loading4.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon PROGRESS0 = new DBIcon("progress0", "animation/progress_0.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS1 = new DBIcon("progress1", "animation/progress_1.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS2 = new DBIcon("progress2", "animation/progress_2.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS3 = new DBIcon("progress3", "animation/progress_3.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS4 = new DBIcon("progress4", "animation/progress_4.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS5 = new DBIcon("progress5", "animation/progress_5.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS6 = new DBIcon("progress6", "animation/progress_6.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS7 = new DBIcon("progress7", "animation/progress_7.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS8 = new DBIcon("progress8", "animation/progress_8.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROGRESS9 = new DBIcon("progress9", "animation/progress_9.gif"); //$NON-NLS-1$ //$NON-NLS-2$ - - - public static final DBIcon RS_REFRESH = new DBIcon("rs_refresh", "sql/resultset_refresh.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon RS_GRID = new DBIcon("rs_mode_grid", "sql/grid.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon RS_DETAILS = new DBIcon("rs_details", "sql/details.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon RS_FORWARD = new DBIcon("rs_forward", "sql/forward.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon RS_BACK = new DBIcon("rs_back", "sql/back.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon RS_SCHED_START = new DBIcon("rs_sched_start", "misc/clock_play.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon RS_SCHED_STOP = new DBIcon("rs_sched_stop", "misc/clock_stop.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon TXN_COMMIT = new DBIcon("txn_commit_auto", "sql/commit.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon TXN_ROLLBACK = new DBIcon("txn_commit_auto", "sql/rollback.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon TXN_COMMIT_AUTO = new DBIcon("txn_commit_auto", "sql/txn_auto.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon TXN_COMMIT_MANUAL = new DBIcon("txn_commit_manual", "sql/txn_manual.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon RULER_POSITION = new DBIcon("ruler_position", "misc/ruler_position.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FIND = new DBIcon("find", "misc/find.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FIND_TEXT = new DBIcon("find_text", "misc/find_text.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SEARCH = new DBIcon("search", "misc/search.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CHECK = new DBIcon("check", "misc/check.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CHECK2 = new DBIcon("check2", "misc/check.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CHECK_ON = new DBIcon("checked", "misc/checked.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CHECK_OFF = new DBIcon("unchecked", "misc/unchecked.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ZOOM = new DBIcon("zoom", "misc/zoom.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ZOOM_IN = new DBIcon("zoom_in", "misc/zoom_in.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ZOOM_OUT = new DBIcon("zoom_out", "misc/zoom_out.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ROTATE = new DBIcon("rotate", "misc/rotate.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ROTATE_LEFT = new DBIcon("rotate_left", "misc/rotate_left.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ROTATE_RIGHT = new DBIcon("rotate_right", "misc/rotate_right.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FIT_WINDOW = new DBIcon("fit_window", "misc/fit-window.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ORIGINAL_SIZE = new DBIcon("original_size", "misc/original-size.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ASTERISK = new DBIcon("asterisk", "misc/asterisk.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon DROP_DOWN = new DBIcon("drop_down", "misc/drop_down.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon BULLET_BLACK = new DBIcon("bullet_black", "misc/bullet_black.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon BULLET_GREEN = new DBIcon("bullet_green", "misc/bullet_green.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon BULLET_RED = new DBIcon("bullet_red", "misc/bullet_red.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon BULLET_STAR = new DBIcon("bullet_star", "misc/bullet_star.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon ARROW_TOP = new DBIcon("arrow_top", "misc/arrow_top.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ARROW_UP = new DBIcon("arrow_up", "misc/arrow_up.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ARROW_DOWN = new DBIcon("arrow_down", "misc/arrow_down.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ARROW_BOTTOM = new DBIcon("arrow_bottom", "misc/arrow_bottom.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ARROW_LEFT = new DBIcon("arrow_left", "misc/arrow_left.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ARROW_LEFT_ALL = new DBIcon("arrow_left_all", "misc/arrow_left_all.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ARROW_RIGHT = new DBIcon("arrow_right", "misc/arrow_right.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ARROW_RIGHT_ALL = new DBIcon("arrow_right_all", "misc/arrow_right_all.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ARROW_RESET = new DBIcon("arrow_reset", "misc/arrow_reset.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SORT_INCREASE = new DBIcon("sort_increase", "misc/sort_increase.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SORT_DECREASE = new DBIcon("sort_decrease", "misc/sort_decrease.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SORT_UNKNOWN = new DBIcon("sort_unknown", "misc/sort_unknown.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SORT = new DBIcon("sort", "misc/sort.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon FILTER = new DBIcon("filter", "misc/filter.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FILTER_VALUE = new DBIcon("filter_value", "misc/filter_value.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FILTER_INPUT = new DBIcon("filter_input", "misc/filter_input.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FILTER_CLIPBOARD = new DBIcon("filter_clipboard", "misc/filter_clipboard.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FILTER_APPLY = new DBIcon("filter_apply", "misc/filter_apply.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FILTER_RESET = new DBIcon("filter_reset", "misc/filter_reset.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon FILTER_SAVE = new DBIcon("filter_save", "misc/filter_save.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon EVENT = new DBIcon("event", "misc/event.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon HOME = new DBIcon("home", "misc/home.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon COMPILE = new DBIcon("compile", "misc/compile.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon COMPILE_LOG = new DBIcon("compile_log", "misc/compile_log.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SAVE = new DBIcon("save", "file/save.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SAVE_AS = new DBIcon("save_as", "file/save_as.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon LOAD = new DBIcon("load", "file/load.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon RESET = new DBIcon("reset", "file/reset.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon COMPARE = new DBIcon("compare", "file/compare.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ACCEPT = new DBIcon("accept", "sql/accept.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon REJECT = new DBIcon("reject", "sql/cancel.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon REVERT = new DBIcon("revert", "sql/revert.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon IMPORT = new DBIcon("import", "file/import.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon EXPORT = new DBIcon("export", "file/export.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon REFRESH = new DBIcon("refresh", "/refresh.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CONFIRM = new DBIcon("confirm", "misc/confirm.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CLOSE = new DBIcon("close", "misc/close.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon JAR = new DBIcon("jar", "misc/jar.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon LIBRARY = new DBIcon("library", "misc/library.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SOURCES = new DBIcon("sources", "misc/sources.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CANCEL = new DBIcon("cancel", "misc/cancel.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PRINT = new DBIcon("print", "misc/print.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon BROWSER = new DBIcon("browser", "misc/browser.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon ROW_ADD = new DBIcon("row_add", "sql/row_add.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ROW_COPY = new DBIcon("row_copy", "sql/row_copy.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ROW_EDIT = new DBIcon("row_edit", "sql/row_edit.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ROW_DELETE = new DBIcon("row_delete", "sql/row_delete.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon EDIT_DATABASE = new DBIcon("edit_database", "misc/edit_database.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon EDIT_TABLE = new DBIcon("edit_table", "misc/edit_table.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon EDIT_COLUMN = new DBIcon("edit_column", "misc/edit_column.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CONFIG_TABLE = new DBIcon("edit_table", "misc/config_table.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon OBJ_ADD = new DBIcon("object_add", "misc/object_add.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon OBJ_REMOVE = new DBIcon("object_remove", "misc/object_remove.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon OBJ_REFRESH = new DBIcon("object_refresh", "misc/object_refresh.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon GROUP_BY_ATTR = new DBIcon("group_attr", "misc/group_attributes.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon TREE_EXPAND = new DBIcon("expand", "misc/expand.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon TREE_COLLAPSE = new DBIcon("collapse", "misc/collapse.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon PROJECTS = new DBIcon("projects", "projects.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon DATABASES = new DBIcon("databases", "databases.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SCRIPTS = new DBIcon("scripts", "scripts.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon BOOKMARK_FOLDER = new DBIcon("bookmark_folder", "bookmark_folder.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon BOOKMARK = new DBIcon("bookmark", "bookmark.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PICTURE = new DBIcon("picture", "picture.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PICTURE_SAVE = new DBIcon("picture_save", "picture_save.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PROPERTIES = new DBIcon("properties", "properties.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CONFIGURATION = new DBIcon("configuration", "configuration.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon LINK_TO_EDITOR = new DBIcon("link_to_editor", "link_to_editor.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon LINK = new DBIcon("link", "misc/link.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon LINK2 = new DBIcon("link2", "misc/link2.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon CURSOR = new DBIcon("cursor", "misc/cursor.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon APACHE = new DBIcon("apache", "misc/apache.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon GEN_DATABASE = new DBIcon("gen_database", "database.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon GEN_DATABASE_TYPE = new DBIcon("gen_database_type", "database_type.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon SQL_CONNECT = new DBIcon("sql_connect", "sql/connect.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_DISCONNECT = new DBIcon("sql_disconnect", "sql/disconnect.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_SCRIPT = new DBIcon("sql_script", "sql/sql_script.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_CONSOLE = new DBIcon("sql_console", "sql/sql_console.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_EXECUTE = new DBIcon("sql_exec", "sql/sql_exec.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_SCRIPT_EXECUTE = new DBIcon("sql_script_exec", "sql/sql_script_exec.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_ANALYSE = new DBIcon("sql_analyse", "sql/sql_analyse.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_EXPLAIN_PLAN = new DBIcon("sql_explain", "sql/sql_plan.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_VALIDATE = new DBIcon("sql_validate", "sql/sql_validate.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_PREVIEW = new DBIcon("sql_preview", "sql/sql_preview.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon SQL_TEXT = new DBIcon("sql_text", "sql/sql_text.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon SAVE_TO_DATABASE = new DBIcon("save_to_db", "sql/save_to_database.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon PANEL_VALUE = new DBIcon("panel_value", "sql/panel_value.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PANEL_AGGREGATE = new DBIcon("panel_aggregate", "sql/panel_aggregate.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon PANEL_METADATA = new DBIcon("panel_metadata", "sql/panel_metadata.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon PAGES = new DBIcon("pages", "misc/pages.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon TEXTFIELD = new DBIcon("textfield", "misc/textfield.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon ACTION_USER = new DBIcon("action_user", "actions/user.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ACTION_USER_ADD = new DBIcon("action_user_add", "actions/user_add.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ACTION_USER_DELETE = new DBIcon("action_user_delete", "actions/user_delete.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - public static final DBIcon ACTION_OBJECT = new DBIcon("action_object", "actions/object.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ACTION_OBJECT_ADD = new DBIcon("action_object_add", "actions/object_add.png"); //$NON-NLS-1$ //$NON-NLS-2$ - public static final DBIcon ACTION_OBJECT_DELETE = new DBIcon("action_object_delete", "actions/object_delete.png"); //$NON-NLS-1$ //$NON-NLS-2$ - - static { - DBIcon.loadIcons(UIIcon.class); - } -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.swt.graphics.Image; +import org.jkiss.dbeaver.model.DBIcon; + +/** + * UI Icons + */ +public class UIIcon { + + public static final DBIcon DBEAVER_LOGO = new DBIcon("dbeaver_logo", "dbeaver_logo_medium.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon DBEAVER_LOGO_SMALL = new DBIcon("dbeaver_logo_small", "dbeaver_logo_small.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon DBEAVER_MARKETPLACE = new DBIcon("dbeaver_marketplace", "actions/marketplace.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon DRAG_HANDLE = new DBIcon("dragHandle", "platform:/plugin/org.eclipse.platform/images/dragHandle.png"); + + public static final DBIcon LOADING1 = new DBIcon("loading1", "animation/loading1.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon LOADING2 = new DBIcon("loading2", "animation/loading2.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon LOADING3 = new DBIcon("loading3", "animation/loading3.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon LOADING4 = new DBIcon("loading4", "animation/loading4.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon PROGRESS0 = new DBIcon("progress0", "animation/progress_0.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS1 = new DBIcon("progress1", "animation/progress_1.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS2 = new DBIcon("progress2", "animation/progress_2.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS3 = new DBIcon("progress3", "animation/progress_3.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS4 = new DBIcon("progress4", "animation/progress_4.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS5 = new DBIcon("progress5", "animation/progress_5.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS6 = new DBIcon("progress6", "animation/progress_6.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS7 = new DBIcon("progress7", "animation/progress_7.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS8 = new DBIcon("progress8", "animation/progress_8.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROGRESS9 = new DBIcon("progress9", "animation/progress_9.gif"); //$NON-NLS-1$ //$NON-NLS-2$ + + + public static final DBIcon RS_REFRESH = new DBIcon("rs_refresh", "sql/resultset_refresh.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon RS_GRID = new DBIcon("rs_mode_grid", "sql/grid.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon RS_DETAILS = new DBIcon("rs_details", "sql/details.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon RS_FORWARD = new DBIcon("rs_forward", "sql/forward.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon RS_BACK = new DBIcon("rs_back", "sql/back.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon RS_SCHED_START = new DBIcon("rs_sched_start", "misc/clock_play.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon RS_SCHED_STOP = new DBIcon("rs_sched_stop", "misc/clock_stop.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon TXN_COMMIT = new DBIcon("txn_commit_auto", "sql/commit.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon TXN_ROLLBACK = new DBIcon("txn_commit_auto", "sql/rollback.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon TXN_COMMIT_AUTO = new DBIcon("txn_commit_auto", "sql/txn_auto.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon TXN_COMMIT_MANUAL = new DBIcon("txn_commit_manual", "sql/txn_manual.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon RULER_POSITION = new DBIcon("ruler_position", "misc/ruler_position.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FIND = new DBIcon("find", "misc/find.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FIND_TEXT = new DBIcon("find_text", "misc/find_text.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SEARCH = new DBIcon("search", "misc/search.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CHECK = new DBIcon("check", "misc/check.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CHECK2 = new DBIcon("check2", "misc/check.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CHECK_ON = new DBIcon("checked", "misc/checked.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CHECK_OFF = new DBIcon("unchecked", "misc/unchecked.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ZOOM = new DBIcon("zoom", "misc/zoom.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ZOOM_IN = new DBIcon("zoom_in", "misc/zoom_in.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ZOOM_OUT = new DBIcon("zoom_out", "misc/zoom_out.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ROTATE = new DBIcon("rotate", "misc/rotate.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ROTATE_LEFT = new DBIcon("rotate_left", "misc/rotate_left.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ROTATE_RIGHT = new DBIcon("rotate_right", "misc/rotate_right.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FIT_WINDOW = new DBIcon("fit_window", "misc/fit-window.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ORIGINAL_SIZE = new DBIcon("original_size", "misc/original-size.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ASTERISK = new DBIcon("asterisk", "misc/asterisk.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon DROP_DOWN = new DBIcon("drop_down", "misc/drop_down.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon BULLET_BLACK = new DBIcon("bullet_black", "misc/bullet_black.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon BULLET_GREEN = new DBIcon("bullet_green", "misc/bullet_green.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon BULLET_RED = new DBIcon("bullet_red", "misc/bullet_red.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon BULLET_STAR = new DBIcon("bullet_star", "misc/bullet_star.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon ARROW_TOP = new DBIcon("arrow_top", "misc/arrow_top.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ARROW_UP = new DBIcon("arrow_up", "misc/arrow_up.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ARROW_DOWN = new DBIcon("arrow_down", "misc/arrow_down.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ARROW_BOTTOM = new DBIcon("arrow_bottom", "misc/arrow_bottom.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ARROW_LEFT = new DBIcon("arrow_left", "misc/arrow_left.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ARROW_LEFT_ALL = new DBIcon("arrow_left_all", "misc/arrow_left_all.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ARROW_RIGHT = new DBIcon("arrow_right", "misc/arrow_right.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ARROW_RIGHT_ALL = new DBIcon("arrow_right_all", "misc/arrow_right_all.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ARROW_RESET = new DBIcon("arrow_reset", "misc/arrow_reset.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SORT_INCREASE = new DBIcon("sort_increase", "misc/sort_increase.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SORT_DECREASE = new DBIcon("sort_decrease", "misc/sort_decrease.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SORT_UNKNOWN = new DBIcon("sort_unknown", "misc/sort_unknown.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SORT = new DBIcon("sort", "misc/sort.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon FILTER = new DBIcon("filter", "misc/filter.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FILTER_SMALL = new DBIcon("filter_small", "misc/filter_small.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FILTER_VALUE = new DBIcon("filter_value", "misc/filter_value.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FILTER_INPUT = new DBIcon("filter_input", "misc/filter_input.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FILTER_CLIPBOARD = new DBIcon("filter_clipboard", "misc/filter_clipboard.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FILTER_APPLY = new DBIcon("filter_apply", "misc/filter_apply.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FILTER_RESET = new DBIcon("filter_reset", "misc/filter_reset.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FILTER_SAVE = new DBIcon("filter_save", "misc/filter_save.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon EVENT = new DBIcon("event", "misc/event.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon HOME = new DBIcon("home", "misc/home.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon COMPILE = new DBIcon("compile", "misc/compile.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon COMPILE_LOG = new DBIcon("compile_log", "misc/compile_log.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SAVE = new DBIcon("save", "file/save.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SAVE_AS = new DBIcon("save_as", "file/save_as.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon LOAD = new DBIcon("load", "file/load.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon RESET = new DBIcon("reset", "file/reset.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon COMPARE = new DBIcon("compare", "file/compare.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ACCEPT = new DBIcon("accept", "sql/accept.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon REJECT = new DBIcon("reject", "sql/cancel.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon REVERT = new DBIcon("revert", "sql/revert.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon IMPORT = new DBIcon("import", "file/import.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon EXPORT = new DBIcon("export", "file/export.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon REFRESH = new DBIcon("refresh", "/refresh.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CONFIRM = new DBIcon("confirm", "misc/confirm.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CLOSE = new DBIcon("close", "misc/close.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon JAR = new DBIcon("jar", "misc/jar.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon LIBRARY = new DBIcon("library", "misc/library.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SOURCES = new DBIcon("sources", "misc/sources.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CANCEL = new DBIcon("cancel", "misc/cancel.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PRINT = new DBIcon("print", "misc/print.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon BROWSER = new DBIcon("browser", "misc/browser.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon ROW_ADD = new DBIcon("row_add", "sql/row_add.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ROW_COPY = new DBIcon("row_copy", "sql/row_copy.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ROW_EDIT = new DBIcon("row_edit", "sql/row_edit.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ROW_DELETE = new DBIcon("row_delete", "sql/row_delete.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon EDIT_DATABASE = new DBIcon("edit_database", "misc/edit_database.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon EDIT_TABLE = new DBIcon("edit_table", "misc/edit_table.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon EDIT_COLUMN = new DBIcon("edit_column", "misc/edit_column.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CONFIG_TABLE = new DBIcon("edit_table", "misc/config_table.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon OBJ_ADD = new DBIcon("object_add", "misc/object_add.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon OBJ_REMOVE = new DBIcon("object_remove", "misc/object_remove.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon OBJ_REFRESH = new DBIcon("object_refresh", "misc/object_refresh.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon GROUP_BY_ATTR = new DBIcon("group_attr", "misc/group_attributes.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon TREE_EXPAND = new DBIcon("expand", "misc/expand.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon TREE_COLLAPSE = new DBIcon("collapse", "misc/collapse.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon PROJECTS = new DBIcon("projects", "projects.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon DATABASES = new DBIcon("databases", "databases.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SCRIPTS = new DBIcon("scripts", "scripts.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon BOOKMARK_FOLDER = new DBIcon("bookmark_folder", "bookmark_folder.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon BOOKMARK = new DBIcon("bookmark", "bookmark.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PICTURE = new DBIcon("picture", "picture.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PICTURE_SAVE = new DBIcon("picture_save", "picture_save.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PROPERTIES = new DBIcon("properties", "properties.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CONFIGURATION = new DBIcon("configuration", "configuration.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon LINK_TO_EDITOR = new DBIcon("link_to_editor", "link_to_editor.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon LINK = new DBIcon("link", "misc/link.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon LINK2 = new DBIcon("link2", "misc/link2.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon CURSOR = new DBIcon("cursor", "misc/cursor.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon APACHE = new DBIcon("apache", "misc/apache.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon GEN_DATABASE = new DBIcon("gen_database", "database.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon GEN_DATABASE_TYPE = new DBIcon("gen_database_type", "database_type.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon SQL_CONNECT = new DBIcon("sql_connect", "sql/connect.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_DISCONNECT = new DBIcon("sql_disconnect", "sql/disconnect.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_SCRIPT = new DBIcon("sql_script", "sql/sql_script.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_CONSOLE = new DBIcon("sql_console", "sql/sql_console.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_EXECUTE = new DBIcon("sql_exec", "sql/sql_exec.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_SCRIPT_EXECUTE = new DBIcon("sql_script_exec", "sql/sql_script_exec.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_ANALYSE = new DBIcon("sql_analyse", "sql/sql_analyse.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_EXPLAIN_PLAN = new DBIcon("sql_explain", "sql/sql_plan.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_VALIDATE = new DBIcon("sql_validate", "sql/sql_validate.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_PREVIEW = new DBIcon("sql_preview", "sql/sql_preview.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon SQL_TEXT = new DBIcon("sql_text", "sql/sql_text.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon SQL_PAGE_DATA_GRID = new DBIcon("sql/page_data_grid.png"); //$NON-NLS-1$ + public static final DBIcon SQL_PAGE_DATA_GRID_LOCKED = new DBIcon("sql/page_data_grid_locked.png"); //$NON-NLS-1$ + public static final DBIcon SQL_PAGE_EXPLAIN_PLAN = new DBIcon("sql/page_explain_plan.png"); //$NON-NLS-1$ + public static final DBIcon SQL_PAGE_LOG = new DBIcon("sql/page_error.png"); //$NON-NLS-1$ + public static final DBIcon SQL_PAGE_OUTPUT = new DBIcon("sql/page_output.png"); //$NON-NLS-1$ + public static final DBIcon SQL_PAGE_OUTPUT_ALERT = new DBIcon("sql/page_output_alert.png"); //$NON-NLS-1$ + + public static final DBIcon SAVE_TO_DATABASE = new DBIcon("save_to_db", "sql/save_to_database.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon PANEL_VALUE = new DBIcon("panel_value", "sql/panel_value.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PANEL_AGGREGATE = new DBIcon("panel_aggregate", "sql/panel_aggregate.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon PANEL_METADATA = new DBIcon("panel_metadata", "sql/panel_metadata.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon PAGES = new DBIcon("pages", "misc/pages.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon TEXTFIELD = new DBIcon("textfield", "misc/textfield.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon ACTION_USER = new DBIcon("action_user", "actions/user.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ACTION_USER_ADD = new DBIcon("action_user_add", "actions/user_add.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ACTION_USER_DELETE = new DBIcon("action_user_delete", "actions/user_delete.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon ACTION_OBJECT = new DBIcon("action_object", "actions/object.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ACTION_OBJECT_ADD = new DBIcon("action_object_add", "actions/object_add.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon ACTION_OBJECT_DELETE = new DBIcon("action_object_delete", "actions/object_delete.png"); //$NON-NLS-1$ //$NON-NLS-2$ + + public static final DBIcon DRIVER_MANAGER = new DBIcon("driver_manager.png"); //$NON-NLS-1$ + + static { + DBIcon.loadIcons(UIIcon.class); + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UITask.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UITask.java similarity index 92% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UITask.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UITask.java index 00b086c51b5b457b37df4406f06bbef7a06e00ee..1ffd37220feb7903eb25c338c54b63a0ba5ec018 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UITask.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UITask.java @@ -16,7 +16,6 @@ */ package org.jkiss.dbeaver.ui; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.runtime.RunnableWithResult; public abstract class UITask extends RunnableWithResult { @@ -29,6 +28,6 @@ public abstract class UITask extends RunnableWithResult { protected abstract RESULT runTask(); public RESULT execute() { - return DBeaverUI.syncExec(this); + return UIUtils.syncExec(this); } } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIUtils.java similarity index 83% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIUtils.java index e041c068ae4e9e9a2a787cb4c6817a8a21551dc6..10d26a33ce23ba6987fcbd74bb385580f7f58e45 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIUtils.java @@ -1,1579 +1,1665 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui; - -import org.eclipse.jface.action.*; -import org.eclipse.jface.bindings.keys.KeyStroke; -import org.eclipse.jface.bindings.keys.ParseException; -import org.eclipse.jface.commands.ActionHandler; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.fieldassist.ContentProposalAdapter; -import org.eclipse.jface.fieldassist.IContentProposalProvider; -import org.eclipse.jface.fieldassist.IControlContentAdapter; -import org.eclipse.jface.preference.PreferenceDialog; -import org.eclipse.jface.resource.ColorRegistry; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.resource.StringConverter; -import org.eclipse.jface.text.IFindReplaceTarget; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.jface.window.IShellProvider; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.dnd.Clipboard; -import org.eclipse.swt.dnd.TextTransfer; -import org.eclipse.swt.dnd.Transfer; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.program.Program; -import org.eclipse.swt.widgets.*; -import org.eclipse.ui.*; -import org.eclipse.ui.contexts.IContextService; -import org.eclipse.ui.dialogs.PreferencesUtil; -import org.eclipse.ui.handlers.IHandlerActivation; -import org.eclipse.ui.handlers.IHandlerService; -import org.eclipse.ui.services.IServiceLocator; -import org.eclipse.ui.swt.IFocusService; -import org.eclipse.ui.texteditor.AbstractTextEditor; -import org.eclipse.ui.texteditor.FindReplaceAction; -import org.jkiss.code.NotNull; -import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.CoreMessages; -import org.jkiss.dbeaver.core.DBeaverActivator; -import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.core.DBeaverUI; -import org.jkiss.dbeaver.model.DBIcon; -import org.jkiss.dbeaver.model.DBPImage; -import org.jkiss.dbeaver.model.DBPNamedObject; -import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration; -import org.jkiss.dbeaver.model.connection.DBPConnectionType; -import org.jkiss.dbeaver.model.meta.IPropertyValueListProvider; -import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; -import org.jkiss.dbeaver.model.preferences.DBPPropertySource; -import org.jkiss.dbeaver.model.runtime.AbstractJob; -import org.jkiss.dbeaver.ui.controls.*; -import org.jkiss.dbeaver.ui.editors.text.BaseTextEditor; -import org.jkiss.dbeaver.utils.GeneralUtils; -import org.jkiss.utils.ArrayUtils; -import org.jkiss.utils.BeanUtils; -import org.jkiss.utils.CommonUtils; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.nio.charset.Charset; -import java.text.DecimalFormatSymbols; -import java.text.MessageFormat; -import java.util.Collection; -import java.util.Locale; -import java.util.ResourceBundle; -import java.util.SortedMap; - -/** - * UI Utils - */ -public class UIUtils { - - private static final Log log = Log.getLog(UIUtils.class); - - public static final String INLINE_WIDGET_EDITOR_ID = "org.jkiss.dbeaver.ui.InlineWidgetEditor"; - - public static VerifyListener getIntegerVerifyListener(Locale locale) - { - final DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale); - return new VerifyListener() { - @Override - public void verifyText(VerifyEvent e) - { - for (int i = 0; i < e.text.length(); i++) { - char ch = e.text.charAt(i); - if (!Character.isDigit(ch) && ch != symbols.getMinusSign() && ch != symbols.getGroupingSeparator()) { - e.doit = false; - return; - } - } - e.doit = true; - } - }; - } - - public static VerifyListener getNumberVerifyListener(Locale locale) - { - DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale); - final char[] allowedChars = new char[] { symbols.getDecimalSeparator(), symbols.getGroupingSeparator(), - symbols.getMinusSign(), symbols.getZeroDigit(), symbols.getMonetaryDecimalSeparator(), '+', '.', ',' }; - final String exponentSeparator = symbols.getExponentSeparator(); - return new VerifyListener() { - @Override - public void verifyText(VerifyEvent e) - { - for (int i = 0; i < e.text.length(); i++) { - char ch = e.text.charAt(i); - if (!Character.isDigit(ch) && !ArrayUtils.contains(allowedChars, ch) && exponentSeparator.indexOf(ch) == -1) { - e.doit = false; - return; - } - } - e.doit = true; - } - }; - } - - public static VerifyListener getLongVerifyListener(Text text) { - return new VerifyListener() { - @Override - public void verifyText(VerifyEvent e) { - - // get old text and create new text by using the VerifyEvent.text - final String oldS = text.getText(); - String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end); - - boolean isLong = true; - try { - Long.parseLong(newS); - } - catch(NumberFormatException ex) { - isLong = false; - } - - if(!isLong) - e.doit = false; - } - }; - } - - public static void createToolBarSeparator(ToolBar toolBar, int style) { - Label label = new Label(toolBar, SWT.NONE); - label.setImage(DBeaverIcons.getImage(UIIcon.DRAG_HANDLE)); - new ToolItem(toolBar, SWT.SEPARATOR).setControl(label); - } - - public static TableColumn createTableColumn(Table table, int style, String text) - { - TableColumn column = new TableColumn(table, style); - column.setText(text); - return column; - } - - public static TreeColumn createTreeColumn(Tree tree, int style, String text) - { - TreeColumn column = new TreeColumn(tree, style); - column.setText(text); - return column; - } - - public static void packColumns(Table table) - { - packColumns(table, false); - } - - public static void packColumns(Table table, boolean fit) - { - table.setRedraw(false); - try { - int totalWidth = 0; - final TableColumn[] columns = table.getColumns(); - for (TableColumn column : columns) { - column.pack(); - totalWidth += column.getWidth(); - } - final Rectangle clientArea = table.getBounds(); - if (clientArea.width > 0 && totalWidth > clientArea.width) { - for (TableColumn column : columns) { - int colWidth = column.getWidth(); - if (colWidth > totalWidth / 3) { - // If some columns are too big (more than 33% of total width) - // Then shrink them to 30% - column.setWidth(totalWidth / 3); - totalWidth -= colWidth; - totalWidth += column.getWidth(); - } - } - int extraSpace = totalWidth - clientArea.width; - - GC gc = new GC(table); - try { - for (TableColumn tc : columns) { - double ratio = (double) tc.getWidth() / totalWidth; - int newWidth = (int) (tc.getWidth() - extraSpace * ratio); - int minWidth = gc.stringExtent(tc.getText()).x; - minWidth += 5; - if (newWidth < minWidth) { - newWidth = minWidth; - } - tc.setWidth(newWidth); - } - } - finally { - gc.dispose(); - } - } - if (fit && totalWidth < clientArea.width) { - int sbWidth = 0; - if (table.getVerticalBar() != null) { - sbWidth = table.getVerticalBar().getSize().x; - } - if (columns.length > 0) { - float extraSpace = (clientArea.width - totalWidth - sbWidth) / columns.length; - for (TableColumn tc : columns) { - tc.setWidth((int) (tc.getWidth() + extraSpace)); - } - } - } - } finally { - table.setRedraw(true); - } - } - - public static void packColumns(@NotNull Tree tree) - { - packColumns(tree, false, null); - } - - public static void packColumns(@NotNull Tree tree, boolean fit, @Nullable float[] ratios) - { - tree.setRedraw(false); - try { - // Check for disposed items - // TODO: it looks like SWT error. Sometimes tree items are disposed and NPE is thrown from column.pack - for (TreeItem item : tree.getItems()) { - if (item.isDisposed()) { - return; - } - } - final TreeColumn[] columns = tree.getColumns(); - for (TreeColumn column : columns) { - column.pack(); - } - - Rectangle clientArea = tree.getClientArea(); - if (clientArea.isEmpty()) { - return; - } - int totalWidth = 0; - for (TreeColumn column : columns) { - int colWidth = column.getWidth(); - if (colWidth > clientArea.width) { - // Too wide column - make it a bit narrower - colWidth = clientArea.width; - column.setWidth(colWidth); - } - totalWidth += colWidth; - } - if (fit) { - int areaWidth = clientArea.width; -// if (tree.getVerticalBar() != null) { -// areaWidth -= tree.getVerticalBar().getSize().x; -// } - if (totalWidth > areaWidth) { - GC gc = new GC(tree); - try { - int extraSpace = totalWidth - areaWidth; - for (TreeColumn tc : columns) { - double ratio = (double) tc.getWidth() / totalWidth; - int newWidth = (int) (tc.getWidth() - extraSpace * ratio); - int minWidth = gc.stringExtent(tc.getText()).x; - minWidth += 5; - if (newWidth < minWidth) { - newWidth = minWidth; - } - tc.setWidth((int) newWidth); - } - } finally { - gc.dispose(); - } - } else if (totalWidth < areaWidth) { - float extraSpace = areaWidth - totalWidth; - if (columns.length > 0) { - if (ratios == null || ratios.length < columns.length) { - extraSpace /= columns.length; - extraSpace--; - for (TreeColumn tc : columns) { - tc.setWidth((int) (tc.getWidth() + extraSpace)); - } - } else { - for (int i = 0; i < columns.length; i++) { - TreeColumn tc = columns[i]; - tc.setWidth((int) (tc.getWidth() + extraSpace * ratios[i])); - } - } - } - } - } - } finally { - tree.setRedraw(true); - } - } - - public static void maxTableColumnsWidth(Table table) - { - table.setRedraw(false); - try { - int columnCount = table.getColumnCount(); - if (columnCount > 0) { - int totalWidth = 0; - final TableColumn[] columns = table.getColumns(); - for (TableColumn tc : columns) { - tc.pack(); - totalWidth += tc.getWidth(); - } - final Rectangle clientArea = table.getClientArea(); - if (totalWidth < clientArea.width) { - int extraSpace = clientArea.width - totalWidth; - extraSpace /= columnCount; - for (TableColumn tc : columns) { - tc.setWidth(tc.getWidth() + extraSpace); - } - } - } - } finally { - table.setRedraw(true); - } - } - - public static int getColumnAtPos(TableItem item, int x, int y) - { - int columnCount = item.getParent().getColumnCount(); - for (int i = 0; i < columnCount; i++) { - Rectangle rect = item.getBounds(i); - if (rect.contains(x, y)) { - return i; - } - } - return -1; - } - - public static int getColumnAtPos(TreeItem item, int x, int y) - { - int columnCount = item.getParent().getColumnCount(); - for (int i = 0; i < columnCount; i++) { - Rectangle rect = item.getBounds(i); - if (rect.contains(x, y)) { - return i; - } - } - return -1; - } - - public static TableItem getNextTableItem(Table table, TableItem item) { - TableItem[] items = table.getItems(); - for (int i = 0; i < items.length - 1; i++) { - if (items[i] == item) { - return items[i + 1]; - } - } - return null; - } - - public static TreeItem getNextTreeItem(Tree tree, TreeItem item) { - TreeItem[] items = tree.getItems(); - for (int i = 0; i < items.length - 1; i++) { - if (items[i] == item) { - return items[i + 1]; - } - } - return null; - } - - public static void dispose(Widget widget) - { - if (widget != null && !widget.isDisposed()) { - try { - widget.dispose(); - } catch (Exception e) { - log.debug("widget dispose error", e); - } - } - } - - public static void dispose(Resource resource) - { - if (resource != null && !resource.isDisposed()) { - try { - resource.dispose(); - } catch (Exception e) { - log.debug("Resource dispose error", e); - } - } - } - - public static void showMessageBox(final Shell shell, final String title, final String info, final int messageType) - { - Runnable runnable = new Runnable() { - @Override - public void run() - { - Shell activeShell = shell != null ? shell : DBeaverUI.getActiveWorkbenchShell(); - MessageBox messageBox = new MessageBox(activeShell, messageType | SWT.OK); - messageBox.setMessage(info); - messageBox.setText(title); - messageBox.open(); - } - }; - DBeaverUI.syncExec(runnable); - } - - public static boolean confirmAction(final String title, final String question) - { - return confirmAction(null, title, question); - } - - public static boolean confirmAction(final Shell shell, final String title, final String question) - { - return new UIConfirmation() { - @Override - public Boolean runTask() { - Shell activeShell = shell != null ? shell : DBeaverUI.getActiveWorkbenchShell(); - MessageBox messageBox = new MessageBox(activeShell, SWT.ICON_QUESTION | SWT.YES | SWT.NO); - messageBox.setMessage(question); - messageBox.setText(title); - int response = messageBox.open(); - return (response == SWT.YES); - } - }.confirm(); - } - - public static int getFontHeight(Control control) { - return getFontHeight(control.getFont()); - } - - public static int getFontHeight(Font font) { - FontData[] fontData = font.getFontData(); - if (fontData.length == 0) { - return 20; - } - return fontData[0].getHeight(); - } - - public static Font makeBoldFont(Font normalFont) - { - return modifyFont(normalFont, SWT.BOLD); - } - - public static Font modifyFont(Font normalFont, int style) - { - FontData[] fontData = normalFont.getFontData(); - fontData[0].setStyle(fontData[0].getStyle() | style); - return new Font(normalFont.getDevice(), fontData[0]); - } - - public static Group createControlGroup(Composite parent, String label, int columns, int layoutStyle, int widthHint) - { - Group group = new Group(parent, SWT.NONE); - group.setText(label); - - GridData gd = new GridData(layoutStyle); - if (widthHint > 0) { - gd.widthHint = widthHint; - } - group.setLayoutData(gd); - - GridLayout gl = new GridLayout(columns, false); - group.setLayout(gl); - - return group; - } - - public static Label createControlLabel(Composite parent, String label) - { - Label textLabel = new Label(parent, SWT.NONE); - textLabel.setText(label + ": "); //$NON-NLS-1$ - // TODO: Should we make it right-aligned? Looks good but not in Eclipse-style - textLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_CENTER /*| GridData.HORIZONTAL_ALIGN_END*/)); - return textLabel; - } - - public static Label createLabel(Composite parent, String label) - { - Label textLabel = new Label(parent, SWT.NONE); - textLabel.setText(label); - - return textLabel; - } - - public static Label createLabel(Composite parent, @NotNull DBPImage image) - { - Label imageLabel = new Label(parent, SWT.NONE); - imageLabel.setImage(DBeaverIcons.getImage(image)); - - return imageLabel; - } - - - public static CLabel createInfoLabel(Composite parent, String text) { - CLabel tipLabel = new CLabel(parent, SWT.NONE); - tipLabel.setImage(JFaceResources.getImage(org.eclipse.jface.dialogs.Dialog.DLG_IMG_MESSAGE_INFO)); - tipLabel.setText(text); - return tipLabel; - } - - public static Text createLabelText(Composite parent, String label, String value) - { - return createLabelText(parent, label, value, SWT.BORDER); - } - - public static Text createLabelText(Composite parent, String label, String value, int style) - { - return createLabelText(parent, label, value, style, new GridData(GridData.FILL_HORIZONTAL)); - } - - @NotNull - public static Text createLabelText(@NotNull Composite parent, @NotNull String label, @Nullable String value, int style, - @Nullable Object layoutData) - { - createControlLabel(parent, label); - - Text text = new Text(parent, style); - fixReadonlyTextBackground(text); - if (value != null) { - text.setText(value); - } - - if (layoutData != null) { - text.setLayoutData(layoutData); - } - - return text; - } - - @NotNull - public static Spinner createLabelSpinner(@NotNull Composite parent, @NotNull String label, @Nullable String tooltip, int value, int minimum, int maximum) { - final Label l = createControlLabel(parent, label); - if (tooltip != null) { - l.setToolTipText(tooltip); - } - - return createSpinner(parent, tooltip, value, minimum, maximum); - } - - @NotNull - public static Spinner createSpinner(Composite parent, String tooltip, int value, int minimum, int maximum) { - Spinner spinner = new Spinner(parent, SWT.BORDER); - spinner.setMinimum(minimum); - spinner.setMaximum(maximum); - spinner.setSelection(value); - if (tooltip != null) { - spinner.setToolTipText(tooltip); - } - - return spinner; - } - - @NotNull - public static Spinner createLabelSpinner(@NotNull Composite parent, @NotNull String label, int value, int minimum, int maximum) - { - return createLabelSpinner(parent, label, null, value, minimum, maximum); - } - - @NotNull - public static Button createLabelCheckbox(Composite parent, String label, boolean checked) - { - return createLabelCheckbox(parent, label, null, checked, SWT.NONE); - } - - @NotNull - public static Button createLabelCheckbox(Composite parent, String label, String tooltip, boolean checked) - { - return createLabelCheckbox(parent, label, tooltip, checked, SWT.NONE); - } - - @NotNull - public static Button createLabelCheckbox(@NotNull Composite parent, @NotNull String label, @Nullable String tooltip, - boolean checked, int style) - { - Label labelControl = createControlLabel(parent, label); - // labelControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - final Button button = new Button(parent, SWT.CHECK | style); - if (checked) { - button.setSelection(true); - } - labelControl.addMouseListener(new MouseAdapter() { - @Override - public void mouseUp(MouseEvent e) - { - if (!button.isDisposed() && button.isVisible() && button.isEnabled()) { - button.setSelection(!button.getSelection()); - button.notifyListeners(SWT.Selection, new Event()); - } - } - }); - - if (tooltip != null) { - labelControl.setToolTipText(tooltip); - button.setToolTipText(tooltip); - } - return button; - } - - public static Button createCheckbox(Composite parent, String label, String tooltip, boolean checked, int hSpan) { - Button checkbox = createCheckbox(parent, label, checked); - if (tooltip != null) { - checkbox.setToolTipText(tooltip); - } - if (hSpan > 1) { - GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); - gd.horizontalSpan = hSpan; - checkbox.setLayoutData(gd); - } - return checkbox; - } - - public static Button createCheckbox(Composite parent, String label, boolean checked) - { - final Button button = new Button(parent, SWT.CHECK); - button.setText(label); - if (checked) { - button.setSelection(true); - } - - return button; - } - - public static Combo createLabelCombo(Composite parent, String label, int style) - { - return createLabelCombo(parent, label, null, style); - } - - public static Combo createLabelCombo(Composite parent, String label, String tooltip, int style) - { - Label labelControl = createControlLabel(parent, label); - if (tooltip != null) { - labelControl.setToolTipText(tooltip); - } - - final Combo combo = new Combo(parent, style); - combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - if (tooltip != null) { - combo.setToolTipText(tooltip); - } - - return combo; - } - - public static Button createToolButton(Composite parent, String text, SelectionListener selectionListener) - { - Button button = new Button(parent, SWT.PUSH); - button.setText(text); - button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - if (selectionListener != null) { - button.addSelectionListener(selectionListener); - } - return button; - } - - public static void updateContributionItems(IContributionManager manager) { - for (IContributionItem item : manager.getItems()) { - item.update(); - } - } - - @Nullable - public static Shell getActiveShell() - { - IWorkbench workbench = PlatformUI.getWorkbench(); - return workbench == null ? null : getShell(workbench.getActiveWorkbenchWindow()); - } - - @Nullable - public static Shell getShell(IShellProvider provider) - { - return provider == null ? null : provider.getShell(); - } - - @Nullable - public static Shell getShell(IWorkbenchPart part) - { - return part == null ? null : getShell(part.getSite()); - } - - @Nullable - public static Integer getTextInteger(Text text) - { - String str = text.getText(); - str = str.trim(); - if (str.length() == 0) { - return null; - } - try { - return Integer.valueOf(str); - } catch (NumberFormatException e) { - log.debug(e); - return null; - } - } - - @Nullable - public static IHandlerActivation registerKeyBinding(IServiceLocator serviceLocator, IAction action) - { - IHandlerService handlerService = serviceLocator.getService(IHandlerService.class); - if (handlerService != null) { - return handlerService.activateHandler(action.getActionDefinitionId(), new ActionHandler(action)); - } else { - return null; - } - } - - public static Composite createPlaceholder(Composite parent, int columns) - { - return createPlaceholder(parent, columns, 0); - } - - public static Composite createPlaceholder(Composite parent, int columns, int spacing) - { - Composite ph = new Composite(parent, SWT.NONE); - GridLayout gl = new GridLayout(columns, false); - gl.verticalSpacing = spacing; - gl.horizontalSpacing = spacing; - gl.marginHeight = 0; - gl.marginWidth = 0; - ph.setLayout(gl); - return ph; - } - - public static void setGridSpan(Control control, int horizontalSpan, int verticalSpan) { - GridData gd; - final Object layoutData = control.getLayoutData(); - if (layoutData == null) { - if (control.getParent().getLayout() instanceof GridLayout) { - gd = new GridData(); - control.setLayoutData(gd); - } else { - log.debug("Can't set grid span for layout: " + control.getParent().getLayout()); - return; - } - } else if (layoutData instanceof GridData) { - gd = (GridData) layoutData; - } else { - log.debug("Can't set grid span for non-grid layout: " + layoutData.getClass().getName()); - return; - } - gd.horizontalSpan = horizontalSpan; - gd.verticalSpan = verticalSpan; - } - - public static Label createHorizontalLine(Composite parent) - { - Label horizontalLine = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); - horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 1, 1)); - return horizontalLine; - } - - @Nullable - public static String getComboSelection(Combo combo) - { - int selectionIndex = combo.getSelectionIndex(); - if (selectionIndex < 0) { - return null; - } - return combo.getItem(selectionIndex); - } - - public static boolean setComboSelection(Combo combo, String value) - { - if (value == null) { - return false; - } - int count = combo.getItemCount(); - for (int i = 0; i < count; i++) { - if (value.equals(combo.getItem(i))) { - combo.select(i); - return true; - } - } - return false; - } - -// public static Combo createEncodingCombo(Composite parent, String curCharset) -// { -// -// } - - public static Combo createEncodingCombo(Composite parent, @Nullable String curCharset) - { - Combo encodingCombo = new Combo(parent, SWT.DROP_DOWN); - encodingCombo.setVisibleItemCount(30); - SortedMap charsetMap = Charset.availableCharsets(); - int index = 0; - int defIndex = -1; - for (String csName : charsetMap.keySet()) { - Charset charset = charsetMap.get(csName); - encodingCombo.add(charset.displayName()); - if (curCharset != null) { - if (charset.displayName().equalsIgnoreCase(curCharset)) { - defIndex = index; - } - if (defIndex < 0) { - for (String alias : charset.aliases()) { - if (alias.equalsIgnoreCase(curCharset)) { - defIndex = index; - } - } - } - } - index++; - } - if (defIndex >= 0) { - encodingCombo.select(defIndex); - } else if (curCharset != null) { - log.warn("Charset '" + curCharset + "' is not recognized"); //$NON-NLS-1$ //$NON-NLS-2$ - } - return encodingCombo; - } - - @NotNull - public static SashForm createPartDivider(final IWorkbenchPart workbenchPart, Composite parent, int style) - { - final CustomSashForm sash = new CustomSashForm(parent, style); - - return sash; - } - - @NotNull - public static String formatMessage(@Nullable String message, @Nullable Object... args) - { - if (message == null) { - return ""; //$NON-NLS-1$ - } else { - return MessageFormat.format(message, args); - } - } - - @NotNull - public static Button createPushButton(@NotNull Composite parent, @Nullable String label, @Nullable Image image) - { - return createPushButton(parent, label, image, null); - } - - @NotNull - public static Button createPushButton(@NotNull Composite parent, @Nullable String label, @Nullable Image image, @Nullable SelectionListener selectionListener) - { - Button button = new Button(parent, SWT.PUSH); - if (label != null) { - button.setText(label); - } - if (image != null) { - button.setImage(image); - } - if (selectionListener != null) { - button.addSelectionListener(selectionListener); - } - return button; - } - - - public static void setHelp(Control control, String pluginId, String helpContextID) - { - PlatformUI.getWorkbench().getHelpSystem().setHelp(control, pluginId + "." + helpContextID); //$NON-NLS-1$ - } - - public static void setHelp(Control control, String helpContextID) - { - setHelp(control, DBeaverCore.PLUGIN_ID, helpContextID); - } - - public static String makeAnchor(String text) - { - return "" + text + ""; //$NON-NLS-1$ //$NON-NLS-2$ - } - - @Nullable - public static T findView(IWorkbenchWindow workbenchWindow, Class viewClass) - { - IViewReference[] references = workbenchWindow.getActivePage().getViewReferences(); - for (IViewReference ref : references) { - IViewPart view = ref.getView(false); - if (view != null && viewClass.isAssignableFrom(view.getClass())) { - return viewClass.cast(view); - } - } - return null; - } - - @Nullable - public static IViewPart findView(IWorkbenchWindow workbenchWindow, String viewId) - { - IViewReference[] references = workbenchWindow.getActivePage().getViewReferences(); - for (IViewReference ref : references) { - if (ref.getId().equals(viewId)) { - return ref.getView(false); - } - } - return null; - } - - public static void setClipboardContents(Display display, Transfer transfer, Object contents) - { - Clipboard clipboard = new Clipboard(display); - clipboard.setContents(new Object[] { contents }, new Transfer[] { transfer }); - clipboard.dispose(); - } - - public static void showPreferencesFor(Shell shell, Object element, String ... defPageID) - { - PreferenceDialog propDialog; - if (element == null) { - propDialog = PreferencesUtil.createPreferenceDialogOn(shell, defPageID[0], defPageID, null, PreferencesUtil.OPTION_NONE); - } else { - propDialog = PreferencesUtil.createPropertyDialogOn(shell, element, defPageID[0], null, null, PreferencesUtil.OPTION_NONE); - } - if (propDialog != null) { - propDialog.open(); - } - } - - public static void addFocusTracker(IServiceLocator serviceLocator, String controlID, Control control) - { - final IFocusService focusService = serviceLocator.getService(IFocusService.class); - if (focusService != null) { - focusService.addFocusTracker(control, controlID); - } else { - log.debug("Focus service not found in " + serviceLocator); - } - } - - public static void removeFocusTracker(IServiceLocator serviceLocator, Control control) - { - if (PlatformUI.getWorkbench().isClosing()) { - // TODO: it is a bug in eclipse. During workbench shutdown disposed service returned. - return; - } - final IFocusService focusService = serviceLocator.getService(IFocusService.class); - if (focusService != null) { - focusService.removeFocusTracker(control); - } else { - log.debug("Focus service not found in " + serviceLocator); - } - } - - public static void addDefaultEditActionsSupport(final IServiceLocator site, final Control control) { - UIUtils.addFocusTracker(site, UIUtils.INLINE_WIDGET_EDITOR_ID, control); - control.addDisposeListener(new DisposeListener() { - @Override - public void widgetDisposed(DisposeEvent e) { - // Unregister from focus service - UIUtils.removeFocusTracker(site, control); - } - }); - } - - - @NotNull - public static IDialogSettings getDialogSettings(@NotNull String dialogId) - { - IDialogSettings workbenchSettings = DBeaverActivator.getInstance().getDialogSettings(); - return getSettingsSection(workbenchSettings, dialogId); - } - - @NotNull - public static IDialogSettings getSettingsSection(@NotNull IDialogSettings parent, @NotNull String sectionId) - { - IDialogSettings section = parent.getSection(sectionId); - if (section == null) { - section = parent.addNewSection(sectionId); - } - return section; - } - - public static void putSectionValueWithType(IDialogSettings dialogSettings, @NotNull String key, Object value) { - if (value == null) { - dialogSettings.put(key, ((String) null)); - return; - } - - if (value instanceof Double) { - dialogSettings.put(key, (Double) value); - } else - if (value instanceof Float) { - dialogSettings.put(key, (Float) value); - } else - if (value instanceof Integer) { - dialogSettings.put(key, (Integer) value); - } else - if (value instanceof Long) { - dialogSettings.put(key, (Long) value); - } else - if (value instanceof String) { - dialogSettings.put(key, (String) value); - } else - if (value instanceof Boolean) { - dialogSettings.put(key, (Boolean) value); - } else { - // do nothing - } - dialogSettings.put(key + "_type", value.getClass().getSimpleName()); - } - - public static Object getSectionValueWithType(IDialogSettings dialogSettings, @NotNull String key) { - String type = dialogSettings.get(key + "_type"); - if (type != null) { - switch (type) { - case "Double": return dialogSettings.getDouble(key); - case "Float": return dialogSettings.getFloat(key); - case "Integer": return dialogSettings.getInt(key); - case "Long": return dialogSettings.getLong(key); - case "String": return dialogSettings.get(key); - case "Boolean": return dialogSettings.getBoolean(key); - } - } - return dialogSettings.get(key); - } - - @Nullable - public static IWorkbenchPartSite getWorkbenchPartSite(IServiceLocator serviceLocator) - { - IWorkbenchPartSite partSite = serviceLocator.getService(IWorkbenchPartSite.class); - if (partSite == null) { - IWorkbenchPart activePart = serviceLocator.getService(IWorkbenchPart.class); - if (activePart == null) { - IWorkbenchWindow workbenchWindow = DBeaverUI.getActiveWorkbenchWindow(); - if (workbenchWindow != null) { - IWorkbenchPage activePage = workbenchWindow.getActivePage(); - if (activePage != null) { - activePart = activePage.getActivePart(); - } - } - } - if (activePart != null) { - partSite = activePart.getSite(); - } - } - return partSite; - } - - public static boolean isContextActive(String contextId) - { - Collection contextIds = DBeaverUI.getActiveWorkbenchWindow().getService(IContextService.class).getActiveContextIds(); - for (Object id : contextIds) { - if (contextId.equals(id)) { - return true; - } - } - return false; - } - - @Nullable - public static ISelectionProvider getSelectionProvider(IServiceLocator serviceLocator) - { - ISelectionProvider selectionProvider = serviceLocator.getService(ISelectionProvider.class); - if (selectionProvider != null) { - return selectionProvider; - } - IWorkbenchPartSite partSite = getWorkbenchPartSite(serviceLocator); - if (partSite == null) { - IWorkbenchPart activePart = serviceLocator.getService(IWorkbenchPart.class); - if (activePart == null) { - IWorkbenchWindow activeWindow = DBeaverUI.getActiveWorkbenchWindow(); - if (activeWindow != null) { - activePart = activeWindow.getActivePage().getActivePart(); - } - } - if (activePart != null) { - partSite = activePart.getSite(); - } - } - if (partSite != null) { - return partSite.getSelectionProvider(); - } else { - return null; - } - } - - public static void enableWithChildren(Control control, boolean enable) - { - control.setEnabled(enable); - if (control instanceof Composite) { - for (Control child : ((Composite)control).getChildren()) { - if (child instanceof Composite) { - enableWithChildren(child, enable); - } else { - child.setEnabled(enable); - } - } - } - } - - /** - * Determine whether this control or any of it's child has focus - * - * @param control - * control to check - * @return true if it has focus - */ - public static boolean hasFocus(Control control) - { - Control focusControl = control.getDisplay().getFocusControl(); - if (focusControl == null) { - return false; - } - for (Control fc = focusControl; fc != null; fc = fc.getParent()) { - if (fc == control) { - return true; - } - } - return false; - } - - /** - * Eclipse hack. Disables/enabled all key bindings in specified site's part. Works only if host editor is extender of - * AbstractTextEditor Uses reflection because setActionActivation is private method - * TODO: find better way to disable key bindings or prioritize event handling to widgets - * - * @param partSite workbench part site - * @param enable enable or disable - */ - @Deprecated - public static void enableHostEditorKeyBindings(IWorkbenchPartSite partSite, boolean enable) - { - IWorkbenchPart part = partSite.getPart(); - if (part instanceof AbstractTextEditor) { - AbstractTextEditor hostEditor = (AbstractTextEditor) part; - if (hostEditor instanceof BaseTextEditor) { - StyledText textWidget = ((BaseTextEditor) hostEditor).getTextViewer().getTextWidget(); - if (textWidget == null || textWidget.isDisposed()) { - return; - } - } - try { - Method activatorMethod = AbstractTextEditor.class.getDeclaredMethod("setActionActivation", Boolean.TYPE); - activatorMethod.setAccessible(true); - activatorMethod.invoke(hostEditor, enable); - } catch (Throwable e) { - if (e instanceof InvocationTargetException) { - e = ((InvocationTargetException) e).getTargetException(); - } - log.warn("Can't disable text editor action activations", e); - } - //hostEditor.getEditorSite().getActionBarContributor().setActiveEditor(hostEditor); - } - } - - public static void enableHostEditorKeyBindingsSupport(final IWorkbenchPartSite partSite, Control control) - { - if (!(partSite.getPart() instanceof AbstractTextEditor)) { - return; - } - - final boolean[] activated = new boolean[] {false}; - control.addFocusListener(new FocusListener() { - @Override - public void focusGained(FocusEvent e) { - if (!activated[0]) { - UIUtils.enableHostEditorKeyBindings(partSite, false); - activated[0] = true; - } - } - @Override - public void focusLost(FocusEvent e) { - if (activated[0]) { - UIUtils.enableHostEditorKeyBindings(partSite, true); - activated[0] = false; - } - } - }); - control.addDisposeListener(new DisposeListener() { - @Override - public void widgetDisposed(DisposeEvent e) { - if (activated[0]) { - UIUtils.enableHostEditorKeyBindings(partSite, true); - activated[0] = false; - } - } - }); - } - - public static CTabItem getTabItem(CTabFolder tabFolder, Object data) - { - for (CTabItem item : tabFolder.getItems()) { - if (item.getData() == data) { - return item; - } - } - return null; - } - - public static void disposeControlOnItemDispose(final CTabItem tabItem) { - tabItem.addDisposeListener(new DisposeListener() { - @Override - public void widgetDisposed(DisposeEvent e) { - final Control control = tabItem.getControl(); - if (!control.isDisposed()) { - control.dispose(); - } - } - }); - } - - public static TreeItem getTreeItem(Tree tree, Object data) - { - for (TreeItem item : tree.getItems()) { - if (item.getData() == data) { - return item; - } - } - return null; - } - - public static int blend(int v1, int v2, int ratio) - { - return (ratio * v1 + (100 - ratio) * v2) / 100; - } - - public static RGB blend(RGB c1, RGB c2, int ratio) - { - int r = blend(c1.red, c2.red, ratio); - int g = blend(c1.green, c2.green, ratio); - int b = blend(c1.blue, c2.blue, ratio); - return new RGB(r, g, b); - } - - public static boolean isParent(Control parent, Control child) { - for (Control c = child; c != null; c = c.getParent()) { - if (c == parent) { - return true; - } - } - return false; - } - - public static boolean isInDialog(Control control) { - return control.getShell().getData() instanceof org.eclipse.jface.dialogs.Dialog; - } - - public static Link createLink(Composite parent, String text, SelectionListener listener) { - Link link = new Link(parent, SWT.NONE); - link.setText(text); - link.addSelectionListener(listener); - return link; - } - - public static CellEditor createPropertyEditor(final IServiceLocator serviceLocator, Composite parent, DBPPropertySource source, DBPPropertyDescriptor property, int style) - { - if (source == null) { - return null; - } - final Object object = source.getEditableValue(); - if (!property.isEditable(object)) { - return null; - } - CellEditor cellEditor = UIUtils.createCellEditor(parent, object, property, style); - if (cellEditor != null) { - final Control editorControl = cellEditor.getControl(); - addDefaultEditActionsSupport(serviceLocator, editorControl); - } - return cellEditor; - } - - public static CellEditor createCellEditor(Composite parent, Object object, DBPPropertyDescriptor property, int style) - { - // List - if (property instanceof IPropertyValueListProvider) { - final IPropertyValueListProvider listProvider = (IPropertyValueListProvider) property; - final Object[] items = listProvider.getPossibleValues(object); - if (items != null) { - final String[] strings = new String[items.length]; - for (int i = 0, itemsLength = items.length; i < itemsLength; i++) { - strings[i] = items[i] instanceof DBPNamedObject ? ((DBPNamedObject)items[i]).getName() : CommonUtils.toString(items[i]); - } - final CustomComboBoxCellEditor editor = new CustomComboBoxCellEditor( - parent, - strings, - SWT.DROP_DOWN | (listProvider.allowCustomValue() ? SWT.NONE : SWT.READ_ONLY)); - return editor; - } - } - Class propertyType = property.getDataType(); - if (propertyType == null || CharSequence.class.isAssignableFrom(propertyType)) { - return new CustomTextCellEditor(parent); - } else if (BeanUtils.isNumericType(propertyType)) { - return new CustomNumberCellEditor(parent, propertyType); - } else if (BeanUtils.isBooleanType(propertyType)) { - return new CustomCheckboxCellEditor(parent, style); - //return new CheckboxCellEditor(parent); - } else if (propertyType.isEnum()) { - final Object[] enumConstants = propertyType.getEnumConstants(); - final String[] strings = new String[enumConstants.length]; - for (int i = 0, itemsLength = enumConstants.length; i < itemsLength; i++) { - strings[i] = ((Enum)enumConstants[i]).name(); - } - return new CustomComboBoxCellEditor( - parent, - strings, - SWT.DROP_DOWN | SWT.READ_ONLY); - } else { - log.warn("Unsupported property type: " + propertyType.getName()); - return null; - } - } - - public static void postEvent(Control ownerControl, final Event event) { - final Display display = ownerControl.getDisplay(); - DBeaverUI.asyncExec(new Runnable() { - @Override - public void run() { - display.post(event); - } - }); - } - - public static void drawMessageOverControl(Control control, PaintEvent e, String message, int offset) { - Rectangle bounds = control.getBounds(); - Point ext = e.gc.textExtent(message); - e.gc.drawText(message, (bounds.width - ext.x) / 2, bounds.height / 3 + offset); - } - - public static boolean launchProgram(String path) - { - return Program.launch(path); - } - - public static void fillDefaultStyledTextContextMenu(final StyledText text) { - MenuManager menuMgr = new MenuManager(); - menuMgr.addMenuListener(new IMenuListener() { - @Override - public void menuAboutToShow(IMenuManager manager) - { - UIUtils.fillDefaultStyledTextContextMenu(manager, text); - } - }); - menuMgr.setRemoveAllWhenShown(true); - text.setMenu(menuMgr.createContextMenu(text)); - } - - public static void fillDefaultStyledTextContextMenu(IMenuManager menu, final StyledText text) { - final Point selectionRange = text.getSelectionRange(); - menu.add(new StyledTextAction(IWorkbenchCommandConstants.EDIT_COPY, selectionRange.y > 0, text, ST.COPY)); - menu.add(new StyledTextAction(IWorkbenchCommandConstants.EDIT_PASTE, text.getEditable(), text, ST.PASTE)); - menu.add(new StyledTextAction(IWorkbenchCommandConstants.EDIT_CUT, selectionRange.y > 0, text, ST.CUT)); - menu.add(new StyledTextAction(IWorkbenchCommandConstants.EDIT_SELECT_ALL, true, text, ST.SELECT_ALL)); - IFindReplaceTarget stFindReplaceTarget = new StyledTextFindReplaceTarget(text); - menu.add(new FindReplaceAction( - ResourceBundle.getBundle("org.eclipse.ui.texteditor.ConstructedEditorMessages"), - "Editor.FindReplace.", - text.getShell(), - stFindReplaceTarget)); - menu.add(new GroupMarker("styled_text_additions")); - } - - public static void fillDefaultTableContextMenu(IMenuManager menu, final Table table) { - menu.add(new Action(CoreMessages.controls_itemlist_action_copy) { - @Override - public void run() { - StringBuilder text = new StringBuilder(); - int columnCount = table.getColumnCount(); - for (TableItem item : table.getSelection()) { - if (text.length() > 0) text.append("\n"); - for (int i = 0 ; i < columnCount; i++) { - if (i > 0) text.append("\t"); - text.append(item.getText(i)); - } - } - UIUtils.setClipboardContents(table.getDisplay(), TextTransfer.getInstance(), text.toString()); - } - }); - } - - public static void addFileOpenOverlay(Text text, SelectionListener listener) { - final Image browseImage = DBeaverIcons.getImage(DBIcon.TREE_FOLDER); - final Rectangle iconBounds = browseImage.getBounds(); - text.addPaintListener(new PaintListener() { - @Override - public void paintControl(PaintEvent e) { - final Rectangle bounds = ((Text) e.widget).getBounds(); - e.gc.drawImage(browseImage, bounds.width - iconBounds.width - 2, 0); - } - }); - } - - public static Combo createDelimiterCombo(Composite group, String label, String[] options, String defDelimiter, boolean multiDelims) { - createControlLabel(group, label); - Combo combo = new Combo(group, SWT.BORDER | SWT.DROP_DOWN); - combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - for (String option : options) { - combo.add(CommonUtils.escapeDisplayString(option)); - } - if (!multiDelims) { - if (!ArrayUtils.contains(options, defDelimiter)) { - combo.add(CommonUtils.escapeDisplayString(defDelimiter)); - } - String[] items = combo.getItems(); - for (int i = 0, itemsLength = items.length; i < itemsLength; i++) { - String delim = CommonUtils.unescapeDisplayString(items[i]); - if (delim.equals(defDelimiter)) { - combo.select(i); - break; - } - } - } else { - combo.setText(CommonUtils.escapeDisplayString(defDelimiter)); - } - return combo; - } - - private static class StyledTextAction extends Action { - private final StyledText styledText; - private final int action; - public StyledTextAction(String actionId, boolean enabled, StyledText styledText, int action) { - super(ActionUtils.findCommandName(actionId)); - this.setActionDefinitionId(actionId); - this.setEnabled(enabled); - this.styledText = styledText; - this.action = action; - } - - @Override - public void run() { - styledText.invokeAction(action); - } - } - - @Nullable - public static Color getSharedColor(@Nullable String rgbString) { - if (CommonUtils.isEmpty(rgbString)) { - return null; - } - return DBeaverUI.getSharedTextColors().getColor(rgbString); - } - - public static Color getConnectionColor(DBPConnectionConfiguration connectionInfo) { - String rgbString = connectionInfo.getConnectionColor(); - if (CommonUtils.isEmpty(rgbString)) { - rgbString = connectionInfo.getConnectionType().getColor(); - } - if (CommonUtils.isEmpty(rgbString)) { - return null; - } - Color connectionColor = DBeaverUI.getSharedTextColors().getColor(rgbString); - if (connectionColor.getBlue() == 255 && connectionColor.getRed() == 255 && connectionColor.getGreen() == 255) { - // For white color return just null to avoid explicit color set. - // It is important for dark themes - return null; - } - return connectionColor; - } - - public static Color getConnectionTypeColor(DBPConnectionType connectionType) { - String rgbString = connectionType.getColor(); - if (CommonUtils.isEmpty(rgbString)) { - return null; - } - return DBeaverUI.getSharedTextColors().getColor(StringConverter.asRGB(rgbString)); - } - - public static Shell createCenteredShell(Shell parent) { - - final Rectangle bounds = parent.getBounds(); - final int x = bounds.x + bounds.width / 2 - 120; - final int y = bounds.y + bounds.height / 2 - 170; - - final Shell shell = new Shell( parent ); - - shell.setBounds( x, y, 0, 0 ); - - return shell; - } - - public static Image getShardImage(String id) { - return PlatformUI.getWorkbench().getSharedImages().getImage(id); - } - - public static ImageDescriptor getShardImageDescriptor(String id) { - return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(id); - } - - public static void installContentProposal(Control control, IControlContentAdapter contentAdapter, IContentProposalProvider provider) { - installContentProposal(control, contentAdapter, provider, false, true); - } - - public static void installContentProposal(Control control, IControlContentAdapter contentAdapter, IContentProposalProvider provider, boolean autoActivation, boolean insertAfter) { - try { - KeyStroke keyStroke = autoActivation ? null : KeyStroke.getInstance("Ctrl+Space"); - final ContentProposalAdapter proposalAdapter = new ContentProposalAdapter( - control, - contentAdapter, - provider, - keyStroke, - autoActivation ? ".abcdefghijklmnopqrstuvwxyz_$(".toCharArray() : ".(".toCharArray()); - proposalAdapter.setProposalAcceptanceStyle(insertAfter ? ContentProposalAdapter.PROPOSAL_INSERT : ContentProposalAdapter.PROPOSAL_REPLACE); - proposalAdapter.setPopupSize(new Point(300, 200)); - } catch (ParseException e) { - log.error("Error installing filters content assistant"); - } - } - - public static void setContentProposalToolTip(Control control, String toolTip, String ... variables) { - StringBuilder varsTip = new StringBuilder(); - for (String var : variables) { - if (varsTip.length() > 0) varsTip.append(",\n"); - varsTip.append("\t").append(GeneralUtils.variablePattern(var)); - } - varsTip.append("."); - control.setToolTipText(toolTip + ". Allowed variables:\n" + varsTip); - - } - - public static CoolItem createCoolItem(CoolBar coolBar, Control control) { - CoolItem item = new CoolItem(coolBar, SWT.NONE); - item.setControl(control); - Point size = control.computeSize(SWT.DEFAULT, SWT.DEFAULT); - Point preferred = item.computeSize(size.x, size.y); - item.setPreferredSize(preferred); - return item; - } - - public static void resizeShell(Shell shell) { - Point shellSize = shell.getSize(); - Point compSize = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT); - compSize.y += 20; - if (shellSize.y < compSize.y) { - shell.setSize(compSize); - shell.layout(true); - } - } - - public static void waitJobCompletion(AbstractJob job) { - // Wait until job finished - Display display = Display.getCurrent(); - while (!job.isFinished()) { - if (!display.readAndDispatch()) { - display.sleep(); - } - } - display.update(); - } - - public static void fixReadonlyTextBackground(Text textField) { - if ((textField.getStyle() & SWT.READ_ONLY) == SWT.READ_ONLY) { - // Do nothing because in E4.6 there is no good solution: https://bugs.eclipse.org/bugs/show_bug.cgi?id=340889 - //textField.setBackground(textField.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); - } else { - textField.setBackground(null); - } - } - - public static ColorRegistry getColorRegistry() { - return PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry(); - } - - public static Color getGlobalColor(String colorName) { - return getColorRegistry().get(colorName); - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui; + +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.action.*; +import org.eclipse.jface.bindings.keys.KeyStroke; +import org.eclipse.jface.bindings.keys.ParseException; +import org.eclipse.jface.commands.ActionHandler; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.fieldassist.ContentProposalAdapter; +import org.eclipse.jface.fieldassist.IContentProposalProvider; +import org.eclipse.jface.fieldassist.IControlContentAdapter; +import org.eclipse.jface.operation.IRunnableContext; +import org.eclipse.jface.preference.PreferenceDialog; +import org.eclipse.jface.resource.ColorRegistry; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.StringConverter; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.window.IShellProvider; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CLabel; +import org.eclipse.swt.custom.CTabFolder; +import org.eclipse.swt.custom.CTabItem; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.dnd.Clipboard; +import org.eclipse.swt.dnd.TextTransfer; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.events.*; +import org.eclipse.swt.graphics.*; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.program.Program; +import org.eclipse.swt.widgets.*; +import org.eclipse.ui.*; +import org.eclipse.ui.contexts.IContextService; +import org.eclipse.ui.dialogs.PreferencesUtil; +import org.eclipse.ui.handlers.IHandlerActivation; +import org.eclipse.ui.handlers.IHandlerService; +import org.eclipse.ui.internal.WorkbenchMessages; +import org.eclipse.ui.services.IServiceLocator; +import org.eclipse.ui.swt.IFocusService; +import org.eclipse.ui.texteditor.AbstractTextEditor; +import org.jkiss.code.NotNull; +import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.bundle.UIActivator; +import org.jkiss.dbeaver.model.DBIcon; +import org.jkiss.dbeaver.model.DBPImage; +import org.jkiss.dbeaver.model.DBPNamedObject; +import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration; +import org.jkiss.dbeaver.model.connection.DBPConnectionType; +import org.jkiss.dbeaver.model.meta.IPropertyValueListProvider; +import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; +import org.jkiss.dbeaver.model.preferences.DBPPropertySource; +import org.jkiss.dbeaver.model.runtime.*; +import org.jkiss.dbeaver.runtime.DummyRunnableContext; +import org.jkiss.dbeaver.runtime.RunnableContextDelegate; +import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.controls.*; +import org.jkiss.dbeaver.utils.GeneralUtils; +import org.jkiss.dbeaver.utils.RuntimeUtils; +import org.jkiss.utils.ArrayUtils; +import org.jkiss.utils.BeanUtils; +import org.jkiss.utils.CommonUtils; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.nio.charset.Charset; +import java.text.DecimalFormatSymbols; +import java.text.MessageFormat; +import java.util.Collection; +import java.util.Locale; +import java.util.SortedMap; + +/** + * UI Utils + */ +public class UIUtils { + + private static final Log log = Log.getLog(UIUtils.class); + + public static final String INLINE_WIDGET_EDITOR_ID = "org.jkiss.dbeaver.ui.InlineWidgetEditor"; + + private static SharedTextColors sharedTextColors = new SharedTextColors(); + + public static VerifyListener getIntegerVerifyListener(Locale locale) + { + final DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale); + return e -> { + for (int i = 0; i < e.text.length(); i++) { + char ch = e.text.charAt(i); + if (!Character.isDigit(ch) && ch != symbols.getMinusSign() && ch != symbols.getGroupingSeparator()) { + e.doit = false; + return; + } + } + e.doit = true; + }; + } + + public static VerifyListener getNumberVerifyListener(Locale locale) + { + DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale); + final char[] allowedChars = new char[] { symbols.getDecimalSeparator(), symbols.getGroupingSeparator(), + symbols.getMinusSign(), symbols.getZeroDigit(), symbols.getMonetaryDecimalSeparator(), '+', '.', ',' }; + final String exponentSeparator = symbols.getExponentSeparator(); + return e -> { + for (int i = 0; i < e.text.length(); i++) { + char ch = e.text.charAt(i); + if (!Character.isDigit(ch) && !ArrayUtils.contains(allowedChars, ch) && exponentSeparator.indexOf(ch) == -1) { + e.doit = false; + return; + } + } + e.doit = true; + }; + } + + public static VerifyListener getLongVerifyListener(Text text) { + return e -> { + + // get old text and create new text by using the VerifyEvent.text + final String oldS = text.getText(); + String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end); + + boolean isLong = true; + try { + Long.parseLong(newS); + } + catch(NumberFormatException ex) { + isLong = false; + } + + if(!isLong) + e.doit = false; + }; + } + + public static void createToolBarSeparator(ToolBar toolBar, int style) { + Label label = new Label(toolBar, SWT.NONE); + label.setImage(DBeaverIcons.getImage(UIIcon.DRAG_HANDLE)); + new ToolItem(toolBar, SWT.SEPARATOR).setControl(label); + } + + public static TableColumn createTableColumn(Table table, int style, String text) + { + TableColumn column = new TableColumn(table, style); + column.setText(text); + return column; + } + + public static TreeColumn createTreeColumn(Tree tree, int style, String text) + { + TreeColumn column = new TreeColumn(tree, style); + column.setText(text); + return column; + } + + public static void packColumns(Table table) + { + packColumns(table, false); + } + + public static void packColumns(Table table, boolean fit) + { + table.setRedraw(false); + try { + int totalWidth = 0; + final TableColumn[] columns = table.getColumns(); + for (TableColumn column : columns) { + column.pack(); + totalWidth += column.getWidth(); + } + final Rectangle clientArea = table.getBounds(); + if (clientArea.width > 0 && totalWidth > clientArea.width) { + for (TableColumn column : columns) { + int colWidth = column.getWidth(); + if (colWidth > totalWidth / 3) { + // If some columns are too big (more than 33% of total width) + // Then shrink them to 30% + column.setWidth(totalWidth / 3); + totalWidth -= colWidth; + totalWidth += column.getWidth(); + } + } + int extraSpace = totalWidth - clientArea.width; + + GC gc = new GC(table); + try { + for (TableColumn tc : columns) { + double ratio = (double) tc.getWidth() / totalWidth; + int newWidth = (int) (tc.getWidth() - extraSpace * ratio); + int minWidth = gc.stringExtent(tc.getText()).x; + minWidth += 5; + if (newWidth < minWidth) { + newWidth = minWidth; + } + tc.setWidth(newWidth); + } + } + finally { + gc.dispose(); + } + } + if (fit && totalWidth < clientArea.width) { + int sbWidth = 0; + if (table.getVerticalBar() != null) { + sbWidth = table.getVerticalBar().getSize().x; + } + if (columns.length > 0) { + float extraSpace = (clientArea.width - totalWidth - sbWidth) / columns.length; + for (TableColumn tc : columns) { + tc.setWidth((int) (tc.getWidth() + extraSpace)); + } + } + } + } finally { + table.setRedraw(true); + } + } + + public static void packColumns(@NotNull Tree tree) + { + packColumns(tree, false, null); + } + + public static void packColumns(@NotNull Tree tree, boolean fit, @Nullable float[] ratios) + { + tree.setRedraw(false); + try { + // Check for disposed items + // TODO: it looks like SWT error. Sometimes tree items are disposed and NPE is thrown from column.pack + for (TreeItem item : tree.getItems()) { + if (item.isDisposed()) { + return; + } + } + final TreeColumn[] columns = tree.getColumns(); + for (TreeColumn column : columns) { + column.pack(); + } + + Rectangle clientArea = tree.getClientArea(); + if (clientArea.isEmpty()) { + return; + } + int totalWidth = 0; + for (TreeColumn column : columns) { + int colWidth = column.getWidth(); + if (colWidth > clientArea.width) { + // Too wide column - make it a bit narrower + colWidth = clientArea.width; + column.setWidth(colWidth); + } + totalWidth += colWidth; + } + if (fit) { + int areaWidth = clientArea.width; +// if (tree.getVerticalBar() != null) { +// areaWidth -= tree.getVerticalBar().getSize().x; +// } + if (totalWidth > areaWidth) { + GC gc = new GC(tree); + try { + int extraSpace = totalWidth - areaWidth; + for (TreeColumn tc : columns) { + double ratio = (double) tc.getWidth() / totalWidth; + int newWidth = (int) (tc.getWidth() - extraSpace * ratio); + int minWidth = gc.stringExtent(tc.getText()).x; + minWidth += 5; + if (newWidth < minWidth) { + newWidth = minWidth; + } + tc.setWidth(newWidth); + } + } finally { + gc.dispose(); + } + } else if (totalWidth < areaWidth) { + float extraSpace = areaWidth - totalWidth; + if (columns.length > 0) { + if (ratios == null || ratios.length < columns.length) { + extraSpace /= columns.length; + extraSpace--; + for (TreeColumn tc : columns) { + tc.setWidth((int) (tc.getWidth() + extraSpace)); + } + } else { + for (int i = 0; i < columns.length; i++) { + TreeColumn tc = columns[i]; + tc.setWidth((int) (tc.getWidth() + extraSpace * ratios[i])); + } + } + } + } + } + } finally { + tree.setRedraw(true); + } + } + + public static void maxTableColumnsWidth(Table table) + { + table.setRedraw(false); + try { + int columnCount = table.getColumnCount(); + if (columnCount > 0) { + int totalWidth = 0; + final TableColumn[] columns = table.getColumns(); + for (TableColumn tc : columns) { + tc.pack(); + totalWidth += tc.getWidth(); + } + final Rectangle clientArea = table.getClientArea(); + if (totalWidth < clientArea.width) { + int extraSpace = clientArea.width - totalWidth; + extraSpace /= columnCount; + for (TableColumn tc : columns) { + tc.setWidth(tc.getWidth() + extraSpace); + } + } + } + } finally { + table.setRedraw(true); + } + } + + public static int getColumnAtPos(TableItem item, int x, int y) + { + int columnCount = item.getParent().getColumnCount(); + for (int i = 0; i < columnCount; i++) { + Rectangle rect = item.getBounds(i); + if (rect.contains(x, y)) { + return i; + } + } + return -1; + } + + public static int getColumnAtPos(TreeItem item, int x, int y) + { + int columnCount = item.getParent().getColumnCount(); + for (int i = 0; i < columnCount; i++) { + Rectangle rect = item.getBounds(i); + if (rect.contains(x, y)) { + return i; + } + } + return -1; + } + + public static TableItem getNextTableItem(Table table, TableItem item) { + TableItem[] items = table.getItems(); + for (int i = 0; i < items.length - 1; i++) { + if (items[i] == item) { + return items[i + 1]; + } + } + return null; + } + + public static TreeItem getNextTreeItem(Tree tree, TreeItem item) { + TreeItem[] items = tree.getItems(); + for (int i = 0; i < items.length - 1; i++) { + if (items[i] == item) { + return items[i + 1]; + } + } + return null; + } + + public static void dispose(Widget widget) + { + if (widget != null && !widget.isDisposed()) { + try { + widget.dispose(); + } catch (Exception e) { + log.debug("widget dispose error", e); + } + } + } + + public static void dispose(Resource resource) + { + if (resource != null && !resource.isDisposed()) { + try { + resource.dispose(); + } catch (Exception e) { + log.debug("Resource dispose error", e); + } + } + } + + public static void showMessageBox(final Shell shell, final String title, final String info, final int messageType) + { + Runnable runnable = () -> { + Shell activeShell = shell != null ? shell : getActiveWorkbenchShell(); + MessageBox messageBox = new MessageBox(activeShell, messageType | SWT.OK); + messageBox.setMessage(info); + messageBox.setText(title); + messageBox.open(); + }; + syncExec(runnable); + } + + public static boolean confirmAction(final String title, final String question) + { + return confirmAction(null, title, question); + } + + public static boolean confirmAction(final Shell shell, final String title, final String question) + { + return new UIConfirmation() { + @Override + public Boolean runTask() { + Shell activeShell = shell != null ? shell : getActiveWorkbenchShell(); + MessageBox messageBox = new MessageBox(activeShell, SWT.ICON_QUESTION | SWT.YES | SWT.NO); + messageBox.setMessage(question); + messageBox.setText(title); + int response = messageBox.open(); + return (response == SWT.YES); + } + }.confirm(); + } + + public static int getFontHeight(Control control) { + return getFontHeight(control.getFont()); + } + + public static int getFontHeight(Font font) { + FontData[] fontData = font.getFontData(); + if (fontData.length == 0) { + return 20; + } + return fontData[0].getHeight(); + } + + public static Font makeBoldFont(Font normalFont) + { + return modifyFont(normalFont, SWT.BOLD); + } + + public static Font modifyFont(Font normalFont, int style) + { + FontData[] fontData = normalFont.getFontData(); + fontData[0].setStyle(fontData[0].getStyle() | style); + return new Font(normalFont.getDevice(), fontData[0]); + } + + public static Group createControlGroup(Composite parent, String label, int columns, int layoutStyle, int widthHint) + { + Group group = new Group(parent, SWT.NONE); + group.setText(label); + + GridData gd = new GridData(layoutStyle); + if (widthHint > 0) { + gd.widthHint = widthHint; + } + group.setLayoutData(gd); + + GridLayout gl = new GridLayout(columns, false); + group.setLayout(gl); + + return group; + } + + public static Label createControlLabel(Composite parent, String label) + { + Label textLabel = new Label(parent, SWT.NONE); + textLabel.setText(label + ": "); //$NON-NLS-1$ + // TODO: Should we make it right-aligned? Looks good but not in Eclipse-style + textLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_CENTER /*| GridData.HORIZONTAL_ALIGN_END*/)); + return textLabel; + } + + public static Label createLabel(Composite parent, String label) + { + Label textLabel = new Label(parent, SWT.NONE); + textLabel.setText(label); + + return textLabel; + } + + public static Label createLabel(Composite parent, @NotNull DBPImage image) + { + Label imageLabel = new Label(parent, SWT.NONE); + imageLabel.setImage(DBeaverIcons.getImage(image)); + + return imageLabel; + } + + + public static CLabel createInfoLabel(Composite parent, String text) { + CLabel tipLabel = new CLabel(parent, SWT.NONE); + tipLabel.setImage(JFaceResources.getImage(org.eclipse.jface.dialogs.Dialog.DLG_IMG_MESSAGE_INFO)); + tipLabel.setText(text); + return tipLabel; + } + + public static Text createLabelText(Composite parent, String label, String value) + { + return createLabelText(parent, label, value, SWT.BORDER); + } + + public static Text createLabelText(Composite parent, String label, String value, int style) + { + return createLabelText(parent, label, value, style, new GridData(GridData.FILL_HORIZONTAL)); + } + + @NotNull + public static Text createLabelText(@NotNull Composite parent, @NotNull String label, @Nullable String value, int style, + @Nullable Object layoutData) + { + createControlLabel(parent, label); + + Text text = new Text(parent, style); + fixReadonlyTextBackground(text); + if (value != null) { + text.setText(value); + } + + if (layoutData != null) { + text.setLayoutData(layoutData); + } + + return text; + } + + @NotNull + public static Spinner createLabelSpinner(@NotNull Composite parent, @NotNull String label, @Nullable String tooltip, int value, int minimum, int maximum) { + final Label l = createControlLabel(parent, label); + if (tooltip != null) { + l.setToolTipText(tooltip); + } + + return createSpinner(parent, tooltip, value, minimum, maximum); + } + + @NotNull + public static Spinner createSpinner(Composite parent, String tooltip, int value, int minimum, int maximum) { + Spinner spinner = new Spinner(parent, SWT.BORDER); + spinner.setMinimum(minimum); + spinner.setMaximum(maximum); + spinner.setSelection(value); + if (tooltip != null) { + spinner.setToolTipText(tooltip); + } + + return spinner; + } + + @NotNull + public static Spinner createLabelSpinner(@NotNull Composite parent, @NotNull String label, int value, int minimum, int maximum) + { + return createLabelSpinner(parent, label, null, value, minimum, maximum); + } + + @NotNull + public static Button createLabelCheckbox(Composite parent, String label, boolean checked) + { + return createLabelCheckbox(parent, label, null, checked, SWT.NONE); + } + + @NotNull + public static Button createLabelCheckbox(Composite parent, String label, String tooltip, boolean checked) + { + return createLabelCheckbox(parent, label, tooltip, checked, SWT.NONE); + } + + @NotNull + public static Button createLabelCheckbox(@NotNull Composite parent, @NotNull String label, @Nullable String tooltip, + boolean checked, int style) + { + Label labelControl = createControlLabel(parent, label); + // labelControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + final Button button = new Button(parent, SWT.CHECK | style); + if (checked) { + button.setSelection(true); + } + labelControl.addMouseListener(new MouseAdapter() { + @Override + public void mouseUp(MouseEvent e) + { + if (!button.isDisposed() && button.isVisible() && button.isEnabled()) { + button.setSelection(!button.getSelection()); + button.notifyListeners(SWT.Selection, new Event()); + } + } + }); + + if (tooltip != null) { + labelControl.setToolTipText(tooltip); + button.setToolTipText(tooltip); + } + return button; + } + + public static Button createCheckbox(Composite parent, String label, String tooltip, boolean checked, int hSpan) { + Button checkbox = createCheckbox(parent, label, checked); + if (tooltip != null) { + checkbox.setToolTipText(tooltip); + } + if (hSpan > 1) { + GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + gd.horizontalSpan = hSpan; + checkbox.setLayoutData(gd); + } + return checkbox; + } + + public static Button createCheckbox(Composite parent, String label, boolean checked) + { + final Button button = new Button(parent, SWT.CHECK); + button.setText(label); + if (checked) { + button.setSelection(true); + } + + return button; + } + + public static Combo createLabelCombo(Composite parent, String label, int style) + { + return createLabelCombo(parent, label, null, style); + } + + public static Combo createLabelCombo(Composite parent, String label, String tooltip, int style) + { + Label labelControl = createControlLabel(parent, label); + if (tooltip != null) { + labelControl.setToolTipText(tooltip); + } + + final Combo combo = new Combo(parent, style); + combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + if (tooltip != null) { + combo.setToolTipText(tooltip); + } + + return combo; + } + + public static Button createToolButton(Composite parent, String text, SelectionListener selectionListener) + { + Button button = new Button(parent, SWT.PUSH); + button.setText(text); + button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + if (selectionListener != null) { + button.addSelectionListener(selectionListener); + } + return button; + } + + public static void updateContributionItems(IContributionManager manager) { + for (IContributionItem item : manager.getItems()) { + item.update(); + } + } + + @Nullable + public static Shell getActiveShell() + { + IWorkbench workbench = PlatformUI.getWorkbench(); + return workbench == null ? null : getShell(workbench.getActiveWorkbenchWindow()); + } + + @Nullable + public static Shell getShell(IShellProvider provider) + { + return provider == null ? null : provider.getShell(); + } + + @Nullable + public static Shell getShell(IWorkbenchPart part) + { + return part == null ? null : getShell(part.getSite()); + } + + @Nullable + public static Integer getTextInteger(Text text) + { + String str = text.getText(); + str = str.trim(); + if (str.length() == 0) { + return null; + } + try { + return Integer.valueOf(str); + } catch (NumberFormatException e) { + log.debug(e); + return null; + } + } + + @Nullable + public static IHandlerActivation registerKeyBinding(IServiceLocator serviceLocator, IAction action) + { + IHandlerService handlerService = serviceLocator.getService(IHandlerService.class); + if (handlerService != null) { + return handlerService.activateHandler(action.getActionDefinitionId(), new ActionHandler(action)); + } else { + return null; + } + } + + public static Composite createPlaceholder(Composite parent, int columns) + { + return createPlaceholder(parent, columns, 0); + } + + public static Composite createPlaceholder(Composite parent, int columns, int spacing) + { + Composite ph = new Composite(parent, SWT.NONE); + GridLayout gl = new GridLayout(columns, false); + gl.verticalSpacing = spacing; + gl.horizontalSpacing = spacing; + gl.marginHeight = 0; + gl.marginWidth = 0; + ph.setLayout(gl); + return ph; + } + + public static void setGridSpan(Control control, int horizontalSpan, int verticalSpan) { + GridData gd; + final Object layoutData = control.getLayoutData(); + if (layoutData == null) { + if (control.getParent().getLayout() instanceof GridLayout) { + gd = new GridData(); + control.setLayoutData(gd); + } else { + log.debug("Can't set grid span for layout: " + control.getParent().getLayout()); + return; + } + } else if (layoutData instanceof GridData) { + gd = (GridData) layoutData; + } else { + log.debug("Can't set grid span for non-grid layout: " + layoutData.getClass().getName()); + return; + } + gd.horizontalSpan = horizontalSpan; + gd.verticalSpan = verticalSpan; + } + + public static Label createHorizontalLine(Composite parent) + { + Label horizontalLine = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); + horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 1, 1)); + return horizontalLine; + } + + @Nullable + public static String getComboSelection(Combo combo) + { + int selectionIndex = combo.getSelectionIndex(); + if (selectionIndex < 0) { + return null; + } + return combo.getItem(selectionIndex); + } + + public static boolean setComboSelection(Combo combo, String value) + { + if (value == null) { + return false; + } + int count = combo.getItemCount(); + for (int i = 0; i < count; i++) { + if (value.equals(combo.getItem(i))) { + combo.select(i); + return true; + } + } + return false; + } + +// public static Combo createEncodingCombo(Composite parent, String curCharset) +// { +// +// } + + public static Combo createEncodingCombo(Composite parent, @Nullable String curCharset) + { + Combo encodingCombo = new Combo(parent, SWT.DROP_DOWN); + encodingCombo.setVisibleItemCount(30); + SortedMap charsetMap = Charset.availableCharsets(); + int index = 0; + int defIndex = -1; + for (String csName : charsetMap.keySet()) { + Charset charset = charsetMap.get(csName); + encodingCombo.add(charset.displayName()); + if (curCharset != null) { + if (charset.displayName().equalsIgnoreCase(curCharset)) { + defIndex = index; + } + if (defIndex < 0) { + for (String alias : charset.aliases()) { + if (alias.equalsIgnoreCase(curCharset)) { + defIndex = index; + } + } + } + } + index++; + } + if (defIndex >= 0) { + encodingCombo.select(defIndex); + } else if (curCharset != null) { + log.warn("Charset '" + curCharset + "' is not recognized"); //$NON-NLS-1$ //$NON-NLS-2$ + } + return encodingCombo; + } + + @NotNull + public static SashForm createPartDivider(final IWorkbenchPart workbenchPart, Composite parent, int style) + { + final CustomSashForm sash = new CustomSashForm(parent, style); + + return sash; + } + + @NotNull + public static String formatMessage(@Nullable String message, @Nullable Object... args) + { + if (message == null) { + return ""; //$NON-NLS-1$ + } else { + return MessageFormat.format(message, args); + } + } + + @NotNull + public static Button createPushButton(@NotNull Composite parent, @Nullable String label, @Nullable Image image) + { + return createPushButton(parent, label, image, null); + } + + @NotNull + public static Button createPushButton(@NotNull Composite parent, @Nullable String label, @Nullable Image image, @Nullable SelectionListener selectionListener) + { + Button button = new Button(parent, SWT.PUSH); + if (label != null) { + button.setText(label); + } + if (image != null) { + button.setImage(image); + } + if (selectionListener != null) { + button.addSelectionListener(selectionListener); + } + return button; + } + + + public static void setHelp(Control control, String pluginId, String helpContextID) + { + PlatformUI.getWorkbench().getHelpSystem().setHelp(control, pluginId + "." + helpContextID); //$NON-NLS-1$ + } + + public static void setHelp(Control control, String helpContextID) + { + setHelp(control, UIActivator.PLUGIN_ID, helpContextID); + } + + public static String makeAnchor(String text) + { + return "" + text + ""; //$NON-NLS-1$ //$NON-NLS-2$ + } + + @Nullable + public static T findView(IWorkbenchWindow workbenchWindow, Class viewClass) + { + IViewReference[] references = workbenchWindow.getActivePage().getViewReferences(); + for (IViewReference ref : references) { + IViewPart view = ref.getView(false); + if (view != null && viewClass.isAssignableFrom(view.getClass())) { + return viewClass.cast(view); + } + } + return null; + } + + @Nullable + public static IViewPart findView(IWorkbenchWindow workbenchWindow, String viewId) + { + IViewReference[] references = workbenchWindow.getActivePage().getViewReferences(); + for (IViewReference ref : references) { + if (ref.getId().equals(viewId)) { + return ref.getView(false); + } + } + return null; + } + + public static void setClipboardContents(Display display, Transfer transfer, Object contents) + { + Clipboard clipboard = new Clipboard(display); + clipboard.setContents(new Object[] { contents }, new Transfer[] { transfer }); + clipboard.dispose(); + } + + public static void showPreferencesFor(Shell shell, Object element, String ... defPageID) + { + PreferenceDialog propDialog; + if (element == null) { + propDialog = PreferencesUtil.createPreferenceDialogOn(shell, defPageID[0], defPageID, null, PreferencesUtil.OPTION_NONE); + } else { + propDialog = PreferencesUtil.createPropertyDialogOn(shell, element, defPageID[0], null, null, PreferencesUtil.OPTION_NONE); + } + if (propDialog != null) { + propDialog.open(); + } + } + + public static void addFocusTracker(IServiceLocator serviceLocator, String controlID, Control control) + { + final IFocusService focusService = serviceLocator.getService(IFocusService.class); + if (focusService != null) { + focusService.addFocusTracker(control, controlID); + } else { + log.debug("Focus service not found in " + serviceLocator); + } + } + + public static void removeFocusTracker(IServiceLocator serviceLocator, Control control) + { + if (PlatformUI.getWorkbench().isClosing()) { + // TODO: it is a bug in eclipse. During workbench shutdown disposed service returned. + return; + } + final IFocusService focusService = serviceLocator.getService(IFocusService.class); + if (focusService != null) { + focusService.removeFocusTracker(control); + } else { + log.debug("Focus service not found in " + serviceLocator); + } + } + + public static void addDefaultEditActionsSupport(final IServiceLocator site, final Control control) { + UIUtils.addFocusTracker(site, UIUtils.INLINE_WIDGET_EDITOR_ID, control); + control.addDisposeListener(e -> { + // Unregister from focus service + UIUtils.removeFocusTracker(site, control); + }); + } + + + @NotNull + public static IDialogSettings getDialogSettings(@NotNull String dialogId) + { + IDialogSettings workbenchSettings = UIActivator.getDefault().getDialogSettings(); + return getSettingsSection(workbenchSettings, dialogId); + } + + @NotNull + public static IDialogSettings getSettingsSection(@NotNull IDialogSettings parent, @NotNull String sectionId) + { + IDialogSettings section = parent.getSection(sectionId); + if (section == null) { + section = parent.addNewSection(sectionId); + } + return section; + } + + public static void putSectionValueWithType(IDialogSettings dialogSettings, @NotNull String key, Object value) { + if (value == null) { + dialogSettings.put(key, ((String) null)); + return; + } + + if (value instanceof Double) { + dialogSettings.put(key, (Double) value); + } else + if (value instanceof Float) { + dialogSettings.put(key, (Float) value); + } else + if (value instanceof Integer) { + dialogSettings.put(key, (Integer) value); + } else + if (value instanceof Long) { + dialogSettings.put(key, (Long) value); + } else + if (value instanceof String) { + dialogSettings.put(key, (String) value); + } else + if (value instanceof Boolean) { + dialogSettings.put(key, (Boolean) value); + } else { + // do nothing + } + dialogSettings.put(key + "_type", value.getClass().getSimpleName()); + } + + public static Object getSectionValueWithType(IDialogSettings dialogSettings, @NotNull String key) { + String type = dialogSettings.get(key + "_type"); + if (type != null) { + switch (type) { + case "Double": return dialogSettings.getDouble(key); + case "Float": return dialogSettings.getFloat(key); + case "Integer": return dialogSettings.getInt(key); + case "Long": return dialogSettings.getLong(key); + case "String": return dialogSettings.get(key); + case "Boolean": return dialogSettings.getBoolean(key); + } + } + return dialogSettings.get(key); + } + + @Nullable + public static IWorkbenchPartSite getWorkbenchPartSite(IServiceLocator serviceLocator) + { + IWorkbenchPartSite partSite = serviceLocator.getService(IWorkbenchPartSite.class); + if (partSite == null) { + IWorkbenchPart activePart = serviceLocator.getService(IWorkbenchPart.class); + if (activePart == null) { + IWorkbenchWindow workbenchWindow = getActiveWorkbenchWindow(); + if (workbenchWindow != null) { + IWorkbenchPage activePage = workbenchWindow.getActivePage(); + if (activePage != null) { + activePart = activePage.getActivePart(); + } + } + } + if (activePart != null) { + partSite = activePart.getSite(); + } + } + return partSite; + } + + public static boolean isContextActive(String contextId) + { + Collection contextIds = getActiveWorkbenchWindow().getService(IContextService.class).getActiveContextIds(); + for (Object id : contextIds) { + if (contextId.equals(id)) { + return true; + } + } + return false; + } + + @Nullable + public static ISelectionProvider getSelectionProvider(IServiceLocator serviceLocator) + { + ISelectionProvider selectionProvider = serviceLocator.getService(ISelectionProvider.class); + if (selectionProvider != null) { + return selectionProvider; + } + IWorkbenchPartSite partSite = getWorkbenchPartSite(serviceLocator); + if (partSite == null) { + IWorkbenchPart activePart = serviceLocator.getService(IWorkbenchPart.class); + if (activePart == null) { + IWorkbenchWindow activeWindow = getActiveWorkbenchWindow(); + if (activeWindow != null) { + activePart = activeWindow.getActivePage().getActivePart(); + } + } + if (activePart != null) { + partSite = activePart.getSite(); + } + } + if (partSite != null) { + return partSite.getSelectionProvider(); + } else { + return null; + } + } + + public static void enableWithChildren(Control control, boolean enable) + { + control.setEnabled(enable); + if (control instanceof Composite) { + for (Control child : ((Composite)control).getChildren()) { + if (child instanceof Composite) { + enableWithChildren(child, enable); + } else { + child.setEnabled(enable); + } + } + } + } + + /** + * Determine whether this control or any of it's child has focus + * + * @param control + * control to check + * @return true if it has focus + */ + public static boolean hasFocus(Control control) + { + Control focusControl = control.getDisplay().getFocusControl(); + if (focusControl == null) { + return false; + } + for (Control fc = focusControl; fc != null; fc = fc.getParent()) { + if (fc == control) { + return true; + } + } + return false; + } + + /** + * Eclipse hack. Disables/enabled all key bindings in specified site's part. Works only if host editor is extender of + * AbstractTextEditor Uses reflection because setActionActivation is private method + * TODO: find better way to disable key bindings or prioritize event handling to widgets + * + * @param partSite workbench part site + * @param enable enable or disable + */ + @Deprecated + public static void enableHostEditorKeyBindings(IWorkbenchPartSite partSite, boolean enable) + { + IWorkbenchPart part = partSite.getPart(); + if (part instanceof AbstractTextEditor) { + AbstractTextEditor hostEditor = (AbstractTextEditor) part; + Control widget = hostEditor.getAdapter(Control.class); + if (widget == null || widget.isDisposed()) { + return; + } + try { + Method activatorMethod = AbstractTextEditor.class.getDeclaredMethod("setActionActivation", Boolean.TYPE); + activatorMethod.setAccessible(true); + activatorMethod.invoke(hostEditor, enable); + } catch (Throwable e) { + if (e instanceof InvocationTargetException) { + e = ((InvocationTargetException) e).getTargetException(); + } + log.warn("Can't disable text editor action activations", e); + } + //hostEditor.getEditorSite().getActionBarContributor().setActiveEditor(hostEditor); + } + } + + public static void enableHostEditorKeyBindingsSupport(final IWorkbenchPartSite partSite, Control control) + { + if (!(partSite.getPart() instanceof AbstractTextEditor)) { + return; + } + + final boolean[] activated = new boolean[] {false}; + control.addFocusListener(new FocusListener() { + @Override + public void focusGained(FocusEvent e) { + if (!activated[0]) { + UIUtils.enableHostEditorKeyBindings(partSite, false); + activated[0] = true; + } + } + @Override + public void focusLost(FocusEvent e) { + if (activated[0]) { + UIUtils.enableHostEditorKeyBindings(partSite, true); + activated[0] = false; + } + } + }); + control.addDisposeListener(e -> { + if (activated[0]) { + UIUtils.enableHostEditorKeyBindings(partSite, true); + activated[0] = false; + } + }); + } + + public static CTabItem getTabItem(CTabFolder tabFolder, Object data) + { + for (CTabItem item : tabFolder.getItems()) { + if (item.getData() == data) { + return item; + } + } + return null; + } + + public static void disposeControlOnItemDispose(final CTabItem tabItem) { + tabItem.addDisposeListener(e -> { + final Control control = tabItem.getControl(); + if (!control.isDisposed()) { + control.dispose(); + } + }); + } + + public static TreeItem getTreeItem(Tree tree, Object data) + { + for (TreeItem item : tree.getItems()) { + if (item.getData() == data) { + return item; + } + } + return null; + } + + public static int blend(int v1, int v2, int ratio) + { + return (ratio * v1 + (100 - ratio) * v2) / 100; + } + + public static RGB blend(RGB c1, RGB c2, int ratio) + { + int r = blend(c1.red, c2.red, ratio); + int g = blend(c1.green, c2.green, ratio); + int b = blend(c1.blue, c2.blue, ratio); + return new RGB(r, g, b); + } + + public static boolean isParent(Control parent, Control child) { + for (Control c = child; c != null; c = c.getParent()) { + if (c == parent) { + return true; + } + } + return false; + } + + public static boolean isInDialog(Control control) { + return control.getShell().getData() instanceof org.eclipse.jface.dialogs.Dialog; + } + + public static Link createLink(Composite parent, String text, SelectionListener listener) { + Link link = new Link(parent, SWT.NONE); + link.setText(text); + link.addSelectionListener(listener); + return link; + } + + public static CellEditor createPropertyEditor(final IServiceLocator serviceLocator, Composite parent, DBPPropertySource source, DBPPropertyDescriptor property, int style) + { + if (source == null) { + return null; + } + final Object object = source.getEditableValue(); + if (!property.isEditable(object)) { + return null; + } + CellEditor cellEditor = UIUtils.createCellEditor(parent, object, property, style); + if (cellEditor != null) { + final Control editorControl = cellEditor.getControl(); + addDefaultEditActionsSupport(serviceLocator, editorControl); + } + return cellEditor; + } + + public static CellEditor createCellEditor(Composite parent, Object object, DBPPropertyDescriptor property, int style) + { + // List + if (property instanceof IPropertyValueListProvider) { + final IPropertyValueListProvider listProvider = (IPropertyValueListProvider) property; + final Object[] items = listProvider.getPossibleValues(object); + if (items != null) { + final String[] strings = new String[items.length]; + for (int i = 0, itemsLength = items.length; i < itemsLength; i++) { + strings[i] = items[i] instanceof DBPNamedObject ? ((DBPNamedObject)items[i]).getName() : CommonUtils.toString(items[i]); + } + final CustomComboBoxCellEditor editor = new CustomComboBoxCellEditor( + parent, + strings, + SWT.DROP_DOWN | (listProvider.allowCustomValue() ? SWT.NONE : SWT.READ_ONLY)); + return editor; + } + } + Class propertyType = property.getDataType(); + if (propertyType == null || CharSequence.class.isAssignableFrom(propertyType)) { + return new CustomTextCellEditor(parent); + } else if (BeanUtils.isNumericType(propertyType)) { + return new CustomNumberCellEditor(parent, propertyType); + } else if (BeanUtils.isBooleanType(propertyType)) { + return new CustomCheckboxCellEditor(parent, style); + //return new CheckboxCellEditor(parent); + } else if (propertyType.isEnum()) { + final Object[] enumConstants = propertyType.getEnumConstants(); + final String[] strings = new String[enumConstants.length]; + for (int i = 0, itemsLength = enumConstants.length; i < itemsLength; i++) { + strings[i] = ((Enum)enumConstants[i]).name(); + } + return new CustomComboBoxCellEditor( + parent, + strings, + SWT.DROP_DOWN | SWT.READ_ONLY); + } else { + log.warn("Unsupported property type: " + propertyType.getName()); + return null; + } + } + + public static void postEvent(Control ownerControl, final Event event) { + final Display display = ownerControl.getDisplay(); + asyncExec(() -> display.post(event)); + } + + public static void drawMessageOverControl(Control control, PaintEvent e, String message, int offset) { + Rectangle bounds = control.getBounds(); + for (String line : message.split("\n")) { + Point ext = e.gc.textExtent(line); + e.gc.drawText(line, (bounds.width - ext.x) / 2, bounds.height / 3 + offset); + offset += ext.y; + } + } + + public static boolean launchProgram(String path) + { + return Program.launch(path); + } + + public static void fillDefaultTableContextMenu(IMenuManager menu, final Table table) { + menu.add(new Action(WorkbenchMessages.Workbench_copy) { + @Override + public void run() { + StringBuilder text = new StringBuilder(); + int columnCount = table.getColumnCount(); + for (TableItem item : table.getSelection()) { + if (text.length() > 0) text.append("\n"); + for (int i = 0 ; i < columnCount; i++) { + if (i > 0) text.append("\t"); + text.append(item.getText(i)); + } + } + UIUtils.setClipboardContents(table.getDisplay(), TextTransfer.getInstance(), text.toString()); + } + }); + } + + public static void addFileOpenOverlay(Text text, SelectionListener listener) { + final Image browseImage = DBeaverIcons.getImage(DBIcon.TREE_FOLDER); + final Rectangle iconBounds = browseImage.getBounds(); + text.addPaintListener(e -> { + final Rectangle bounds = ((Text) e.widget).getBounds(); + e.gc.drawImage(browseImage, bounds.width - iconBounds.width - 2, 0); + }); + } + + public static Combo createDelimiterCombo(Composite group, String label, String[] options, String defDelimiter, boolean multiDelims) { + createControlLabel(group, label); + Combo combo = new Combo(group, SWT.BORDER | SWT.DROP_DOWN); + combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + for (String option : options) { + combo.add(CommonUtils.escapeDisplayString(option)); + } + if (!multiDelims) { + if (!ArrayUtils.contains(options, defDelimiter)) { + combo.add(CommonUtils.escapeDisplayString(defDelimiter)); + } + String[] items = combo.getItems(); + for (int i = 0, itemsLength = items.length; i < itemsLength; i++) { + String delim = CommonUtils.unescapeDisplayString(items[i]); + if (delim.equals(defDelimiter)) { + combo.select(i); + break; + } + } + } else { + combo.setText(CommonUtils.escapeDisplayString(defDelimiter)); + } + return combo; + } + + public static SharedTextColors getSharedTextColors() { + return sharedTextColors; + } + + public static void run( + IRunnableContext runnableContext, + boolean fork, + boolean cancelable, + final DBRRunnableWithProgress runnableWithProgress) + throws InvocationTargetException, InterruptedException { + runnableContext.run(fork, cancelable, + monitor -> runnableWithProgress.run(RuntimeUtils.makeMonitor(monitor))); + } + + public static AbstractUIJob runUIJob(String jobName, final DBRRunnableWithProgress runnableWithProgress) { + return runUIJob(jobName, 0, runnableWithProgress); + } + + public static AbstractUIJob runUIJob(String jobName, int timeout, final DBRRunnableWithProgress runnableWithProgress) { + AbstractUIJob job = new AbstractUIJob(jobName) { + @Override + public IStatus runInUIThread(DBRProgressMonitor monitor) { + try { + runnableWithProgress.run(monitor); + } catch (InvocationTargetException e) { + return GeneralUtils.makeExceptionStatus(e); + } catch (InterruptedException e) { + return Status.CANCEL_STATUS; + } + return Status.OK_STATUS; + } + }; + job.setSystem(true); + job.schedule(timeout); + return job; + } + + @NotNull + public static IWorkbenchWindow getActiveWorkbenchWindow() { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); + if (window != null) { + return window; + } + IWorkbenchWindow[] windows = workbench.getWorkbenchWindows(); + if (windows.length > 0) { + return windows[0]; + } + throw new IllegalStateException("No workbench window"); + } + + public static Shell getActiveWorkbenchShell() { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); + if (window != null) { + return window.getShell(); + } else { + return Display.getDefault().getActiveShell(); + } + } + + public static DBRRunnableContext getDefaultRunnableContext() { + IWorkbench workbench = PlatformUI.getWorkbench(); + if (workbench != null && workbench.getActiveWorkbenchWindow() != null) { + return new RunnableContextDelegate(workbench.getActiveWorkbenchWindow()); + } else { + return (fork, cancelable, runnable) -> runnable.run(new VoidProgressMonitor()); + } + } + + /** + * Runs task in Eclipse progress service. + * NOTE: this call can't be canceled if it will block in IO + */ + public static void runInProgressService(final DBRRunnableWithProgress runnable) + throws InvocationTargetException, InterruptedException { + getDefaultRunnableContext().run(true, true, runnable); + } + + /** + * Runs task in Eclipse progress dialog. + * NOTE: this call can't be canceled if it will block in IO + */ + public static void runInProgressDialog(final DBRRunnableWithProgress runnable) throws InvocationTargetException { + try { + IRunnableContext runnableContext; + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + if (workbenchWindow != null) { + runnableContext = new ProgressMonitorDialog(workbench.getActiveWorkbenchWindow().getShell()); + } else { + runnableContext = workbench.getProgressService(); + } + runnableContext.run(true, true, monitor -> runnable.run(RuntimeUtils.makeMonitor(monitor))); + } catch (InterruptedException e) { + // do nothing + } + } + + public static void runInUI(IRunnableContext context, final DBRRunnableWithProgress runnable) { + try { + PlatformUI.getWorkbench().getProgressService().runInUI(context, + monitor -> runnable.run(RuntimeUtils.makeMonitor(monitor)), ResourcesPlugin.getWorkspace().getRoot()); + } catch (InvocationTargetException e) { + DBUserInterface.getInstance().showError(null, null, e.getTargetException()); + } catch (InterruptedException e) { + // do nothing + } + } + + public static void runInUI(final DBRRunnableWithProgress runnable) { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); + IRunnableContext context = window != null ? window : DummyRunnableContext.INSTANCE; + runInUI(context, runnable); + } + + public static Display getDisplay() { + try { + return PlatformUI.getWorkbench().getDisplay(); + } catch (Exception e) { + return Display.getDefault(); + } + } + + public static void asyncExec(Runnable runnable) { + try { + getDisplay().asyncExec(runnable); + } catch (Exception e) { + log.debug(e); + } + } + + public static void syncExec(Runnable runnable) { + try { + getDisplay().syncExec(runnable); + } catch (Exception e) { + log.debug(e); + } + } + + public static T syncExec(RunnableWithResult runnable) { + try { + getDisplay().syncExec(runnable); + return runnable.getResult(); + } catch (Exception e) { + log.debug(e); + return null; + } + } + + @Nullable + public static Color getSharedColor(@Nullable String rgbString) { + if (CommonUtils.isEmpty(rgbString)) { + return null; + } + return sharedTextColors.getColor(rgbString); + } + + public static Color getConnectionColor(DBPConnectionConfiguration connectionInfo) { + String rgbString = connectionInfo.getConnectionColor(); + if (CommonUtils.isEmpty(rgbString)) { + rgbString = connectionInfo.getConnectionType().getColor(); + } + if (CommonUtils.isEmpty(rgbString)) { + return null; + } + Color connectionColor = sharedTextColors.getColor(rgbString); + if (connectionColor.getBlue() == 255 && connectionColor.getRed() == 255 && connectionColor.getGreen() == 255) { + // For white color return just null to avoid explicit color set. + // It is important for dark themes + return null; + } + return connectionColor; + } + + public static Color getConnectionTypeColor(DBPConnectionType connectionType) { + String rgbString = connectionType.getColor(); + if (CommonUtils.isEmpty(rgbString)) { + return null; + } + return sharedTextColors.getColor(StringConverter.asRGB(rgbString)); + } + + public static Shell createCenteredShell(Shell parent) { + + final Rectangle bounds = parent.getBounds(); + final int x = bounds.x + bounds.width / 2 - 120; + final int y = bounds.y + bounds.height / 2 - 170; + + final Shell shell = new Shell( parent ); + + shell.setBounds( x, y, 0, 0 ); + + return shell; + } + + public static Image getShardImage(String id) { + return PlatformUI.getWorkbench().getSharedImages().getImage(id); + } + + public static ImageDescriptor getShardImageDescriptor(String id) { + return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(id); + } + + public static void installContentProposal(Control control, IControlContentAdapter contentAdapter, IContentProposalProvider provider) { + installContentProposal(control, contentAdapter, provider, false, true); + } + + public static ContentProposalAdapter installContentProposal(Control control, IControlContentAdapter contentAdapter, IContentProposalProvider provider, boolean autoActivation, boolean insertAfter) { + try { + KeyStroke keyStroke = autoActivation ? null : KeyStroke.getInstance("Ctrl+Space"); + final ContentProposalAdapter proposalAdapter = new ContentProposalAdapter( + control, + contentAdapter, + provider, + keyStroke, + autoActivation ? ".abcdefghijklmnopqrstuvwxyz_$(".toCharArray() : ".(".toCharArray()); + proposalAdapter.setProposalAcceptanceStyle(insertAfter ? ContentProposalAdapter.PROPOSAL_INSERT : ContentProposalAdapter.PROPOSAL_REPLACE); + proposalAdapter.setPopupSize(new Point(300, 200)); + //proposalAdapter.setFilterStyle(ContentProposalAdapter.FILTER_CHARACTER); + return proposalAdapter; + } catch (ParseException e) { + log.error("Error installing filters content assistant"); + return null; + } + } + + public static void setContentProposalToolTip(Control control, String toolTip, String ... variables) { + StringBuilder varsTip = new StringBuilder(); + for (String var : variables) { + if (varsTip.length() > 0) varsTip.append(",\n"); + varsTip.append("\t").append(GeneralUtils.variablePattern(var)); + } + varsTip.append("."); + control.setToolTipText(toolTip + ". Allowed variables:\n" + varsTip); + + } + + public static CoolItem createCoolItem(CoolBar coolBar, Control control) { + CoolItem item = new CoolItem(coolBar, SWT.NONE); + item.setControl(control); + Point size = control.computeSize(SWT.DEFAULT, SWT.DEFAULT); + Point preferred = item.computeSize(size.x, size.y); + item.setPreferredSize(preferred); + return item; + } + + public static void resizeShell(Shell shell) { + Point shellSize = shell.getSize(); + Point compSize = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT); + compSize.y += 20; + if (shellSize.y < compSize.y) { + shell.setSize(compSize); + shell.layout(true); + } + } + + public static void waitJobCompletion(AbstractJob job) { + // Wait until job finished + Display display = Display.getCurrent(); + while (!job.isFinished()) { + if (!display.readAndDispatch()) { + display.sleep(); + } + } + display.update(); + } + + public static void fixReadonlyTextBackground(Text textField) { + if ((textField.getStyle() & SWT.READ_ONLY) == SWT.READ_ONLY) { + // Do nothing because in E4.6 there is no good solution: https://bugs.eclipse.org/bugs/show_bug.cgi?id=340889 + //textField.setBackground(textField.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); + } else { + textField.setBackground(null); + } + } + + public static ColorRegistry getColorRegistry() { + return PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry(); + } + + public static Color getGlobalColor(String colorName) { + return getColorRegistry().get(colorName); + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CComboContentAdapter.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CComboContentAdapter.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CComboContentAdapter.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CComboContentAdapter.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CSmartCombo.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CSmartCombo.java similarity index 99% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CSmartCombo.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CSmartCombo.java index ce5f468fd0ed42a3cb98e2f1bc1ff8456f58dfc9..ae70583f2c569337e7f27f546ea2e8d693d46f7b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CSmartCombo.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CSmartCombo.java @@ -25,7 +25,7 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.ui.UIUtils; import java.util.ArrayList; import java.util.List; @@ -151,7 +151,7 @@ public class CSmartCombo extends Composite { } // Update default bg color in async mode to let Eclipse set appropriate styles - DBeaverUI.asyncExec(() -> { + UIUtils.asyncExec(() -> { if (isDisposed()) { return; } @@ -570,7 +570,7 @@ public class CSmartCombo extends Composite { this.popup = null; this.dropDownControl = null; disposeTime = System.currentTimeMillis(); - DBeaverUI.asyncExec(toDispose::dispose); + UIUtils.asyncExec(toDispose::dispose); } return; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CSmartSelector.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CSmartSelector.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CSmartSelector.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CSmartSelector.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomCheckboxCellEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomCheckboxCellEditor.java similarity index 97% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomCheckboxCellEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomCheckboxCellEditor.java index 324d337e08f1a4349fbcfee02230b5f156cee52d..04086164ac38ca51cc3f6f653cee3c0517e9c51e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomCheckboxCellEditor.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomCheckboxCellEditor.java @@ -28,8 +28,8 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.ImageUtils; +import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.utils.CommonUtils; /** @@ -121,7 +121,7 @@ public class CustomCheckboxCellEditor extends CellEditor { setCheckIcon(); applyEditorValue(); // Run in async to avoid NPE. fireApplyEditorValue disposes and nullifies editor - DBeaverUI.asyncExec(this::fireApplyEditorValue); + UIUtils.asyncExec(this::fireApplyEditorValue); } private void addMouseListener() { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomComboBoxCellEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomComboBoxCellEditor.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomComboBoxCellEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomComboBoxCellEditor.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomNumberCellEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomNumberCellEditor.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomNumberCellEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomNumberCellEditor.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomSashForm.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomSashForm.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomSashForm.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomSashForm.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTableEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTableEditor.java similarity index 82% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTableEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTableEditor.java index 4aa1db04d126a34e10ebf7879571afe332e5d486..6725c07068a5f78c12ea724b2f91262e94117092 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTableEditor.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTableEditor.java @@ -16,6 +16,7 @@ */ package org.jkiss.dbeaver.ui.controls; +import org.eclipse.jface.fieldassist.ContentProposalAdapter; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.TableEditor; import org.eclipse.swt.events.*; @@ -23,7 +24,6 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.UIUtils; /** @@ -33,12 +33,18 @@ public abstract class CustomTableEditor implements MouseListener, TraverseListen private final Table table; private final TableEditor tableEditor; + private ContentProposalAdapter proposalAdapter; private int columnIndex; protected int firstTraverseIndex = -1, lastTraverseIndex = -1; protected boolean editOnEnter = true; public CustomTableEditor(Table table) { + this(table, null); + } + + public CustomTableEditor(Table table, ContentProposalAdapter proposalAdapter) { this.table = table; + this.proposalAdapter = proposalAdapter; tableEditor = new TableEditor(table); tableEditor.horizontalAlignment = SWT.CENTER; @@ -50,6 +56,10 @@ public abstract class CustomTableEditor implements MouseListener, TraverseListen table.addTraverseListener(this); } + public void setProposalAdapter(ContentProposalAdapter proposalAdapter) { + this.proposalAdapter = proposalAdapter; + } + @Override public void mouseDoubleClick(MouseEvent e) { @@ -69,12 +79,7 @@ public abstract class CustomTableEditor implements MouseListener, TraverseListen final TableItem item = table.getItem(new Point(e.x, e.y)); if (item != null) { columnIndex = UIUtils.getColumnAtPos(item, e.x, e.y); - DBeaverUI.asyncExec(new Runnable() { - @Override - public void run() { - showEditor(item); - } - }); + UIUtils.asyncExec(() -> showEditor(item)); } } @@ -90,18 +95,26 @@ public abstract class CustomTableEditor implements MouseListener, TraverseListen if (editor == null) { return; } + tableEditor.minimumHeight = editor.computeSize(SWT.DEFAULT, SWT.DEFAULT).y; + editor.setFocus(); editor.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { saveEditorValue(editor, columnIndex, tableEditor.getItem()); - closeEditor(); + if (!isProposalPopupActive()) { + closeEditor(); + } } }); editor.addTraverseListener(this); tableEditor.setEditor(editor, item, columnIndex); } + private boolean isProposalPopupActive() { + return proposalAdapter != null && proposalAdapter.isProposalPopupOpen(); + } + public void closeEditor() { Control oldEditor = this.tableEditor.getEditor(); if (oldEditor != null) oldEditor.dispose(); @@ -117,7 +130,9 @@ public abstract class CustomTableEditor implements MouseListener, TraverseListen if (e.detail == SWT.TRAVERSE_RETURN) { if (editor != null) { saveEditorValue(editor, columnIndex, tableEditor.getItem()); - closeEditor(); + if (!isProposalPopupActive()) { + this.closeEditor(); + } } else if (editOnEnter) { TableItem[] selection = table.getSelection(); if (selection != null && selection.length >= 1) { @@ -132,7 +147,9 @@ public abstract class CustomTableEditor implements MouseListener, TraverseListen TableItem item = tableEditor.getItem(); if (item != null) { saveEditorValue(editor, columnIndex, item); - closeEditor(); + if (!isProposalPopupActive()) { + this.closeEditor(); + } int lastColumn = lastTraverseIndex > 0 ? lastTraverseIndex : table.getColumnCount() - 1; if (columnIndex < lastColumn) { @@ -154,7 +171,9 @@ public abstract class CustomTableEditor implements MouseListener, TraverseListen e.detail = SWT.TRAVERSE_NONE; } } else if (e.detail == SWT.TRAVERSE_ESCAPE && editor != null) { - closeEditor(); + if (!isProposalPopupActive()) { + this.closeEditor(); + } e.doit = false; e.detail = SWT.TRAVERSE_NONE; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTextCellEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTextCellEditor.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTextCellEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTextCellEditor.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTimeEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTimeEditor.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTimeEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTimeEditor.java index 750c4db39d0147b8d1a975ef863f3f2bc379f00b..5dfb251f8ca89224405acdbacdc2e2e89d8c16d1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTimeEditor.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTimeEditor.java @@ -1,77 +1,77 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui.controls; - -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Text; -import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.DBException; - -/** - * CustomTimeEditor - */ -public class CustomTimeEditor { - private Text timeEditor; -// private Button timePickerButton; - - public CustomTimeEditor(Composite parent, int style) { - this.timeEditor = new Text(parent, style); -/* - Composite ph = UIUtils.createPlaceholder(parent, 2); - this.timeEditor = new Text(ph, style); - - this.timePickerButton = new Button(ph, SWT.FLAT | SWT.ARROW | SWT.DOWN); - this.timePickerButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - super.widgetSelected(e); - UIUtils.showMessageBox(timePickerButton.getShell(), "asdf", "sdf", SWT.ICON_INFORMATION); - } - }); -*/ - } - - public void setValue(@Nullable String value) { - if (value == null) { - timeEditor.setText(""); - } else { - timeEditor.setText(value); - } - } - - public String getValue() - throws DBException { - final String timeText = timeEditor.getText(); - if (timeText.isEmpty()) { - return null; - } - return timeText; - } - - - public void setEditable(boolean editable) { - timeEditor.setEditable(editable); - } - - public Text getControl() { - return timeEditor; - } - - public void selectAll() { - timeEditor.selectAll(); - } -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; +import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.DBException; + +/** + * CustomTimeEditor + */ +public class CustomTimeEditor { + private Text timeEditor; +// private Button timePickerButton; + + public CustomTimeEditor(Composite parent, int style) { + this.timeEditor = new Text(parent, style); +/* + Composite ph = UIUtils.createPlaceholder(parent, 2); + this.timeEditor = new Text(ph, style); + + this.timePickerButton = new Button(ph, SWT.FLAT | SWT.ARROW | SWT.DOWN); + this.timePickerButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + super.widgetSelected(e); + UIUtils.showMessageBox(timePickerButton.getShell(), "asdf", "sdf", SWT.ICON_INFORMATION); + } + }); +*/ + } + + public void setValue(@Nullable String value) { + if (value == null) { + timeEditor.setText(""); + } else { + timeEditor.setText(value); + } + } + + public String getValue() + throws DBException { + final String timeText = timeEditor.getText(); + if (timeText.isEmpty()) { + return null; + } + return timeText; + } + + + public void setEditable(boolean editable) { + timeEditor.setEditable(editable); + } + + public Text getControl() { + return timeEditor; + } + + public void selectAll() { + timeEditor.selectAll(); + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTreeEditor.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTreeEditor.java similarity index 98% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTreeEditor.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTreeEditor.java index 869727178214e10baf687ec5cf233d5290e07c71..670908cae157dbb34ccf0d25d9784c0b39653ddb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/CustomTreeEditor.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/CustomTreeEditor.java @@ -23,7 +23,6 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; -import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.UIUtils; /** @@ -68,7 +67,7 @@ public abstract class CustomTreeEditor implements MouseListener, TraverseListene final TreeItem item = tree.getItem(new Point(e.x, e.y)); if (item != null) { columnIndex = UIUtils.getColumnAtPos(item, e.x, e.y); - DBeaverUI.asyncExec(new Runnable() { + UIUtils.asyncExec(new Runnable() { @Override public void run() { showEditor(item); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ListContentProvider.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ListContentProvider.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ListContentProvider.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ListContentProvider.java index eb599c33648d133dc0195be2c8bd3136130134e1..d9f2c9191288aeb07bb9ba8d3c6336e13f06b201 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ListContentProvider.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ListContentProvider.java @@ -1,54 +1,54 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui.controls; - -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.Viewer; - -import java.util.Collection; - -/** - * ListContentProvider - */ -public class ListContentProvider implements IStructuredContentProvider { - - @Override - public void dispose() - { - } - - @Override - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) - { - } - - @Override - public Object[] getElements(Object inputElement) - { - if (inputElement instanceof Collection) { - return ((Collection)inputElement).toArray(); - } else if (inputElement.getClass().isArray()) { - if (inputElement.getClass().getComponentType().isPrimitive()) { - return null; - } else { - return (Object[])inputElement; - } - } - return null; - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls; + +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.Viewer; + +import java.util.Collection; + +/** + * ListContentProvider + */ +public class ListContentProvider implements IStructuredContentProvider { + + @Override + public void dispose() + { + } + + @Override + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) + { + } + + @Override + public Object[] getElements(Object inputElement) + { + if (inputElement instanceof Collection) { + return ((Collection)inputElement).toArray(); + } else if (inputElement.getClass().isArray()) { + if (inputElement.getClass().getComponentType().isPrimitive()) { + return null; + } else { + return (Object[])inputElement; + } + } + return null; + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/PairListControl.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/PairListControl.java similarity index 97% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/PairListControl.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/PairListControl.java index ea4fda9a7571f7a75141a4ab5907f6c879fb8f6f..f1c292ba1beaaf49a3fdfe08fccc69cf19daefcf 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/PairListControl.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/PairListControl.java @@ -1,243 +1,243 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui.controls; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.*; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.ui.DBeaverIcons; -import org.jkiss.dbeaver.ui.UIIcon; -import org.jkiss.dbeaver.ui.UIUtils; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * PairListControl - */ -public class PairListControl extends Composite -{ - private static final Log log = Log.getLog(PairListControl.class); - - public static final int MOVE_LEFT = 0; - public static final int MOVE_RIGHT = 1; - - private Table leftList; - private Table rightList; - - private Collection leftElements; - private Collection rightElements; - private List movedElements = new ArrayList<>(); - private Font movedFont; - private SelectionListener selListener; - - public PairListControl( - Composite parent, - int style, - String leftTitle, - String rightTitle) - { - super(parent, style); - createPairList(leftTitle, rightTitle); - movedFont = UIUtils.modifyFont(getFont(), SWT.ITALIC); - } - - public void setModel(Collection leftElements, Collection rightElements) - { - setListData(leftList, this.leftElements = leftElements); - setListData(rightList, this.rightElements = rightElements); - - updateControls(); - } - - private void createPairList(String leftTitle, String rightTitle) - { - this.setLayout(new GridLayout(3, false)); - - GridData gd = new GridData(GridData.FILL_BOTH); - this.setLayoutData(gd); - - Label leftLabel = new Label(this, SWT.NONE); - leftLabel.setText(leftTitle); - - new Label(this, SWT.NONE); - - Label rightLabel = new Label(this, SWT.NONE); - rightLabel.setText(rightTitle); - - leftList = createList(this); - - { - Composite buttonsPane = new Composite(this, SWT.NONE); - gd = new GridData(GridData.VERTICAL_ALIGN_CENTER); - gd.minimumWidth = 50; - buttonsPane.setLayoutData(gd); - GridLayout gl = new GridLayout(1, false); - buttonsPane.setLayout(gl); - - final Button btnMoveRight = createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_RIGHT), new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - moveElements(true); - } - }); - final Button btnMoveRightAll = createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_RIGHT_ALL), new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - leftList.selectAll(); - moveElements(true); - } - }); - final Button btnMoveLeft = createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_LEFT), new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - moveElements(false); - } - }); - final Button btnMoveLeftAll = createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_LEFT_ALL), new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - rightList.selectAll(); - moveElements(false); - } - }); - createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_RESET), new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - setListData(leftList, leftElements); - setListData(rightList, rightElements); - } - }); - - selListener = new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - btnMoveLeft.setEnabled(rightList.getSelectionCount() > 0); - btnMoveLeftAll.setEnabled(rightList.getItemCount() > 0); - btnMoveRight.setEnabled(leftList.getSelectionCount() > 0); - btnMoveRightAll.setEnabled(leftList.getItemCount() > 0); - } - }; - - btnMoveLeft.setEnabled(false); - btnMoveLeftAll.setEnabled(false); - btnMoveRight.setEnabled(false); - btnMoveRightAll.setEnabled(false); - } - - rightList = createList(this); - - leftList.addSelectionListener(selListener); - rightList.addSelectionListener(selListener); - leftList.addMouseListener(new MouseAdapter() { - @Override - public void mouseDoubleClick(MouseEvent e) { - moveElements(true); - } - }); - rightList.addMouseListener(new MouseAdapter() { - @Override - public void mouseDoubleClick(MouseEvent e) { - moveElements(false); - } - }); - } - - private Table createList(Composite panel) - { - final Table table = new Table(panel, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); - GridData gd = new GridData(GridData.FILL_BOTH); - table.setLayoutData(gd); - final TableColumn column = new TableColumn(table, SWT.LEFT); - - table.addListener (SWT.Resize, new Listener() { - @Override - public void handleEvent (Event e) { - column.setWidth(table.getClientArea().width); - } - }); - - return table; - } - - private Button createButton(Composite panel, Image label, SelectionListener listener) - { - Button button = new Button(panel, SWT.PUSH); - button.setImage(label); - button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - button.addSelectionListener(listener); - return button; - } - - private void setListData(Table list, Collection elements) - { - list.removeAll(); - for (ELEMENT element : elements) { - createListItem(list, element); - } - } - - private void updateControls() { - if (selListener != null) { - selListener.widgetSelected(null); - } - } - - private TableItem createListItem(Table list, Object element) { - TableItem item = new TableItem(list, SWT.NONE); - item.setData(element); - item.setText(element.toString()); - - return item; - } - - private void moveElements(boolean toRight) - { - Table fromTable = toRight ? leftList : rightList; - Table toTable = toRight ? rightList : leftList; - Collection checkList = toRight ? rightElements : leftElements; - List movedElements = new ArrayList<>(); - - for (TableItem item : fromTable.getSelection()) { - ELEMENT element = (ELEMENT) item.getData(); - movedElements.add(element); - TableItem newItem = createListItem(toTable, element); - if (!checkList.contains(element)) { - newItem.setFont(movedFont); - } - } - - fromTable.remove(fromTable.getSelectionIndices()); - - updateControls(); - - Event event = new Event(); - event.detail = toRight ? MOVE_RIGHT : MOVE_LEFT; - event.widget = this; - for (ELEMENT element : movedElements) { - event.data = element; - super.notifyListeners(SWT.Modify, event); - } - } - +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.*; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.*; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.ui.DBeaverIcons; +import org.jkiss.dbeaver.ui.UIIcon; +import org.jkiss.dbeaver.ui.UIUtils; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * PairListControl + */ +public class PairListControl extends Composite +{ + private static final Log log = Log.getLog(PairListControl.class); + + public static final int MOVE_LEFT = 0; + public static final int MOVE_RIGHT = 1; + + private Table leftList; + private Table rightList; + + private Collection leftElements; + private Collection rightElements; + private List movedElements = new ArrayList<>(); + private Font movedFont; + private SelectionListener selListener; + + public PairListControl( + Composite parent, + int style, + String leftTitle, + String rightTitle) + { + super(parent, style); + createPairList(leftTitle, rightTitle); + movedFont = UIUtils.modifyFont(getFont(), SWT.ITALIC); + } + + public void setModel(Collection leftElements, Collection rightElements) + { + setListData(leftList, this.leftElements = leftElements); + setListData(rightList, this.rightElements = rightElements); + + updateControls(); + } + + private void createPairList(String leftTitle, String rightTitle) + { + this.setLayout(new GridLayout(3, false)); + + GridData gd = new GridData(GridData.FILL_BOTH); + this.setLayoutData(gd); + + Label leftLabel = new Label(this, SWT.NONE); + leftLabel.setText(leftTitle); + + new Label(this, SWT.NONE); + + Label rightLabel = new Label(this, SWT.NONE); + rightLabel.setText(rightTitle); + + leftList = createList(this); + + { + Composite buttonsPane = new Composite(this, SWT.NONE); + gd = new GridData(GridData.VERTICAL_ALIGN_CENTER); + gd.minimumWidth = 50; + buttonsPane.setLayoutData(gd); + GridLayout gl = new GridLayout(1, false); + buttonsPane.setLayout(gl); + + final Button btnMoveRight = createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_RIGHT), new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + moveElements(true); + } + }); + final Button btnMoveRightAll = createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_RIGHT_ALL), new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + leftList.selectAll(); + moveElements(true); + } + }); + final Button btnMoveLeft = createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_LEFT), new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + moveElements(false); + } + }); + final Button btnMoveLeftAll = createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_LEFT_ALL), new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + rightList.selectAll(); + moveElements(false); + } + }); + createButton(buttonsPane, DBeaverIcons.getImage(UIIcon.ARROW_RESET), new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + setListData(leftList, leftElements); + setListData(rightList, rightElements); + } + }); + + selListener = new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + btnMoveLeft.setEnabled(rightList.getSelectionCount() > 0); + btnMoveLeftAll.setEnabled(rightList.getItemCount() > 0); + btnMoveRight.setEnabled(leftList.getSelectionCount() > 0); + btnMoveRightAll.setEnabled(leftList.getItemCount() > 0); + } + }; + + btnMoveLeft.setEnabled(false); + btnMoveLeftAll.setEnabled(false); + btnMoveRight.setEnabled(false); + btnMoveRightAll.setEnabled(false); + } + + rightList = createList(this); + + leftList.addSelectionListener(selListener); + rightList.addSelectionListener(selListener); + leftList.addMouseListener(new MouseAdapter() { + @Override + public void mouseDoubleClick(MouseEvent e) { + moveElements(true); + } + }); + rightList.addMouseListener(new MouseAdapter() { + @Override + public void mouseDoubleClick(MouseEvent e) { + moveElements(false); + } + }); + } + + private Table createList(Composite panel) + { + final Table table = new Table(panel, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); + GridData gd = new GridData(GridData.FILL_BOTH); + table.setLayoutData(gd); + final TableColumn column = new TableColumn(table, SWT.LEFT); + + table.addListener (SWT.Resize, new Listener() { + @Override + public void handleEvent (Event e) { + column.setWidth(table.getClientArea().width); + } + }); + + return table; + } + + private Button createButton(Composite panel, Image label, SelectionListener listener) + { + Button button = new Button(panel, SWT.PUSH); + button.setImage(label); + button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + button.addSelectionListener(listener); + return button; + } + + private void setListData(Table list, Collection elements) + { + list.removeAll(); + for (ELEMENT element : elements) { + createListItem(list, element); + } + } + + private void updateControls() { + if (selListener != null) { + selListener.widgetSelected(null); + } + } + + private TableItem createListItem(Table list, Object element) { + TableItem item = new TableItem(list, SWT.NONE); + item.setData(element); + item.setText(element.toString()); + + return item; + } + + private void moveElements(boolean toRight) + { + Table fromTable = toRight ? leftList : rightList; + Table toTable = toRight ? rightList : leftList; + Collection checkList = toRight ? rightElements : leftElements; + List movedElements = new ArrayList<>(); + + for (TableItem item : fromTable.getSelection()) { + ELEMENT element = (ELEMENT) item.getData(); + movedElements.add(element); + TableItem newItem = createListItem(toTable, element); + if (!checkList.contains(element)) { + newItem.setFont(movedFont); + } + } + + fromTable.remove(fromTable.getSelectionIndices()); + + updateControls(); + + Event event = new Event(); + event.detail = toRight ? MOVE_RIGHT : MOVE_LEFT; + event.widget = this; + for (ELEMENT element : movedElements) { + event.data = element; + super.notifyListeners(SWT.Modify, event); + } + } + } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ProgressLoaderVisualizer.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ProgressLoaderVisualizer.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ProgressLoaderVisualizer.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ProgressLoaderVisualizer.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StatusLineContributionItemEx.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StatusLineContributionItemEx.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StatusLineContributionItemEx.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StatusLineContributionItemEx.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StyledTextContentAdapter.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StyledTextContentAdapter.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StyledTextContentAdapter.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StyledTextContentAdapter.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StyledTextFindReplaceTarget.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StyledTextFindReplaceTarget.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/StyledTextFindReplaceTarget.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StyledTextFindReplaceTarget.java diff --git a/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StyledTextUtils.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StyledTextUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..f15a9a8b56a17ef99cf690a402210ae3fad21244 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/StyledTextUtils.java @@ -0,0 +1,99 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.GroupMarker; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.text.IFindReplaceTarget; +import org.eclipse.swt.custom.ST; +import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.dnd.*; +import org.eclipse.swt.graphics.Point; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.texteditor.FindReplaceAction; +import org.jkiss.dbeaver.ui.ActionUtils; + +import java.util.ResourceBundle; + +/** + * StyledTextContentAdapter + */ +public class StyledTextUtils { + + public static void enableDND(StyledText control) { + DropTarget dropTarget = new DropTarget(control, DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK); + dropTarget.setTransfer(TextTransfer.getInstance()); + dropTarget.addDropListener(new DropTargetAdapter() { + public void dragEnter(DropTargetEvent e) { + if (e.detail == DND.DROP_DEFAULT) { + e.detail = DND.DROP_COPY; + } + } + public void dragOperationChanged(DropTargetEvent e) { + if (e.detail == DND.DROP_DEFAULT) { + e.detail = DND.DROP_COPY; + } + } + public void drop(DropTargetEvent e) { + control.insert((String) e.data); + } + }); + } + + public static void fillDefaultStyledTextContextMenu(final StyledText text) { + MenuManager menuMgr = new MenuManager(); + menuMgr.addMenuListener(manager -> + fillDefaultStyledTextContextMenu(manager, text)); + menuMgr.setRemoveAllWhenShown(true); + text.setMenu(menuMgr.createContextMenu(text)); + } + + public static void fillDefaultStyledTextContextMenu(IMenuManager menu, final StyledText text) { + final Point selectionRange = text.getSelectionRange(); + menu.add(new StyledTextAction(IWorkbenchCommandConstants.EDIT_COPY, selectionRange.y > 0, text, ST.COPY)); + menu.add(new StyledTextAction(IWorkbenchCommandConstants.EDIT_PASTE, text.getEditable(), text, ST.PASTE)); + menu.add(new StyledTextAction(IWorkbenchCommandConstants.EDIT_CUT, selectionRange.y > 0, text, ST.CUT)); + menu.add(new StyledTextAction(IWorkbenchCommandConstants.EDIT_SELECT_ALL, true, text, ST.SELECT_ALL)); + IFindReplaceTarget stFindReplaceTarget = new StyledTextFindReplaceTarget(text); + menu.add(new FindReplaceAction( + ResourceBundle.getBundle("org.eclipse.ui.texteditor.ConstructedEditorMessages"), + "Editor.FindReplace.", + text.getShell(), + stFindReplaceTarget)); + menu.add(new GroupMarker("styled_text_additions")); + } + + private static class StyledTextAction extends Action { + private final StyledText styledText; + private final int action; + public StyledTextAction(String actionId, boolean enabled, StyledText styledText, int action) { + super(ActionUtils.findCommandName(actionId)); + this.setActionDefinitionId(actionId); + this.setEnabled(enabled); + this.styledText = styledText; + this.action = action; + } + + @Override + public void run() { + styledText.invokeAction(action); + } + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/TableColumnSortListener.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/TableColumnSortListener.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/TableColumnSortListener.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/TableColumnSortListener.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ToolbarVerticalSeparator.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ToolbarVerticalSeparator.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ToolbarVerticalSeparator.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ToolbarVerticalSeparator.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/TreeContentProvider.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/TreeContentProvider.java similarity index 96% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/TreeContentProvider.java rename to plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/TreeContentProvider.java index e99eb7ac4b0d76749fcd0e307f819c4da056857f..858f7bb9fe3ee8ea82a22411aea3c22a062b599b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/TreeContentProvider.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/TreeContentProvider.java @@ -1,32 +1,32 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.ui.controls; - -import org.eclipse.jface.viewers.ITreeContentProvider; - -/** - * TreeContentProvider - */ -public abstract class TreeContentProvider extends ListContentProvider implements ITreeContentProvider { - - @Override - public Object getParent(Object element) - { - return null; - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.controls; + +import org.eclipse.jface.viewers.ITreeContentProvider; + +/** + * TreeContentProvider + */ +public abstract class TreeContentProvider extends ListContentProvider implements ITreeContentProvider { + + @Override + public Object getParent(Object element) + { + return null; + } + +} diff --git a/pom.xml b/pom.xml index b5e68f39abe246f80460d60adf99e0b5960154e2..f5c174420e286d52fcc4250e0d1d41d94120f9f4 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ pom - 5.0.6 + 5.1.0 DBeaver 1.0.0 0.26.0 diff --git a/product/standalone/DBeaver.product b/product/standalone/DBeaver.product index b2bd729147e1662990da115bd5ec9f8f4a44deea..3feadc6da85e50dbfc124d03c4153c9dc026e1b7 100644 --- a/product/standalone/DBeaver.product +++ b/product/standalone/DBeaver.product @@ -1,7 +1,7 @@ - +