/******************************************************************************* * Copyright (c) 2007 - 2012 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.files.handlers; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.QualifiedName; import org.jboss.tools.common.meta.action.XAction; import org.jboss.tools.common.model.XModelObject; import org.jboss.tools.common.model.XModelObjectConstants; import org.jboss.tools.common.model.filesystems.FileSystemsHelper; import org.jboss.tools.common.model.plugin.ModelPlugin; import org.jboss.tools.common.model.util.EclipseResourceUtil; public class TargetHolder { protected XAction action; XModelObject target; String path; IResource folder; String addPath = ""; //$NON-NLS-1$ public void setAction(XAction action) { this.action = action; } public void revalidate(String newPath) { if(newPath == path || (newPath != null && newPath.equals(path))) return; path = newPath; addPath = ""; //$NON-NLS-1$ folder = (path == null) ? null : ModelPlugin.getWorkspace().getRoot().findMember(path); target = EclipseResourceUtil.getObjectByResource(folder); if(path != null && (folder == null || !folder.exists())) { String p = path.replace('\\', '/'); String ap = ""; //$NON-NLS-1$ while(true) { int q = p.lastIndexOf('/'); if(q < 0) break; ap = p.substring(q) + ap; p = p.substring(0, q); folder = ModelPlugin.getWorkspace().getRoot().findMember(p); if(folder != null && folder.exists()) { addPath = ap; if(addPath.endsWith(XModelObjectConstants.SEPARATOR)) addPath = addPath.substring(0, addPath.length() - 1); target = EclipseResourceUtil.createObjectForResource(folder); break; } } } else if(target == null && folder != null && folder.exists()) { target = EclipseResourceUtil.createObjectForResource(folder); } else if(target != null && FileSystemsHelper.FILE_SYSTEMS.equals(target.getModelEntity().getName())) { target = EclipseResourceUtil.findFileSystem(folder, target.getModel()); if(target == null) target = EclipseResourceUtil.createObjectForResource(folder); } } public void saveLastPath() { if(path == null || folder == null) return; QualifiedName n = new QualifiedName("", action.getName() + "_lastPath"); //$NON-NLS-1$ //$NON-NLS-2$ try { folder.getProject().setPersistentProperty(n, path); } catch (CoreException e) { ModelPlugin.getPluginLog().logError("CreateFileSuppport:TargetHolder:saveLastPath:" + e.getMessage()); //$NON-NLS-1$ } } }