package net.bioclipse.vscreen.ui.editors;
import java.io.InputStream;
import org.apache.log4j.Logger;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;
/**
*
* @author ola
*/
public class VScreenEditor extends EditorPart{
private static final Logger logger = Logger.getLogger(VScreenEditor.class);
private TreeViewer viewer;
@Override
public void createPartControl( Composite parent ) {
//Treeviewer
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 1;
parent.setLayout(gridLayout);
viewer = new TreeViewer(parent, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
ColumnViewerToolTipSupport.enableFor(viewer);
viewer.setContentProvider(new VScreenContentProvider());
viewer.setLabelProvider(new LabelProvider());
GridData gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
viewer.getTree().setLayoutData(gridData);
viewer.setInput(new String[]{"WEEHOOW"});
// makeActions();
// hookContextMenu();
// contributeToActionBars();
}
@Override
public void doSave( IProgressMonitor monitor ) {
System.out.println("NOT IMPLEMENTED");
}
@Override
public void doSaveAs() {
System.out.println("NOT IMPLEMENTED");
}
@Override
public void init( IEditorSite site, IEditorInput input )
throws PartInitException {
setSite( site );
setInput( input );
if ( input instanceof IFileEditorInput ) {
IFileEditorInput finput = (IFileEditorInput) input;
IFile file=finput.getFile();
logger.debug("File to parse: " + file.getFullPath());
try {
VScreenEditorModel model = parseFile(file.getContents());
} catch ( CoreException e ) {
logger.error(e.getStackTrace());
showError("Could not parse file: " + file + "\n\n" + e.getMessage());
closeEditor();
}
//TODO Parse file into model. XOM?
}
}
/**
* Parse editor file into a vscreen editor model
* @param contents
* @return
*/
private VScreenEditorModel parseFile( InputStream contents ) {
//TODO: Implement parse into model
return null;
}
private void showError( String message ) {
MessageDialog.openError(
viewer.getControl().getShell(),
"VScreen error",
message);
}
private void showMessage(String message) {
MessageDialog.openInformation(
viewer.getControl().getShell(),
"Vscreen",
message);
}
private void closeEditor() {
Display.getDefault().asyncExec( new Runnable() {
public void run() {
getSite().getPage().closeEditor(VScreenEditor.this, true );
}
});
}
@Override
public boolean isDirty() {
return false;
}
@Override
public boolean isSaveAsAllowed() {
return false;
}
@Override
public void setFocus() {
viewer.getTree().setFocus();
}
}