diff options
author | Eike Stepper | 2015-06-13 17:06:54 +0000 |
---|---|---|
committer | Eike Stepper | 2015-06-13 17:06:54 +0000 |
commit | e1bafc08969ea122f9757f15729f7d5627c5755e (patch) | |
tree | 5d3aec135257dbf953c7a3d24dcd4194ab5a9b58 | |
parent | f29f3ef744ad710ee46db696b0d2dcf4ccfecd39 (diff) | |
download | cdo-e1bafc08969ea122f9757f15729f7d5627c5755e.tar.gz cdo-e1bafc08969ea122f9757f15729f7d5627c5755e.tar.xz cdo-e1bafc08969ea122f9757f15729f7d5627c5755e.zip |
[467754] Resource removal doesn't work with Mars M7
https://bugs.eclipse.org/bugs/show_bug.cgi?id=467754
17 files changed, 329 insertions, 39 deletions
diff --git a/features/org.eclipse.net4j-feature/feature.xml b/features/org.eclipse.net4j-feature/feature.xml index f494be4c7e..d8dd78ecd0 100644 --- a/features/org.eclipse.net4j-feature/feature.xml +++ b/features/org.eclipse.net4j-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j" label="%featureName" - version="4.4.0.qualifier" + version="4.4.100.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.net4j.defs-feature/feature.xml b/features/org.eclipse.net4j.defs-feature/feature.xml index 6f95e3ed9c..92838bcc12 100644 --- a/features/org.eclipse.net4j.defs-feature/feature.xml +++ b/features/org.eclipse.net4j.defs-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j.defs" label="%featureName" - version="4.4.0.qualifier" + version="4.4.100.qualifier" provider-name="%providerName" license-feature="org.eclipse.emf.cdo.license" license-feature-version="0.0.0"> diff --git a/features/org.eclipse.net4j.sdk-feature/feature.xml b/features/org.eclipse.net4j.sdk-feature/feature.xml index c456b2e67e..1aaaacab73 100644 --- a/features/org.eclipse.net4j.sdk-feature/feature.xml +++ b/features/org.eclipse.net4j.sdk-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j.sdk" label="%featureName" - version="4.4.0.qualifier" + version="4.4.100.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.net4j.util.ui-feature/feature.xml b/features/org.eclipse.net4j.util.ui-feature/feature.xml index 3fbf235eda..62e0274206 100644 --- a/features/org.eclipse.net4j.util.ui-feature/feature.xml +++ b/features/org.eclipse.net4j.util.ui-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j.util.ui" label="%featureName" - version="4.4.0.qualifier" + version="4.4.100.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml b/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml index 36d4cc683b..c5c845e65b 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml @@ -483,7 +483,9 @@ <iterate ifEmpty="false" operator="and"> <or> <adapt type="org.eclipse.emf.cdo.CDOElement"/> - <adapt type="org.eclipse.emf.ecore.EObject"/> + <adapt type="org.eclipse.emf.ecore.EObject"> + <test property="org.eclipse.emf.cdo.explorer.object.inCheckout" value="true"/> + </adapt> </or> </iterate> </activeWhen> @@ -623,7 +625,9 @@ <iterate ifEmpty="false"> <or> <adapt type="org.eclipse.emf.cdo.CDOElement"/> - <adapt type="org.eclipse.emf.ecore.EObject"/> + <adapt type="org.eclipse.emf.ecore.EObject"> + <test property="org.eclipse.emf.cdo.explorer.object.inCheckout" value="true"/> + </adapt> </or> </iterate> </with> diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java index 2cdeb541fc..b6261e1490 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java @@ -114,14 +114,7 @@ public class ShowInActionProvider extends AbstractActionProvider<Object> if (selectedElement instanceof CDORepository) { - final CDORepository repository = (CDORepository)selectedElement; - - CDOCheckout[] checkouts = repository.getCheckouts(); - if (checkouts.length != 0) - { - filled |= addAction(menu, repository, new ShowInProjectExplorerAction(page, checkouts)); - } - + CDORepository repository = (CDORepository)selectedElement; if (repository.isConnected()) { if (repository.isLocal()) @@ -136,6 +129,16 @@ public class ShowInActionProvider extends AbstractActionProvider<Object> filled |= addAction(menu, repository, new ShowInSessionsViewAction(page, repository, null)); filled |= addAction(menu, repository.getSession(), new ShowInViewAction(page, HISTORY_VIEW_ID)); } + else + { + filled |= addAction(menu, repository, new ShowInSessionsViewAction(page, repository, null)); + } + + CDOCheckout[] checkouts = repository.getCheckouts(); + if (checkouts.length != 0) + { + filled |= addAction(menu, repository, new ShowInProjectExplorerAction(page, checkouts)); + } } if (selectedElement instanceof CDOBranch) @@ -541,6 +544,8 @@ public class ShowInActionProvider extends AbstractActionProvider<Object> private CDOSession getSession() { + repository.connect(); + String description = repository.getURI(); int lastSlash = description.lastIndexOf('/'); description = description.substring(0, lastSlash) + "?repositoryName=" + repository.getName() diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/properties/ExplorerUIAdapterFactory.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/properties/ExplorerUIAdapterFactory.java index 28899bcd5a..1f8cf53f1f 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/properties/ExplorerUIAdapterFactory.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/properties/ExplorerUIAdapterFactory.java @@ -193,8 +193,18 @@ public class ExplorerUIAdapterFactory implements IAdapterFactory @Override protected IStatus run(IProgressMonitor monitor) { + CDOTransaction transaction; + CDOCheckout checkout = CDOExplorerUtil.getCheckout(resourceNode); - CDOTransaction transaction = checkout.openTransaction(); + if (checkout != null) + { + transaction = checkout.openTransaction(); + } + else + { + CDOView view = resourceNode.cdoView(); + transaction = view.getSession().openTransaction(view.getBranch()); + } CDOCommitInfo commitInfo = null; @@ -214,7 +224,7 @@ public class ExplorerUIAdapterFactory implements IAdapterFactory transaction.close(); } - if (commitInfo != null) + if (commitInfo != null && checkout != null) { checkout.getView().waitForUpdate(commitInfo.getTimeStamp()); diff --git a/plugins/org.eclipse.emf.cdo.explorer/plugin.xml b/plugins/org.eclipse.emf.cdo.explorer/plugin.xml index 6da5beeba0..5177eb8a6a 100644 --- a/plugins/org.eclipse.emf.cdo.explorer/plugin.xml +++ b/plugins/org.eclipse.emf.cdo.explorer/plugin.xml @@ -40,6 +40,12 @@ namespace="org.eclipse.emf.cdo.explorer.checkout" properties="state,open,type,id,label,folder,rootType,canContainResources,branchID,branch,timeStamp,readOnly,rootID,dirty,repositoryConnected,repositoryType,repositoryID,repositoryLabel,repositoryFolder,repositoryURI" class="org.eclipse.emf.cdo.internal.explorer.checkouts.CDOCheckoutProperties$Tester"/> + <propertyTester + id="org.eclipse.emf.cdo.explorer.object.properties" + type="org.eclipse.emf.ecore.EObject" + namespace="org.eclipse.emf.cdo.explorer.object" + properties="inCheckout" + class="org.eclipse.emf.cdo.internal.explorer.checkouts.CDOCheckoutObjectProperties$Tester"/> </extension> <extension point="org.eclipse.emf.cdo.viewProviders"> diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/checkouts/CDOCheckoutObjectProperties.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/checkouts/CDOCheckoutObjectProperties.java new file mode 100644 index 0000000000..3b0a81b3aa --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/checkouts/CDOCheckoutObjectProperties.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2015 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.internal.explorer.checkouts; + +import org.eclipse.emf.cdo.explorer.CDOExplorerUtil; + +import org.eclipse.net4j.util.properties.DefaultPropertyTester; +import org.eclipse.net4j.util.properties.IProperties; +import org.eclipse.net4j.util.properties.Properties; +import org.eclipse.net4j.util.properties.Property; + +import org.eclipse.emf.ecore.EObject; + +/** + * @author Eike Stepper + */ +public class CDOCheckoutObjectProperties extends Properties<EObject> +{ + public static final IProperties<EObject> INSTANCE = new CDOCheckoutObjectProperties(); + + private CDOCheckoutObjectProperties() + { + super(EObject.class); + + add(new Property<EObject>("inCheckout") + { + @Override + protected Object eval(EObject object) + { + return CDOExplorerUtil.getCheckout(object) != null; + } + }); + } + + public static void main(String[] args) + { + new Tester().dumpContributionMarkup(); + } + + /** + * @author Eike Stepper + */ + public static final class Tester extends DefaultPropertyTester<EObject> + { + public static final String NAMESPACE = "org.eclipse.emf.cdo.explorer.object"; + + public Tester() + { + super(NAMESPACE, INSTANCE); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch b/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch index 6d2960c051..0c756d6677 100644 --- a/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch +++ b/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench"> <setAttribute key="additional_plugins"> -<setEntry value="javax.servlet:3.0.0.v201112011016:default:false"/> <setEntry value="javax.servlet:3.1.0.v201410161800:default:false"/> +<setEntry value="org.eclipse.emf.ecore.edit:2.9.0.v20150601-0402:default:true"/> +<setEntry value="org.eclipse.emf.ecore.editor:2.11.0.v20150601-0402:default:true"/> </setAttribute> <booleanAttribute key="append.args" value="true"/> <booleanAttribute key="askclear" value="true"/> @@ -14,7 +15,7 @@ <booleanAttribute key="clearws" value="false"/> <booleanAttribute key="clearwslog" value="false"/> <stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/CDOClient1"/> -<booleanAttribute key="default" value="true"/> +<booleanAttribute key="default" value="false"/> <stringAttribute key="featureDefaultLocation" value="workspace"/> <stringAttribute key="featurePluginResolution" value="workspace"/> <booleanAttribute key="includeOptional" value="true"/> @@ -31,7 +32,7 @@ <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -nosplash -clean"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:MaxPermSize=512m -Xms40m -Xmx1g -Dosgi.console.enable.builtin=true -Dosgi.checkConfiguration=false"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:MaxPermSize=512m -Xms40m -Xmx2g -Dosgi.console.enable.builtin=true -Dosgi.checkConfiguration=false"/> <stringAttribute key="pde.version" value="3.3"/> <stringAttribute key="product" value="org.eclipse.platform.ide"/> <setAttribute key="selected_features"> @@ -91,8 +92,8 @@ <setEntry value="org.eclipse.platform:default"/> <setEntry value="org.eclipse.rcp:default"/> </setAttribute> -<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,javax.servlet@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene.highlighter@default:default,org.apache.lucene.memory@default:default,org.apache.lucene.misc@default:default,org.apache.lucene.queries@default:default,org.apache.lucene.snowball@default:default,org.apache.lucene.spellchecker@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.platform@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.h2@default:default"/> -<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.admin@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.emf.cdo.compare@default:default,org.eclipse.emf.cdo.edit@default:default,org.eclipse.emf.cdo.examples.company.edit@default:default,org.eclipse.emf.cdo.examples.company@default:default,org.eclipse.emf.cdo.location@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo.security.edit@default:default,org.eclipse.emf.cdo.security.editor@default:default,org.eclipse.emf.cdo.security@default:default,org.eclipse.emf.cdo.team@default:default,org.eclipse.emf.cdo.transfer.repository@default:default,org.eclipse.emf.cdo.transfer.ui@default:default,org.eclipse.emf.cdo.transfer.workspace.ui@default:default,org.eclipse.emf.cdo.transfer.workspace@default:default,org.eclipse.emf.cdo.transfer@default:default,org.eclipse.emf.cdo.ui.admin@default:default,org.eclipse.emf.cdo.ui.efs@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.emf.cdo.ui.location@default:default,org.eclipse.emf.cdo.ui.shared@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default"/> +<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,javax.servlet@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.platform@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.h2@default:default"/> +<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.admin@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.emf.cdo.compare@default:default,org.eclipse.emf.cdo.edit@default:default,org.eclipse.emf.cdo.examples.company.edit@default:default,org.eclipse.emf.cdo.examples.company@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo.security.edit@default:default,org.eclipse.emf.cdo.security.editor@default:default,org.eclipse.emf.cdo.security@default:default,org.eclipse.emf.cdo.transfer.repository@default:default,org.eclipse.emf.cdo.transfer.ui@default:default,org.eclipse.emf.cdo.transfer.workspace.ui@default:default,org.eclipse.emf.cdo.transfer.workspace@default:default,org.eclipse.emf.cdo.transfer@default:default,org.eclipse.emf.cdo.ui.admin@default:default,org.eclipse.emf.cdo.ui.shared@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default"/> <booleanAttribute key="show_selected_only" value="false"/> <stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/> <booleanAttribute key="tracing" value="false"/> @@ -738,7 +739,7 @@ <mapEntry key="org.eclipse.update.core/debug/warning" value="false"/> <mapEntry key="org.eclipse.update.core/debug/web" value="false"/> </mapAttribute> -<booleanAttribute key="useCustomFeatures" value="false"/> +<booleanAttribute key="useCustomFeatures" value="true"/> <booleanAttribute key="useDefaultConfig" value="true"/> <booleanAttribute key="useDefaultConfigArea" value="true"/> <booleanAttribute key="useNamedJRE" value="true"/> diff --git a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF index 072ff46dfe..ccfba9a456 100644 --- a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF @@ -18,6 +18,7 @@ Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)";reso org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport, org.eclipse.net4j.util.ui;bundle-version="[3.0.0,4.0.0)";visibility:=reexport, + org.eclipse.net4j.ui.shared;bundle-version="[4.0.0,5.0.0)", org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)";visibility:=reexport, org.eclipse.emf.cdo.edit;bundle-version="[4.0.0,5.0.0)";visibility:=reexport, org.eclipse.emf.cdo.transfer.ui;bundle-version="[4.2.0,5.0.0)";visibility:=reexport, diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/DeleteResourceAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/DeleteResourceAction.java new file mode 100644 index 0000000000..e49eeb3ad8 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/DeleteResourceAction.java @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2015 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.internal.ui.actions; + +import org.eclipse.emf.cdo.CDOObject; +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.eresource.CDOResourceFolder; +import org.eclipse.emf.cdo.eresource.CDOResourceNode; +import org.eclipse.emf.cdo.internal.ui.bundle.OM; +import org.eclipse.emf.cdo.internal.ui.messages.Messages; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.transaction.CDOTransaction; + +import org.eclipse.net4j.ui.shared.SharedIcons; +import org.eclipse.net4j.util.ui.actions.SafeAction; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.widgets.Shell; + +import java.text.MessageFormat; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author Eike Stepper + */ +public class DeleteResourceAction extends SafeAction +{ + private final Shell shell; + + private final Set<CDOResourceNode> nodes; + + public DeleteResourceAction(Shell shell, List<CDOResourceNode> nodes) + { + super(Messages.getString("DeleteResourceAction_1"), Messages.getString("DeleteResourceAction_5"), + SharedIcons.getDescriptor(SharedIcons.ETOOL_DELETE)); + this.shell = shell; + this.nodes = new HashSet<CDOResourceNode>(nodes); + } + + @Override + protected void safeRun() throws Exception + { + if (MessageDialog.openConfirm(shell, Messages.getString("DeleteResourceAction_1"), MessageFormat.format( //$NON-NLS-1$ + Messages.getString("DeleteResourceAction_2"), nodes.size()))) //$NON-NLS-1$ + { + Job job = new Job(Messages.getString("DeleteResourceAction_3")) //$NON-NLS-1$ + { + @Override + protected IStatus run(IProgressMonitor monitor) + { + Set<CDOResourceNode> nestedNodes = new HashSet<CDOResourceNode>(); + for (CDOResourceNode node : nodes) + { + if (isNested(node)) + { + nestedNodes.add(node); + } + } + + nodes.removeAll(nestedNodes); + + Map<Integer, CDOTransaction> repositoryToTransaction = new HashMap<Integer, CDOTransaction>(); + for (CDOResourceNode node : nodes) + { + CDOSession session = node.cdoView().getSession(); + int sessionID = session.getSessionID(); + CDOTransaction transaction = repositoryToTransaction.get(sessionID); + if (transaction == null) + { + transaction = OpenTransactionAction.openTransaction(session); + repositoryToTransaction.put(sessionID, transaction); + } + + CDOObject writableNode = transaction.getObject(node.cdoID()); + EObject container = writableNode.eContainer(); + if (container == null) + { + container = (CDOResource)writableNode.eResource(); + } + + if (container instanceof CDOResource) + { + ((CDOResource)container).getContents().remove(writableNode); + } + else if (container instanceof CDOResourceFolder) + { + ((CDOResourceFolder)container).getNodes().remove(writableNode); + } + } + + for (CDOTransaction transaction : repositoryToTransaction.values()) + { + try + { + transaction.commit(); + } + catch (Exception ex) + { + OM.LOG.error(MessageFormat.format(Messages.getString("DeleteResourceAction_4"), //$NON-NLS-1$ + this.getClass().getName().toString()), ex); + } + finally + { + transaction.close(); + } + } + + return Status.OK_STATUS; + } + + private boolean isNested(CDOResourceNode node) + { + CDOResourceFolder folder = node.getFolder(); + if (folder != null) + { + if (nodes.contains(folder)) + { + return true; + } + + return isNested(folder); + } + + return false; + } + }; + + job.schedule(); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java index 85e555424c..9228fff853 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java @@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.internal.ui.editor; import org.eclipse.emf.cdo.CDOObject; +import org.eclipse.emf.cdo.CDOState; import org.eclipse.emf.cdo.common.model.CDOPackageInfo; import org.eclipse.emf.cdo.common.model.CDOPackageRegistry; import org.eclipse.emf.cdo.common.model.CDOPackageUnit; @@ -32,6 +33,7 @@ import org.eclipse.emf.cdo.ui.shared.SharedIcons; import org.eclipse.emf.cdo.util.CDOURIUtil; import org.eclipse.emf.cdo.util.CDOUtil; import org.eclipse.emf.cdo.util.ValidationException; +import org.eclipse.emf.cdo.view.CDOObjectHandler; import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.emf.internal.cdo.view.CDOStateMachine; @@ -225,6 +227,20 @@ public class CDOEditor extends MultiPageEditorPart protected CDOEventHandler eventHandler; /** + * @ADDED + */ + protected CDOObjectHandler objectHandler = new CDOObjectHandler() + { + public void objectStateChanged(CDOView view, CDOObject object, CDOState oldState, CDOState newState) + { + if (object == viewerInput && newState == CDOState.INVALID) + { + closeEditor(); + } + } + }; + + /** * This keeps track of the editing domain that is used to track all changes to the model. * <!-- begin-user-doc --> <!-- * end-user-doc --> @@ -1041,6 +1057,11 @@ public class CDOEditor extends MultiPageEditorPart { URI resourceURI = CDOURIUtil.createResourceURI(view, resourcePath); viewerInput = resourceSet.getResource(resourceURI, true); + + if (!view.isReadOnly()) + { + view.addObjectHandler(objectHandler); + } } // resourceSet.eAdapters().add(problemIndicationAdapter); @@ -2176,6 +2197,18 @@ public class CDOEditor extends MultiPageEditorPart { try { + if (objectHandler != null) + { + view.removeObjectHandler(objectHandler); + } + } + catch (Exception ex) + { + OM.LOG.error(ex); + } + + try + { if (eventHandler != null) { eventHandler.dispose(); diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/messages/messages.properties b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/messages/messages.properties index 553c61d58f..c597a6b56f 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/messages/messages.properties +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/messages/messages.properties @@ -188,6 +188,11 @@ RegisterPackagesAction.0=Failed to register package {0} RegisterPackagesAction.1=\ {0} package has not been registered due to errors.\nSee the log for details. RegisterPackagesAction.2=\ {0} packages have not been registered due to errors.\nSee the log for details. RegisterSinglePackageAction.0=Register the package +DeleteResourceAction_1=Delete... +DeleteResourceAction_2=Are you sure you want to delete the selected {0} resource node(s)? +DeleteResourceAction_3=Deleting resource node(s) +DeleteResourceAction_4={0}: Cannot perform commit +DeleteResourceAction_5=Delete the selected folders and resources RemoveResourceAction_1=Delete Resource RemoveResourceAction_2=Are you sure you want to delete the selected {0} item(s)? RemoveResourceAction_3=Deleting CDOResource(s) diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java index a9cea2ed26..bcf543d1d2 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java @@ -11,6 +11,8 @@ package org.eclipse.emf.cdo.internal.ui.views; import org.eclipse.emf.cdo.eresource.CDOResourceLeaf; +import org.eclipse.emf.cdo.eresource.CDOResourceNode; +import org.eclipse.emf.cdo.internal.ui.actions.DeleteResourceAction; import org.eclipse.emf.cdo.internal.ui.actions.OpenSessionAction; import org.eclipse.emf.cdo.internal.ui.actions.OpenTransactionAction; import org.eclipse.emf.cdo.internal.ui.transfer.RepositoryTransferDragListener; @@ -22,6 +24,7 @@ import org.eclipse.emf.cdo.ui.CDOItemProvider; import org.eclipse.net4j.util.container.IContainer; import org.eclipse.net4j.util.container.IManagedContainer; import org.eclipse.net4j.util.container.IPluginContainer; +import org.eclipse.net4j.util.ui.UIUtil; import org.eclipse.net4j.util.ui.views.ContainerItemProvider; import org.eclipse.net4j.util.ui.views.ContainerView; import org.eclipse.net4j.util.ui.views.IElementFilter; @@ -40,6 +43,7 @@ import org.eclipse.ui.IWorkbenchPage; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -108,6 +112,13 @@ public class CDOSessionsView extends ContainerView manager.add(new Separator("group.open")); manager.add(new GroupMarker("group.openWith")); manager.add(new Separator("group.edit")); + + List<CDOResourceNode> nodes = UIUtil.getElements(selection, CDOResourceNode.class); + if (nodes != null && !nodes.isEmpty()) + { + manager.add(new DeleteResourceAction(getShell(), nodes)); + } + manager.add(new GroupMarker("group.new.branch")); manager.add(new Separator("group.port")); manager.add(new Separator("group.build")); diff --git a/plugins/org.eclipse.net4j.util.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.util.ui/META-INF/MANIFEST.MF index a193aa6b16..30089a9ef3 100644 --- a/plugins/org.eclipse.net4j.util.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.net4j.util.ui/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.net4j.util.ui;singleton:=true -Bundle-Version: 3.5.0.qualifier +Bundle-Version: 3.5.100.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-ActivationPolicy: lazy @@ -15,19 +15,19 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)", org.eclipse.ui;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)";visibility:=reexport, org.eclipse.net4j.ui.shared;bundle-version="[4.0.0,5.0.0)" -Export-Package: org.eclipse.net4j.util.internal.ui;version="3.5.0";x-internal:=true, - org.eclipse.net4j.util.internal.ui.actions;version="3.5.0";x-internal:=true, - org.eclipse.net4j.util.internal.ui.bundle;version="3.5.0";x-internal:=true, - org.eclipse.net4j.util.internal.ui.messages;version="3.5.0";x-internal:=true, - org.eclipse.net4j.util.internal.ui.views;version="3.5.0";x-internal:=true, - org.eclipse.net4j.util.ui;version="3.5.0", - org.eclipse.net4j.util.ui.actions;version="3.5.0", - org.eclipse.net4j.util.ui.confirmation;version="3.5.0", - org.eclipse.net4j.util.ui.container;version="3.5.0", - org.eclipse.net4j.util.ui.dnd;version="3.5.0", - org.eclipse.net4j.util.ui.handlers;version="3.5.0", - org.eclipse.net4j.util.ui.prefs;version="3.5.0", - org.eclipse.net4j.util.ui.proposals;version="3.5.0", - org.eclipse.net4j.util.ui.security;version="3.5.0", - org.eclipse.net4j.util.ui.views;version="3.5.0", - org.eclipse.net4j.util.ui.widgets;version="3.5.0" +Export-Package: org.eclipse.net4j.util.internal.ui;version="3.5.100";x-internal:=true, + org.eclipse.net4j.util.internal.ui.actions;version="3.5.100";x-internal:=true, + org.eclipse.net4j.util.internal.ui.bundle;version="3.5.100";x-internal:=true, + org.eclipse.net4j.util.internal.ui.messages;version="3.5.100";x-internal:=true, + org.eclipse.net4j.util.internal.ui.views;version="3.5.100";x-internal:=true, + org.eclipse.net4j.util.ui;version="3.5.100", + org.eclipse.net4j.util.ui.actions;version="3.5.100", + org.eclipse.net4j.util.ui.confirmation;version="3.5.100", + org.eclipse.net4j.util.ui.container;version="3.5.100", + org.eclipse.net4j.util.ui.dnd;version="3.5.100", + org.eclipse.net4j.util.ui.handlers;version="3.5.100", + org.eclipse.net4j.util.ui.prefs;version="3.5.100", + org.eclipse.net4j.util.ui.proposals;version="3.5.100", + org.eclipse.net4j.util.ui.security;version="3.5.100", + org.eclipse.net4j.util.ui.views;version="3.5.100", + org.eclipse.net4j.util.ui.widgets;version="3.5.100" diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ItemProvider.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ItemProvider.java index d261d81ffa..b4283ac357 100644 --- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ItemProvider.java +++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ItemProvider.java @@ -61,6 +61,11 @@ public abstract class ItemProvider<INPUT> extends StructuredContentProvider<INPU public StyledString getStyledText(Object obj) { String text = getText(obj); + if (text == null) + { + return new StyledString(); + } + return new StyledString(text); } |