/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and 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
*
* Contributors:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.model.ui.editors.dnd;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaCore;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.util.*;
/**
*
* @author eskimo
*/
public class LoadBundleBaseNameAttributeValueLoader implements IAttributeValueLoader {
static String ATTR_BASENAME = "basename"; //$NON-NLS-1$
static String ATTR_VAR = "var"; //$NON-NLS-1$
public void fillTagAttributes(IDropWizardModel model) {
String baseName = ""; //$NON-NLS-1$
String fileName = ""; //$NON-NLS-1$
IFile file = DropUtils.getResourceForMimeData(model.getDropData());
IJavaElement javaElement = null;
if(file == null || !file.exists() || file.getParent() == null) {
String s = model.getDropData().getMimeData();
if(s == null) return;
s = s.replace('\\','/');
int l = s.lastIndexOf('.');
if(l >= 0) s = s.substring(0, l);
int k = s.indexOf("/JavaSource/"); //$NON-NLS-1$
if(k >= 0) {
baseName = s.substring(k + "/JavaSource/".length()); //$NON-NLS-1$
} else {
baseName = s.substring(s.lastIndexOf('/') + 1);
}
baseName = baseName.replace('/', '.');
fileName = baseName.substring(baseName.lastIndexOf('.') + 1);
} else {
XModelObject o = EclipseResourceUtil.getObjectByResource(file);
if(o != null) {
String path = XModelObjectLoaderUtil.getResourcePath(o);
if(path.startsWith("/")) path = path.substring(1); //$NON-NLS-1$
int i = path.lastIndexOf('.');
if(i >= 0) path = path.substring(0,i);
baseName = path.replace('/', '.');
fileName = baseName.substring(baseName.lastIndexOf('.') + 1);
} else {
//incorrect
javaElement = JavaCore.create((IFolder)file.getParent());
fileName = file.getName();
int i = fileName.lastIndexOf('.');
if(i >= 0) fileName = fileName.substring(0,i);
if(javaElement != null) {
baseName = javaElement.getElementName()+ "." + fileName; //$NON-NLS-1$
} else {
baseName = fileName;
}
}
}
// TODO Eskimo - Think about how reject drop id properties file is not under java source
model.setAttributeValue(ATTR_BASENAME, baseName);
model.setAttributeValue(ATTR_VAR, fileName.toLowerCase());
if(model instanceof DefaultDropWizardModel) {
((DefaultDropWizardModel)model).setPreferable(ATTR_BASENAME);
((DefaultDropWizardModel)model).setPreferable(ATTR_VAR);
}
}
}