/******************************************************************************* * Copyright (c) 2001, 2006 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 * Jens Lukowski/Innoopract - initial renaming/restructuring * *******************************************************************************/ package org.eclipse.wst.sse.internal.contentproperties; import java.util.Map; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; /** * @deprecated This is package protected so no one cares anyways. */ class ContentSettingsFileHandler extends AbstractContentSettingsHandler { private Map properties; private void getProperties(IResource file) { properties = getContentSettings().getProperties(file); } /* * @see AbstractContentSettingsHandler#handleAdded() */ protected void handleAdded() { super.handleAdded(); if (super.getDelta().getFlags() == 0) { // pulldown memu->copy->create file without override, new file, // import without override // copy,new,import has same kind(=1) and flag(=0). } else if ((getDelta().getFlags() & IResourceDelta.MOVED_FROM) != 0) { // pulldown menu-> rename without override,pulldown menu->move // without override // instead of this method,handleRemoved() works for this delta } } /* * @see AbstractContentSettingsHandler#handleChanged() */ protected void handleChanged() { // edit if (getDelta().getFlags() == IResourceDelta.CONTENT && (getDelta().getFlags() & IResourceDelta.REPLACED) == 0) { super.handleChanged(); } else if (getDelta().getFlags() == IResourceDelta.CONTENT && (getDelta().getFlags() & IResourceDelta.REPLACED) != 0) { // override as a result of copy or import // in Web project, copy with override doesn't happen // override as move or rename // handleRemoved() works for this delta super.handleChanged(); } } /* * @see AbstractContentSettingsHandler#handleRemoved() */ protected void handleRemoved() { super.handleRemoved(); IFile deletedFile = null; // if entry exists then remove it. if (getDelta().getFlags() == 0) { // pulldown menu->delete deletedFile = (IFile) getDelta().getResource(); if (deletedFile == null) return; getContentSettings().deleteAllProperties(deletedFile); getContentSettings().releaseCache(); } else if ((getDelta().getFlags() & IResourceDelta.MOVED_TO) != 0) { // pulldown menu-> rename, pulldown menu->move deletedFile = (IFile) getDelta().getResource(); getProperties(deletedFile); // get destination IResource IPath targetPath = getDelta().getMovedToPath(); IWorkspaceRoot iwr = ResourcesPlugin.getWorkspace().getRoot(); IResource targetFile = iwr.getFile(targetPath);//iwr.findMember(targetPath); // set property of destination file getContentSettings().deleteAllProperties(targetFile); setProperties(targetFile); if (properties != null) properties.clear(); properties = null; } if (deletedFile == null) return; getContentSettings().deleteAllProperties(deletedFile); getContentSettings().releaseCache(); } private void setProperties(IResource file) { if (file.getFileExtension() == null) return; if (!(file.getFileExtension().equalsIgnoreCase("shtml")//$NON-NLS-1$ || file.getFileExtension().equalsIgnoreCase("htm")//$NON-NLS-1$ || file.getFileExtension().equalsIgnoreCase("html")//$NON-NLS-1$ || file.getFileExtension().equalsIgnoreCase("jhtml")//$NON-NLS-1$ || file.getFileExtension().equalsIgnoreCase("xhtml")//$NON-NLS-1$ || file.getFileExtension().equalsIgnoreCase("jsp")//$NON-NLS-1$ || file.getFileExtension().equalsIgnoreCase("css")//$NON-NLS-1$ || file.getFileExtension().equalsIgnoreCase("jsf")//$NON-NLS-1$ || file.getFileExtension().equalsIgnoreCase("jspf")))//$NON-NLS-1$ return; if (properties == null || properties.isEmpty()) return; getContentSettings().setProperties(file, properties); } }