Index: plugin.properties
===================================================================
--- plugin.properties (revision 5024)
+++ plugin.properties (working copy)
@@ -226,3 +226,6 @@
CheckoutAsProjectIntoAction.label=&Check Out As Project Into ..
CheckoutAsAction.tooltip =&Check out a folder from the repository to the workspace into a directory
MenuIconsPreferencePage.name=Menu Icons
+
+ShowHideExcludedFilesAction.name=&Show/Hide Excluded Files
+ShowHideExcludedFilesAction.tooltip=&Show/Hide Excluded Files
\ No newline at end of file
Index: plugin.xml
===================================================================
--- plugin.xml (revision 5024)
+++ plugin.xml (working copy)
@@ -759,6 +759,19 @@
id="org.tigris.subversion.ui.actions.NewRepositoryAction">
+
+
+
+
+
Index: src/org/tigris/subversion/subclipse/ui/repository/RepositoryManager.java
===================================================================
--- src/org/tigris/subversion/subclipse/ui/repository/RepositoryManager.java (revision 5024)
+++ src/org/tigris/subversion/subclipse/ui/repository/RepositoryManager.java (working copy)
@@ -35,6 +35,7 @@
import org.tigris.subversion.subclipse.core.SVNException;
import org.tigris.subversion.subclipse.core.SVNProviderPlugin;
import org.tigris.subversion.subclipse.core.SVNTeamProvider;
+import org.tigris.subversion.subclipse.core.excludedfiles.ExcludedFilesManager;
import org.tigris.subversion.subclipse.core.repo.ISVNListener;
import org.tigris.subversion.subclipse.ui.Policy;
import org.tigris.subversion.subclipse.ui.authentication.KeyFilesManager;
@@ -54,6 +55,7 @@
private CommentsManager commentsManager = new CommentsManager();
private KeyFilesManager keyFilesManager = new KeyFilesManager();
+ private ExcludedFilesManager excludedFilesManager = new ExcludedFilesManager();
/**
* Answer an array of all known remote roots.
@@ -182,6 +184,7 @@
commentsManager.saveCommentHistory();
commentsManager.saveCommentTemplates();
keyFilesManager.saveKeyFilesHistory();
+ excludedFilesManager.saveExcludedFiles();
}
Index: src/org/tigris/subversion/subclipse/ui/subscriber/ExcludeFromCommitAction.java
===================================================================
--- src/org/tigris/subversion/subclipse/ui/subscriber/ExcludeFromCommitAction.java (revision 0)
+++ src/org/tigris/subversion/subclipse/ui/subscriber/ExcludeFromCommitAction.java (revision 0)
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Subclipse project 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:
+ * Subclipse project committers - initial API and implementation
+ ******************************************************************************/
+package org.tigris.subversion.subclipse.ui.subscriber;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.team.internal.ui.Utils;
+import org.eclipse.team.ui.synchronize.ISynchronizeModelElement;
+import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
+import org.eclipse.team.ui.synchronize.ModelParticipantAction;
+import org.eclipse.ui.PlatformUI;
+import org.tigris.subversion.subclipse.core.excludedfiles.ExcludedFilesManager;
+
+/**
+ * @author sinan.yumak
+ *
+ */
+public class ExcludeFromCommitAction extends ModelParticipantAction {
+
+ public ExcludeFromCommitAction(String text, ISynchronizePageConfiguration configuration) {
+ super(text, configuration);
+ }
+
+ public void run() {
+ try {
+ PlatformUI.getWorkbench().getProgressService().run(true, true, new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException,
+ InterruptedException {
+ try {
+ Iterator iter = getStructuredSelection().iterator();
+ while(iter.hasNext()) {
+ ISynchronizeModelElement element = (ISynchronizeModelElement)iter.next();
+ ExcludedFilesManager.addExcludedFile(element.getResource());
+ }
+ } catch (Exception e) {
+ throw new InvocationTargetException(e);
+ }
+ }
+ });
+ } catch (InvocationTargetException e) {
+ Utils.handle(e);
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ }
+
+ protected boolean isEnabledForSelection(IStructuredSelection selection) {
+ // Only enable if the selected elements adapt to IResource
+ if (selection.isEmpty())
+ return false;
+ for (Iterator iter = selection.iterator(); iter.hasNext();) {
+ Object element = iter.next();
+ if (Utils.getResource(element) == null) {
+ return false;
+ }
+ if (ExcludedFilesManager.getExcludedFiles().contains(Utils.getResource(element))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
Index: src/org/tigris/subversion/subclipse/ui/subscriber/IncludeInCommitAction.java
===================================================================
--- src/org/tigris/subversion/subclipse/ui/subscriber/IncludeInCommitAction.java (revision 0)
+++ src/org/tigris/subversion/subclipse/ui/subscriber/IncludeInCommitAction.java (revision 0)
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Subclipse project 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:
+ * Subclipse project committers - initial API and implementation
+ ******************************************************************************/
+package org.tigris.subversion.subclipse.ui.subscriber;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.team.internal.ui.Utils;
+import org.eclipse.team.ui.synchronize.ISynchronizeModelElement;
+import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
+import org.eclipse.team.ui.synchronize.ModelParticipantAction;
+import org.eclipse.ui.PlatformUI;
+import org.tigris.subversion.subclipse.core.excludedfiles.ExcludedFilesManager;
+
+/**
+ * @author sinan.yumak
+ *
+ */
+public class IncludeInCommitAction extends ModelParticipantAction {
+
+ public IncludeInCommitAction(String text, ISynchronizePageConfiguration configuration) {
+ super(text, configuration);
+ }
+
+ public void run() {
+ try {
+ PlatformUI.getWorkbench().getProgressService().run(true, true, new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException,
+ InterruptedException {
+ try {
+ Iterator iter = getStructuredSelection().iterator();
+ while(iter.hasNext()) {
+ ISynchronizeModelElement element = (ISynchronizeModelElement)iter.next();
+ ExcludedFilesManager.removeExcludedFile(element.getResource());
+ }
+ } catch (Exception e) {
+ throw new InvocationTargetException(e);
+ }
+ }
+ });
+ } catch (InvocationTargetException e) {
+ Utils.handle(e);
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ }
+
+ protected boolean isEnabledForSelection(IStructuredSelection selection) {
+ // Only enable if the selected elements adapt to IResource
+ if (selection.isEmpty())
+ return false;
+ for (Iterator iter = selection.iterator(); iter.hasNext();) {
+ Object element = iter.next();
+ if (Utils.getResource(element) == null) {
+ return false;
+ }
+ if (!ExcludedFilesManager.getExcludedFiles().contains(Utils.getResource(element))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
Index: src/org/tigris/subversion/subclipse/ui/subscriber/SVNSynchronizeParticipant.java
===================================================================
--- src/org/tigris/subversion/subclipse/ui/subscriber/SVNSynchronizeParticipant.java (revision 5024)
+++ src/org/tigris/subversion/subclipse/ui/subscriber/SVNSynchronizeParticipant.java (working copy)
@@ -23,8 +23,8 @@
import org.eclipse.swt.graphics.Image;
import org.eclipse.team.core.TeamException;
import org.eclipse.team.core.synchronize.FastSyncInfoFilter;
-import org.eclipse.team.core.synchronize.SyncInfo;
import org.eclipse.team.core.synchronize.FastSyncInfoFilter.SyncInfoDirectionFilter;
+import org.eclipse.team.core.synchronize.SyncInfo;
import org.eclipse.team.internal.ui.synchronize.ChangeSetCapability;
import org.eclipse.team.internal.ui.synchronize.IChangeSetProvider;
import org.eclipse.team.ui.TeamUI;
@@ -262,6 +262,20 @@
ISynchronizePageConfiguration.P_CONTEXT_MENU,
CONTEXT_MENU_CONTRIBUTION_GROUP_1,
resolveAction);
+
+ ExcludeFromCommitAction excludeFromCommitAction = new ExcludeFromCommitAction("Exclude From Commit", configuration);
+ excludeFromCommitAction.setImageDescriptor(SVNUIPlugin.getPlugin().getImageDescriptor(ISVNUIConstants.IMG_MENU_RESOLVE));
+ appendToGroup(
+ ISynchronizePageConfiguration.P_CONTEXT_MENU,
+ CONTEXT_MENU_CONTRIBUTION_GROUP_1,
+ excludeFromCommitAction);
+
+ IncludeInCommitAction includeInCommitAction = new IncludeInCommitAction("Include In Commit", configuration);
+ includeInCommitAction.setImageDescriptor(SVNUIPlugin.getPlugin().getImageDescriptor(ISVNUIConstants.IMG_MENU_RESOLVE));
+ appendToGroup(
+ ISynchronizePageConfiguration.P_CONTEXT_MENU,
+ CONTEXT_MENU_CONTRIBUTION_GROUP_1,
+ includeInCommitAction);
final Viewer viewer = configuration.getPage().getViewer();
Index: src/org/tigris/subversion/subclipse/ui/subscriber/ShowHideExcludedFilesAction.java
===================================================================
--- src/org/tigris/subversion/subclipse/ui/subscriber/ShowHideExcludedFilesAction.java (revision 0)
+++ src/org/tigris/subversion/subclipse/ui/subscriber/ShowHideExcludedFilesAction.java (revision 0)
@@ -0,0 +1,102 @@
+package org.tigris.subversion.subclipse.ui.subscriber;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.team.core.synchronize.SyncInfo;
+import org.eclipse.team.core.synchronize.SyncInfoSet;
+import org.eclipse.team.internal.core.subscribers.WorkingSetFilteredSyncInfoCollector;
+import org.eclipse.team.internal.ui.synchronize.SubscriberParticipantPage;
+import org.eclipse.team.internal.ui.synchronize.SynchronizeView;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+import org.tigris.subversion.subclipse.core.SVNProviderPlugin;
+import org.tigris.subversion.subclipse.core.excludedfiles.ExcludedFilesManager;
+import org.tigris.subversion.subclipse.core.sync.SVNWorkspaceSubscriber;
+
+/**
+ * @author sinan.yumak
+ *
+ */
+public class ShowHideExcludedFilesAction extends Action implements IViewActionDelegate {
+ private SubscriberParticipantPage page;
+
+ public void run() {
+ }
+
+ public void run(IAction action) {
+ init((IViewPart)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart());
+ if (SVNProviderPlugin.getPlugin().isShowExcludedFiles()) {
+ showExcludedFiles();
+ } else {
+ hideExcludedFiles();
+ }
+ page.reset();
+ }
+
+ private void hideExcludedFiles() {
+ SVNProviderPlugin.getPlugin().setShowExcludedFiles(true);
+
+ final WorkingSetFilteredSyncInfoCollector collector = page.getCollector();
+ collector.run(new IWorkspaceRunnable() {
+ public void run(IProgressMonitor monitor) throws CoreException {
+ SyncInfoSet infoSet = getSyncInfoSet();
+ if (infoSet == null) return;
+
+ collector.getWorkingSetSyncInfoSet().removeAll(infoSet.getResources());
+ }
+ });
+ }
+
+ private void showExcludedFiles() {
+ SVNProviderPlugin.getPlugin().setShowExcludedFiles(false);
+
+ final WorkingSetFilteredSyncInfoCollector collector = page.getCollector();
+ collector.run(new IWorkspaceRunnable() {
+ public void run(IProgressMonitor monitor) throws CoreException {
+ SyncInfoSet infoSet = getSyncInfoSet();
+ if (infoSet == null) return;
+
+ collector.getWorkingSetSyncInfoSet().addAll(infoSet);
+ }
+ });
+ }
+
+ private SyncInfoSet getSyncInfoSet() {
+ List syncInfos = new ArrayList();
+
+ List excludedFiles = new ArrayList(ExcludedFilesManager.getExcludedFiles());
+ Iterator iterator = excludedFiles.iterator();
+
+ while (iterator.hasNext()) {
+ try {
+ SyncInfo syncInfo = SVNWorkspaceSubscriber.getInstance().getSyncInfo((IResource)iterator.next());
+ if (syncInfo != null) {
+ syncInfos.add(syncInfo);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return syncInfos.size() != 0 ? new SyncInfoSet((SyncInfo[])syncInfos.toArray(new SyncInfo[]{})) : null;
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ //do nothing!
+ }
+
+ public void init(IViewPart view) {
+ SynchronizeView syncView = (SynchronizeView)view;
+ page = (SubscriberParticipantPage)syncView.getCurrentPage();
+ }
+
+}
Index: src/org/tigris/subversion/subclipse/ui/wizards/dialogs/SvnWizardCommitPage.java
===================================================================
--- src/org/tigris/subversion/subclipse/ui/wizards/dialogs/SvnWizardCommitPage.java (revision 5024)
+++ src/org/tigris/subversion/subclipse/ui/wizards/dialogs/SvnWizardCommitPage.java (working copy)
@@ -51,6 +51,7 @@
import org.eclipse.ui.PlatformUI;
import org.tigris.subversion.subclipse.core.ISVNLocalResource;
import org.tigris.subversion.subclipse.core.SVNException;
+import org.tigris.subversion.subclipse.core.excludedfiles.ExcludedFilesManager;
import org.tigris.subversion.subclipse.core.resources.SVNWorkspaceRoot;
import org.tigris.subversion.subclipse.ui.IHelpContextIds;
import org.tigris.subversion.subclipse.ui.ISVNUIConstants;
@@ -116,6 +117,7 @@
SVNUIPlugin.getPlugin().getPreferenceStore().getBoolean(ISVNUIConstants.PREF_SELECT_UNADDED_RESOURCES_ON_COMMIT);
this.resourcesToCommit = resourcesToCommit;
+ removeExcludedFiles();
// this.url = url;
this.projectProperties = projectProperties;
this.statusMap = statusMap;
@@ -144,6 +146,18 @@
}
}
+ private void removeExcludedFiles() {
+ System.out.println("Removing excluded files...");
+
+ List result = new ArrayList();
+ for (int i=0; i