/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.util;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.OpenStrategy;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.internal.core.ArchiveARESResource;
import com.hundsun.ares.studio.ui.ARESResourceEditorInput;
import com.hundsun.ares.studio.ui.ARESUI;
/**
*
* @author sundl
*/
public class ARESUIUtil {
public static IProgressMonitor nullMonitor() {
return new NullProgressMonitor();
}
public static IProgressMonitor progressMonitor(IProgressMonitor pm) {
if (pm == null)
return nullMonitor();
return pm;
}
private static void openFile(IFile file, IWorkbenchPage page) {
if(file.exists()) {
try{
IDE.openEditor(page, file, false);
} catch (PartInitException e) {
e.printStackTrace();
}
}
}
public static void openResource(IARESResource resource) {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (page == null)
return;
IResource res = resource.getResource();
if (resource.getLib() != null) {
ArchiveARESResource aresfile = (ArchiveARESResource) resource;
ARESResourceEditorInput input = new ARESResourceEditorInput(aresfile);
boolean active = OpenStrategy.activateOnOpen();
try {
IEditorDescriptor editor = IDE.getEditorDescriptor(aresfile.getElementName());
if (editor != null) {
IDE.openEditor(page, input, editor.getId(), active);
}
} catch (PartInitException e) {
e.printStackTrace();
}
} else if (res instanceof IFile && !resource.getRoot().isArchive()) {
openFile((IFile)res, page);
}
}
/**
* ����Դ�Ĺ��߷���
*
* @param resource
* @return
*/
public static IEditorPart openEditor(IARESResource resource)
throws PartInitException {
IEditorPart editor = null;
if (resource != null) {
if (resource.getResource() instanceof IFile) {
editor = IDE.openEditor(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage(),
(IFile) resource.getResource(), false);
}
if (resource instanceof ArchiveARESResource) {
IEditorDescriptor desc = IDE.getEditorDescriptor(resource
.getElementName());
if (desc != null) {
editor = IDE
.openEditor(
PlatformUI.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage(),
new ARESResourceEditorInput(resource),
desc.getId());
}
}
}
return editor;
}
public static void addLinkSupport(final Control control, final IAction action) {
control.addMouseListener(new MouseListener() {
@Override
public void mouseUp(MouseEvent e) {
}
@Override
public void mouseDown(MouseEvent e) {
if (e.stateMask == SWT.CTRL) {
Event event = new Event();
event.button = e.button;
event.data = e.data;
event.widget = e.widget;
event.x = e.x;
event.y = e.y;
action.runWithEvent(event);
}
}
@Override
public void mouseDoubleClick(MouseEvent e) {
}
});
}
}