/**
* Դ�������ƣ�AddSampleAction.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.metadata.ui.actions;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ColumnViewer;
import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage;
import com.hundsun.ares.studio.jres.model.metadata.Operation;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerAction;
/**
* �����������ʾ������
* @author wangxh
*
*/
public class AddSampleAction extends ColumnViewerAction {
private EObject owner;
private EClass eClass;
private String text;
private ColumnViewer viewer;
private URL url;
private String scriptLocation;
/**
* @param viewer
* @param editingDomain
* @param text ����
* @param owner
* @param path ·��
* @param project
*/
public AddSampleAction(ColumnViewer viewer, EditingDomain editingDomain,String text,EObject owner, URL url,String scriptLocation) {
super(viewer, editingDomain);
setText(text);
setEnabled(true);
this.owner = owner;
this.eClass=MetadataPackage.Literals.OPERATION;
this.text=text;
this.viewer=viewer;
this.url=url;
this.scriptLocation = scriptLocation;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.actions.ColumnViewerAction#createCommand()
*/
@Override
protected Command createCommand() {
//�����ṩ�Ľű��ļ�ʵ�ֲ���
EObject newObj = eClass.getEPackage().getEFactoryInstance().create(eClass);
Command command = AddCommand.create(getEditingDomain(), owner,
MetadataPackage.Literals.METADATA_RESOURCE_DATA__OPERATIONS, newObj);
if(newObj instanceof Operation){
((Operation)newObj).setTitle(text);
((Operation)newObj).setFile(this.scriptLocation);
((Operation)newObj).setFunctionName("main");
InputStream is;
try {
is = FileLocator.toFileURL(url).openStream();
((Operation)newObj).setCode(convertStreamToString(is));
} catch (Exception e) {
MessageDialog.openError(viewer.getControl().getShell(),"�ļ�������", "��ʾ���Ľű��ļ������ڣ�");
e.printStackTrace();
return null;
}
}
return command;
}
/**
* @param is
* @return
*/
private String convertStreamToString(InputStream is) {
BufferedReader reader;
try {
reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
} catch (Exception e1) {
MessageDialog.openError(viewer.getControl().getShell(),"�ļ����쳣", "��ʾ���Ľű��ļ����쳣��");
e1.printStackTrace();
}
return null;
}
}