package org.jboss.tools.hibernate.xml.model.handlers;
import java.util.Properties;
import org.eclipse.core.resources.IResource;
import org.jboss.tools.common.meta.action.XActionInvoker;
import org.jboss.tools.common.meta.action.impl.handlers.DefaultRedirectHandler;
import org.jboss.tools.common.model.XModelException;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.files.handlers.CreateFileSupport;
import org.jboss.tools.common.model.filesystems.FileSystemsHelper;
import org.jboss.tools.common.model.util.EclipseResourceUtil;
public class OpenResourceHandler extends DefaultRedirectHandler {
public boolean isEnabled(XModelObject object) {
if(super.isEnabled(object)) return true;
return object != null && object.isObjectEditable();
}
protected XModelObject getTrueSource(XModelObject source) {
String attr = action.getProperty("attribute");
String path = source.getAttributeValue(attr);
if(path == null || path.length() == 0) return null;
XModelObject o = source.getModel().getByPath(path);
if(o != null) return o;
if(!path.startsWith("/")) {
o = source.getModel().getByPath("/" + path);
}
return o;
}
public void executeHandler(XModelObject object, Properties p) throws XModelException {
if(!isEnabled(object)) return;
if(super.isEnabled(object)) {
super.executeHandler(object, p);
} else {
// XModelObject r = object.getModel().getByPath(FileSystemsHelper.FILE_SYSTEMS + "/src");
//
// IResource resource = r != null ? (IResource)r.getAdapter(IResource.class) : null;
// if(resource == null) resource = EclipseResourceUtil.getProject(object);
//
// String attr = action.getProperty("attribute");
// String path = object.getAttributeValue(attr);
// if(path == null) return;
// int s = path.lastIndexOf('/');
// String folder = (s < 0) ? "" : path.substring(0, s);
// if(folder.length() > 0 && !folder.startsWith("/")) folder = "/" + folder;
// String fileName = (s < 0) ? path : path.substring(s + 1);
// Properties p1 = new Properties();
// p1.setProperty(CreateFileSupport.INITIAL_FOLDER_PROPERTY, resource.getFullPath() + folder);
// p1.setProperty(CreateFileSupport.INITIAL_FILE_PROPERTY, fileName);
// if(r == null) {
// XModelObject fo = object.getParent();
// while(fo != null && fo.getFileType() <= XModelObject.FILE) fo = fo.getParent();
// r = fo;
// }
// XActionInvoker.invoke("CreateActions/CreateFiles/ORM/CreateFileHibernate3", r, p1);
// XModelObject newFile = (XModelObject)p1.get("created");
// if(newFile == null) return;
// IResource newResource = (IResource)newFile.getAdapter(IResource.class);
// if(newResource == null) return;
// String path1 = resource.getFullPath().toString();
// String path2 = newResource.getFullPath().toString();
// if(path2.startsWith(path1)) {
// String value = path2.substring(path1.length());
// object.setAttributeValue(attr, value);
// }
//
}
}
}