package org.eclipse.ui.views.midi;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.views.file.IFileViewType;
public class MidiViewType implements IFileViewType<MidiViewPage> {
public static final String EXTENSION = "midi"; //$NON-NLS-1$
@Override
public MidiViewPage createPage(PageBook pageBook, IFile file) throws Exception {
return new MidiViewPage(pageBook, file);
}
private final MidiViewToolbarManager toolbar = new MidiViewToolbarManager();
@Override
public IContributionItem[] getToolbarContributions() {
return toolbar.getToolbarContributions();
}
private MidiViewPage page;
private void setPage(MidiViewPage page) {
this.page = page;
}
public MidiViewPage getPage() {
return page;
}
@Override
public void pageShown(MidiViewPage page) {
if ((getPage() != null) && (page != getPage())) {
getPage().pause();
}
setPage(page);
toolbar.setPage(page);
page.setPlaybackAction(toolbar.getPlaybackAction());
}
@Override
public void reload(MidiViewPage page) throws Exception {
page.reload();
}
@Override
public void pageClosed(MidiViewPage page) {
page.closeFile();
if(this.page!=null && this.page.getFile().equals(page.getFile())){
if(!this.page.isDisposed()){
this.page.closeFile();
}
setPage(null);
}
if(toolbar.getPage()!=null && toolbar.getPage().getFile().equals(page.getFile())){
if(!toolbar.getPage().isDisposed()){
toolbar.getPage().closeFile();
}
toolbar.setPage(null);
}
}
@Override
public IFile getFile(IFile sourceFile) {
return sourceFile;
}
}