blob: 86ba8458f923f2625493b55b3cea70a23c5575b4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.tests.dialogs;
import java.io.StringWriter;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.XMLMemento;
import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
import org.eclipse.ui.internal.ide.model.ResourceFactory;
import junit.framework.TestCase;
/**
* @since 3.3
*
*/
public class UIAbstractFilteredResourcesSelectionDialog extends TestCase {
// -----------------------
// implementation dependent !
private static final String HISTORY_SETTINGS = "History";
private static final String DEFAULT_ROOT_NODE_NAME = "historyRootNode"; //$NON-NLS-1$
private static final String DEFAULT_INFO_NODE_NAME = "infoNode";
private static final String DIALOG_SETTINGS = "org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog"; //$NON-NLS-1$
// -----------------------
private static final String PROJECT_NAME = "FilteredResourcesTestProject";
private static final String FOLDER_NAME1 = "testFolder1";
private static final String FOLDER_NAME2 = "testFolder2";
private static final String[] HISTORY_FILES = new String[] { "file1H.txt",
"file2H.avi", "_FiLe4H.java", "afile4H.txt", "bfile5H.txt",
"cfile6H.txt" };
private static final String[] NONHISTORY_FILES = new String[] {
"file1.txt", "file2.avi", "_FiLe4.java", "afile4.txt",
"bfile5.txt", "cfile6.txt" };
// -----------------------
protected IResource[] historyResources;
protected IResource[] nonHistoryResources;
protected IProject project;
/**
* A hook for subclasses - provides means to change filesystem tree.
*
* @return
*/
protected String getProjectName() {
return PROJECT_NAME;
}
/**
* A hook for subclasses - provides means to change filesystem tree.
*
* @return
*/
protected String getFirstFolderName() {
return FOLDER_NAME1;
}
/**
* A hook for subclasses - provides means to change filesystem tree.
*
* @return
*/
protected String getSecondFolderName() {
return FOLDER_NAME2;
}
/**
* A hook for subclasses - provides means to change filesystem tree.
*
* @return
*/
protected String[] getHistoryFiles() {
return HISTORY_FILES;
}
/**
* A hook for subclasses - provides means to change filesystem tree.
*
* @return
*/
protected String[] getNonHistoryFiles() {
return NONHISTORY_FILES;
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
initializeProject();
// ------------------------
// IDialogSettings
IDialogSettings settings = IDEWorkbenchPlugin.getDefault()
.getDialogSettings().getSection(DIALOG_SETTINGS);
if (settings == null) {
settings = IDEWorkbenchPlugin.getDefault().getDialogSettings()
.addNewSection(DIALOG_SETTINGS);
}
// ------------------------
// XMLMemento
XMLMemento memento = XMLMemento.createWriteRoot(HISTORY_SETTINGS);
IMemento historyMemento = memento.createChild(DEFAULT_ROOT_NODE_NAME);
for (int i = 0; i < historyResources.length; i++) {
IResource item = historyResources[i];
IMemento elementMemento = historyMemento
.createChild(DEFAULT_INFO_NODE_NAME);
ResourceFactory resourceFactory = new ResourceFactory(item);
resourceFactory.saveState(elementMemento);
}
StringWriter writer = new StringWriter();
memento.save(writer);
settings.put(HISTORY_SETTINGS, writer.getBuffer().toString());
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
finalizeProject();
}
private void initializeProject() throws Exception {
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
// ensure only the new project is visible
project = root.getProject(getProjectName());
IProject[] projects = root.getProjects();
for (int i = 0; i < projects.length; i++) {
projects[i].delete(true, null);
}
project.create(null);
project.open(null);
IFolder folder1 = project.getFolder(getFirstFolderName());
IFolder folder2 = project.getFolder(getSecondFolderName());
folder1.create(false, true, null);
folder2.create(false, true, null);
String[] historyFiles = getHistoryFiles();
if (historyFiles == null || historyFiles.length == 0) {
historyResources = new IResource[0];
} else {
historyResources = new IResource[historyFiles.length];
for (int i = 0; i < historyFiles.length; i++) {
IFile file = project.getFile(folder1.getProjectRelativePath()
.append("/" + historyFiles[i]));
file.create(null, false, null);
historyResources[i] = file;
}
}
String[] files = getNonHistoryFiles();
if (files == null || files.length == 0) {
nonHistoryResources = new IResource[0];
} else {
int length = files.length;
nonHistoryResources = new IResource[length * 2];
for (int i = 0; i < length; i++) {
IFile file = project.getFile(folder1.getProjectRelativePath()
.append("/" + files[i]));
file.create(null, false, null);
nonHistoryResources[i] = file;
}
for (int i = 0; i < length; i++) {
IFile file = project.getFile(folder2.getProjectRelativePath()
.append("/" + files[i]));
file.create(null, false, null);
nonHistoryResources[length + i] = file;
}
}
}
private void finalizeProject() throws CoreException {
if (project != null) {
project.delete(true, null);
}
}
}