package com.hundsun.ares.studio.ui.action; import org.apache.commons.lang.StringUtils; import org.eclipse.jface.action.Action; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Tree; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; import com.hundsun.ares.studio.ui.util.ARESUIUtil; public abstract class LinkOpenResourceAction extends Action{ private IARESProject project; private String refType; public IARESProject getProject() { return project; } public void setProject(IARESProject project) { this.project = project; } public String getRefType() { return refType; } public void setRefType(String refType) { this.refType = refType; } @Override public void runWithEvent(Event event) { if (project == null || refType == null) return; Item item = null; if (event.widget instanceof Tree) { item = ((Tree) event.widget).getItem(new Point(event.x, event.y)); } else if (event.widget instanceof Table) { item = ((Table) event.widget).getItem(new Point(event.x, event.y)); } if (item == null) return; String refText = getRefText(item); if (!StringUtils.isEmpty(refText)) { ReferenceInfo ref = ReferenceManager.getInstance().getFirstReferenceInfo(project, refType, refText, true); if (ref == null) return; IARESResource resource = ref.getResource(); ARESUIUtil.openResource(resource); } } protected abstract String getRefText(Item item); }