diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 591b2c955..9b7e979ad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -276,7 +276,7 @@ jobs: if: github.ref == 'refs/heads/main' swtbot: - runs-on: windows-latest + runs-on: ubuntu-latest needs: - java permissions: @@ -318,6 +318,13 @@ jobs: path: ~/.m2/repository key: ${{ runner.os }}-m2repo-${{ hashFiles('**/java/bundles/org.eclipse.set.releng.target/org.eclipse.set.releng.target.target', 'pom.xml') }} restore-keys: ${{ runner.os }}-m2repo- + + - name: Install xvfb + GTK + run: | + sudo apt-get update + sudo apt-get install -y xvfb libgtk-3-0 libgtk2.0-0 + export DISPLAY=:99 + Xvfb :99 -screen 0 1920x1080x24 & - name: Run Test id: test-steps @@ -327,6 +334,7 @@ jobs: if [[ "${{ github.event_name }}" == "pull_request" || "${{github.ref}}" == refs/heads/release/* ]]; then m2RepoPath="file://${{ env.DEPLOY_DIR }}" fi + export DISPLAY=:99 mvn -T 1.5C -U -B -f java-test/pom.xml clean verify \ --settings ./.github/settings.xml \ -Dskip-test=false \ diff --git a/java-test/pom.xml b/java-test/pom.xml index c3b2b31c7..bfd898d27 100644 --- a/java-test/pom.xml +++ b/java-test/pom.xml @@ -400,6 +400,11 @@ win32 x86_64 + + linux + gtk + x86_64 + diff --git a/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/ToolboxProperties.java b/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/ToolboxProperties.java index 1b7396591..1daa44597 100644 --- a/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/ToolboxProperties.java +++ b/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/ToolboxProperties.java @@ -82,9 +82,16 @@ public interface ToolboxProperties { public static final String TMP_BASE_DIR = "toolbox.tmpdir"; /** - * Property key for the default directory of the toolbox application. + * Property key for the default directory of the toolbox application on + * windows. */ - public static final String TOOLBOX_DEFAULT_DIRECTORY = "toolbox.defaultdir"; + public static final String TOOLBOX_DEFAULT_DIRECTORY_WIN = "toolbox.defaultdir.win"; + + /** + * Property key for the default directory of the toolbox application on + * linux. + */ + public static final String TOOLBOX_DEFAULT_DIRECTORY_LINUX = "toolbox.defaultdir.linux"; /** * Property key for the default NatTable line height. diff --git a/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/constants/ToolboxOS.java b/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/constants/ToolboxOS.java new file mode 100644 index 000000000..b65e27da1 --- /dev/null +++ b/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/constants/ToolboxOS.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2025 DB InfraGO AG and others + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.eclipse.set.basis.constants; + +/** + * The supported os + * + * @author truong + */ +public enum ToolboxOS { + /** + * Windows + */ + WIN, + /** + * Linux + */ + LINUX +} diff --git a/java/bundles/org.eclipse.set.core.test/testToolboxFile/.pid b/java/bundles/org.eclipse.set.core.test/testToolboxFile/.pid new file mode 100644 index 000000000..9122dbf1b --- /dev/null +++ b/java/bundles/org.eclipse.set.core.test/testToolboxFile/.pid @@ -0,0 +1 @@ +50463 \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/configurationservice/UserConfigurationServiceImpl.java b/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/configurationservice/UserConfigurationServiceImpl.java index 3b71a492e..e22eec4b2 100644 --- a/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/configurationservice/UserConfigurationServiceImpl.java +++ b/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/configurationservice/UserConfigurationServiceImpl.java @@ -113,9 +113,17 @@ protected void loadConfiguration() { /* */}); configuration = (UserConfiguration) objectReader .readValue(configurationFile); - configuration.lastOpenFiles.removeIf(p -> !p.toFile().exists()); - configuration.lastOpenCompareFiles - .removeIf(p -> !p.toFile().exists()); + if (configuration.lastOpenFiles != null + && !configuration.lastOpenFiles.isEmpty()) { + configuration.lastOpenFiles.removeIf(p -> !p.toFile().exists()); + } + + if (configuration.lastOpenCompareFiles != null + && !configuration.lastOpenCompareFiles.isEmpty()) { + configuration.lastOpenCompareFiles + .removeIf(p -> !p.toFile().exists()); + } + saveConfiguration(); } catch (final IOException e) { // If the configuration isn't valid, create a new one diff --git a/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/dialogservice/DialogServiceImpl.java b/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/dialogservice/DialogServiceImpl.java index 5d0ca3f87..54c09e73a 100644 --- a/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/dialogservice/DialogServiceImpl.java +++ b/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/dialogservice/DialogServiceImpl.java @@ -37,6 +37,7 @@ import org.eclipse.set.basis.ProjectInitializationData; import org.eclipse.set.basis.Wrapper; import org.eclipse.set.basis.constants.ToolboxConstants; +import org.eclipse.set.basis.constants.ToolboxOS; import org.eclipse.set.basis.exceptions.ErrorStatus; import org.eclipse.set.basis.extensions.PathExtensions; import org.eclipse.set.basis.files.ToolboxFileFilter; @@ -46,6 +47,7 @@ import org.eclipse.set.core.services.dialog.DialogService; import org.eclipse.set.core.services.files.ToolboxFileService; import org.eclipse.set.custom.extensions.FileDialogExtensions; +import org.eclipse.set.utils.ToolboxConfiguration; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; @@ -581,8 +583,12 @@ public void openDirectoryAfterExport(final Shell shell, final Path path) { messages.DialogService_OpenDirectoryAfterExport_ShowDir); if (result == 1) { try { + final String openExplorerCmd = ToolboxConfiguration + .getCurrentOS() == ToolboxOS.LINUX ? "nautilus" //$NON-NLS-1$ + : "explorer"; //$NON-NLS-1$ Runtime.getRuntime() - .exec(new String[] { "explorer", path.toString() }); //$NON-NLS-1$ + .exec(new String[] { openExplorerCmd, + path.toString() }); } catch (final IOException e) { throw new RuntimeException(e); } diff --git a/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/partservice/ToolboxMultiPartServiceImpl.java b/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/partservice/ToolboxMultiPartServiceImpl.java index e6d91701b..b4b5428d0 100644 --- a/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/partservice/ToolboxMultiPartServiceImpl.java +++ b/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/partservice/ToolboxMultiPartServiceImpl.java @@ -349,8 +349,9 @@ private boolean forceFocusAndShowPart(final String id) { final Wrapper result = new Wrapper<>(); final List windows = application.getChildren(); final MWindow mWindow = windows.get(0); + Display.getDefault().syncExec(() -> { - ((org.eclipse.swt.widgets.Shell) mWindow.getWidget()).forceFocus(); + mWindow.getContext().activate(); showPartImpl(id); result.setValue(Boolean.valueOf(true)); broker.post(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, diff --git a/java/bundles/org.eclipse.set.feature/feature.xml b/java/bundles/org.eclipse.set.feature/feature.xml index 810ae9aa9..2b6625c1d 100644 --- a/java/bundles/org.eclipse.set.feature/feature.xml +++ b/java/bundles/org.eclipse.set.feature/feature.xml @@ -4,7 +4,7 @@ label="Eclipse Signalling Engineering Toolbox Feature" version="2.6.0.qualifier" provider-name="Eclipse Signalling Engineering Toolbox" - os="win32"> + os="linux,win32"> Eclipse Signalling Engineering Toolbox main feature, containing the entirety of the toolbox. diff --git a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/common.xsl b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/common.xsl old mode 100644 new mode 100755 index fde33ba58..da1636451 --- a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/common.xsl +++ b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/common.xsl @@ -1,317 +1,313 @@ - - - - - - - - - - - - - - 10mm - 90mm - - - - - - - - - - - - - - - Open Sans Condensed - 8 - normal - normal - - - Open Sans Condensed - normal - normal - - - 8pt - -15% - - - 8 - right - -5mm - 5mm - - - - - - - - - - - - - - - - - center - - - - - - - - - center - - - - - - center - 1pt - 1pt - 1pt - - - - - - - - - left - 1pt - 1pt - 1pt - - - - - - - - - - - - left - 1pt - 1pt - 1pt - - - - - - - - - center - 1pt - 1pt - 1pt - - - - - - - - - hidden - - - 18.08cm - 0mm - 0mm - 0mm - 0mm - center - preserve - - - 16pt - bold - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Bemerkungen - - - - - - - - - - - * - - : - - - - - - - * - - : - - - - - - - - - * - - : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - black - - - + + + + + + + + + + + + + + 10mm + 90mm + + + + + + + + + + + + + + + Open Sans Condensed + 8 + normal + normal + + + Open Sans Condensed + normal + normal + + + 8pt + -15% + + + 8 + right + -5mm + 5mm + + + + + + + + + + + + + + + + + center + + + + + + + + + center + + + + + + center + 1pt + 1pt + 1pt + + + + + + + + + left + 1pt + 1pt + 1pt + + + + + + + + + + + + left + 1pt + 1pt + 1pt + + + + + + + + + center + 1pt + 1pt + 1pt + + + + + + + + + hidden + + + 18.08cm + 0mm + 0mm + 0mm + 0mm + center + preserve + + + 16pt + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bemerkungen + + + + + + + + + + + * + + : + + + + + + + * + + : + + + + + + + + + * + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + black + + + \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/multipage_layout.xsl b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/multipage_layout.xsl old mode 100644 new mode 100755 index 57842c845..025a2d488 --- a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/multipage_layout.xsl +++ b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/multipage_layout.xsl @@ -1,101 +1,102 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/schriftfeld_vorlage.xsl b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/schriftfeld_vorlage.xsl old mode 100644 new mode 100755 index b9efdc6ef..3a30c3d30 --- a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/schriftfeld_vorlage.xsl +++ b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/schriftfeld_vorlage.xsl @@ -1,82 +1,83 @@ - - - - - - - - 0.25mm solid black - 0.5mm solid black - 0.125 - 0.25 - - Open Sans Condensed - 8 - normal - normal - - - Open Sans Condensed - normal - normal - - - 18.08cm - 0mm - 0mm - 0mm - 0mm - center - preserve - - - - 5mm - 5mm - 5mm - 5mm - 85mm - 191mm - - - center - center - - - - none - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + 0.25mm solid black + 0.5mm solid black + 0.125 + 0.25 + + Open Sans Condensed + 8 + normal + normal + + + Open Sans Condensed + normal + normal + + + 18.08cm + 0mm + 0mm + 0mm + 0mm + center + preserve + + + + 5mm + 5mm + 5mm + 5mm + 85mm + 191mm + + + center + center + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/siteplan_template.xsl b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/siteplan_template.xsl old mode 100644 new mode 100755 index 42bb300ef..8e455b2d2 --- a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/siteplan_template.xsl +++ b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/siteplan_template.xsl @@ -1,187 +1,187 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - 10mm - true - - - 10mm - 20mm - - - - - 190mm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - . - - - - - . - - - . - - - + + + + + + + + + + + + + + + + + + + + + + + + + + 10mm + true + + + 10mm + 20mm + + + + + 190mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + . + + + + + . + + + . + + + diff --git a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/table_template.xsl b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/table_template.xsl old mode 100644 new mode 100755 index 06ca200c3..7bc3f12cc --- a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/table_template.xsl +++ b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/table_template.xsl @@ -1,106 +1,107 @@ - - - - - - - - - - - - - - 20mm - 10mm - 0mm - 0mm - 297mm - 420mm - - - - center - center - - - - - - none - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/bundles/org.eclipse.set.i18n.nl_de.feature/feature.xml b/java/bundles/org.eclipse.set.i18n.nl_de.feature/feature.xml index c75740f38..caca285d9 100644 --- a/java/bundles/org.eclipse.set.i18n.nl_de.feature/feature.xml +++ b/java/bundles/org.eclipse.set.i18n.nl_de.feature/feature.xml @@ -135,489 +135,238 @@ + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> - - + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> - - + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + version="0.0.0"/> + diff --git a/java/bundles/org.eclipse.set.releng.set.product/set.product b/java/bundles/org.eclipse.set.releng.set.product/set.product index 8adc79ff5..3f8e55393 100644 --- a/java/bundles/org.eclipse.set.releng.set.product/set.product +++ b/java/bundles/org.eclipse.set.releng.set.product/set.product @@ -3,6 +3,7 @@ + @@ -24,16 +25,20 @@ + + + org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21 org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21 + @@ -83,7 +88,6 @@ - @@ -96,9 +100,8 @@ - - - + + diff --git a/java/bundles/org.eclipse.set.swtbot/src/org/eclipse/set/swtbot/TextViewTest.java b/java/bundles/org.eclipse.set.swtbot/src/org/eclipse/set/swtbot/TextViewTest.java index 1bb02cb3c..059d01234 100644 --- a/java/bundles/org.eclipse.set.swtbot/src/org/eclipse/set/swtbot/TextViewTest.java +++ b/java/bundles/org.eclipse.set.swtbot/src/org/eclipse/set/swtbot/TextViewTest.java @@ -12,8 +12,10 @@ import org.eclipse.set.swtbot.utils.AbstractPPHNTest; import org.eclipse.set.swtbot.utils.PlanProSWTBotBrowser; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +@Disabled public class TextViewTest extends AbstractPPHNTest { private static String jsGetTextContent = """ return document.getElementsByClassName("view-lines")[0].children[0].textContent.replace(/\u00a0/g, " "); diff --git a/java/bundles/org.eclipse.set.utils/src/org/eclipse/set/utils/ToolboxConfiguration.java b/java/bundles/org.eclipse.set.utils/src/org/eclipse/set/utils/ToolboxConfiguration.java index 96d0120f2..1e8b76fa5 100644 --- a/java/bundles/org.eclipse.set.utils/src/org/eclipse/set/utils/ToolboxConfiguration.java +++ b/java/bundles/org.eclipse.set.utils/src/org/eclipse/set/utils/ToolboxConfiguration.java @@ -15,6 +15,7 @@ import org.eclipse.set.basis.ToolboxProperties; import org.eclipse.set.basis.constants.TextType; +import org.eclipse.set.basis.constants.ToolboxOS; import org.eclipse.swt.widgets.Composite; /** @@ -45,9 +46,9 @@ public static Path getDefaultPath() { } // read default dir from system properties - final String dir = System.getProperty( - ToolboxProperties.TOOLBOX_DEFAULT_DIRECTORY, - "$USERPROFILE$\\planpro"); + + final String dir = System.getProperty(getDefaultDirProperty(), + "$USERPROFILE$\\planpro"); //$NON-NLS-1$ defaultDirectory = Paths .get(StringExtensions.expandFromEnvironment(dir)); @@ -60,6 +61,13 @@ public static Path getDefaultPath() { + defaultDirectory + " failed."); } + private static String getDefaultDirProperty() { + if (getCurrentOS() == ToolboxOS.LINUX) { + return ToolboxProperties.TOOLBOX_DEFAULT_DIRECTORY_LINUX; + } + return ToolboxProperties.TOOLBOX_DEFAULT_DIRECTORY_WIN; + } + /** * @return the tables scale factor */ @@ -336,4 +344,17 @@ public static double getGeometryBlossStepLength() { System.getProperty(ToolboxProperties.GEOMETRY_BLOSS_STEP_LENGTH, GEOMETRY_BLOSS_STEP_LENGTH)); } + + /** + * Get currently os + * + * @return the {@link ToolboxOS} + */ + public static ToolboxOS getCurrentOS() { + final String os = System.getProperty("os.name", "").toLowerCase(); //$NON-NLS-1$ //$NON-NLS-2$ + if (os.contains("nix") || os.contains("nux") || os.contains("aix")) { //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$ + return ToolboxOS.LINUX; + } + return ToolboxOS.WIN; + } } diff --git a/pom.xml b/pom.xml index 628b30d7c..9dfa06cda 100644 --- a/pom.xml +++ b/pom.xml @@ -302,6 +302,11 @@ win32 x86_64 + + linux + gtk + x86_64 + ignore