package es.java.otro.view;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.LocationEvent;
import org.eclipse.swt.browser.LocationListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;
import es.java.otro.model.BrowserEditorInput;
public class Content extends EditorPart {
public static final String ID = "otro.browser.editor"; // TODO Needs to be whatever is mentioned in plugin.xml
private Composite top = null;
private Browser browser = null;
private BrowserEditorInput input = null;
@Override
public void doSave(IProgressMonitor monitor) {}
@Override
public void doSaveAs() {}
@Override
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
setSite(site);
setInput(input);
this.input = (BrowserEditorInput) input;
setPartName(this.input.getName());
setTitleToolTip(this.input.getName());
}
@Override
public boolean isDirty() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isSaveAsAllowed() {
// TODO Auto-generated method stub
return false;
}
@Override
public void createPartControl(Composite parent) {
// TODO Auto-generated method stub
top = new Composite(parent, SWT.NONE);
top.setLayout(new GridLayout());
GridData gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.verticalAlignment = GridData.FILL;
ToolBar navBar = new ToolBar( top, SWT.None );
browser = new Browser(top, SWT.NONE);
browser.setLayoutData(gridData);
navBar.setLayoutData( new GridData( GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_END ) );
final ToolItem back = new ToolItem(navBar, SWT.PUSH);
back.setText("back");
back.setEnabled(false);
final ToolItem forward = new ToolItem(navBar, SWT.PUSH);
forward.setText("forward");
forward.setEnabled(false);
back.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
browser.back();
}
});
forward.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
browser.forward();
}
});
LocationListener locationListener = new LocationListener() {
public void changed(LocationEvent event) {
Browser browser = (Browser)event.widget;
back.setEnabled(browser.isBackEnabled());
forward.setEnabled(browser.isForwardEnabled());
}
public void changing(LocationEvent event) {
}
};
browser.addLocationListener(locationListener);
browser.setText(formatHtml(input.getEntry().getHtml()));
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
@Override
public String getTitleToolTip() {
return input.getName();
}
private String formatHtml(String html) {
final String header = "<html><font size='2px' face='arial, vardana'>";
final String footer = "</font></html>";
StringBuffer sb = new StringBuffer();
sb.append(header).append(html).append(footer);
return sb.toString();
}
}