/**
* Դ�������ƣ�JumpAction.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.metadata.ui.actions;
import java.util.Collections;
import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import com.hundsun.ares.studio.core.builder.IAresMarkers;
import com.hundsun.ares.studio.jres.metadata.ui.model.MetadataOverviewElement;
import com.hundsun.ares.studio.ui.editor.actions.IUpdateAction;
/**
* ����ҳ�����Ŀģ����<code> MetadataOverviewElement</code>
* @author wangxh
*
*
*/
public class JumpAction extends Action implements IUpdateAction{
private Logger logger = Logger.getLogger(getClass());
private ColumnViewer viewer;
public JumpAction(ColumnViewer viewer) {
super("��ת������");
this.viewer = viewer;
setId(IMetadataActionIDConstant.CV_JUMP);
}
/**
* @return the viewer
*/
public ColumnViewer getViewer() {
return viewer;
}
/**
* ���᷵��null
* @return
*/
protected List<Object> getSelectedObjects() {
ISelection selection = getViewer().getSelection();
if (selection != null && selection instanceof IStructuredSelection) {
return ((IStructuredSelection) selection).toList();
}
return Collections.EMPTY_LIST;
}
@Override
public void run() {
List<Object> objects = getSelectedObjects();
if (objects.size() > 0 ) {
MetadataOverviewElement element = (MetadataOverviewElement) objects.get(0);
if (element!=null && element.getItem() != null && element.getResource() != null) {
try {
IMarker marker = element.getResource().getResource().createMarker(IAresMarkers.BOOK_MARKER_ID);
marker.setAttribute(IMarker.LOCATION, element.getItem().eResource().getURIFragment(element.getItem()));
String editorId = IDE.getEditorDescriptor(element.getResource().getElementName()).getId();
marker.setAttribute(IDE.EDITOR_ID_ATTR, editorId);
IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), marker);
marker.delete();
} catch (PartInitException e) {
logger.error(e.getMessage(), e);
} catch (CoreException e) {
logger.error(e.getMessage(), e);
}
} else {
logger.info("Ԫ������ĿΪ�ջ�����ԴΪ��");
}
}
}
@Override
public void update() {
setEnabled(getSelectedObjects().size()==1);
}
}