/**
* Logback-beagle: The logback Console Plugin for Eclipse
* Copyright (C) 2006-2012, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation.
*/
package ch.qos.logback.beagle.view;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import ch.qos.logback.beagle.Activator;
import ch.qos.logback.beagle.net.LoggingEventSocketServer;
import ch.qos.logback.beagle.util.MementoUtil;
import ch.qos.logback.beagle.util.ResourceUtil;
/**
* This sample class demonstrates how to plug-in a new workbench view. The view
* shows data obtained from the model. The sample creates a dummy model on the
* fly, but a real implementation would connect to the model available either in
* this or another plug-in (e.g. the workspace). The view is connected to the
* model using a content provider.
* <p>
* The view uses a label provider to define how model objects should be
* presented in the view. Each view can present the same model objects using
* different labels and icons, if needed. Alternatively, a single label provider
* can be shared between views in order to ensure that objects of the same type
* are presented in the same way everywhere.
* <p>
*/
public class BeagleView extends ViewPart {
TableMediator tableMediator;
private MementoUtil mementoUtil = new MementoUtil();
/**
* {@inheritDoc}
*/
public void init(IViewSite site, IMemento memento) throws PartInitException {
super.init(site, memento);
System.out.println("BeagleView init called");
mementoUtil.init(memento);
}
/**
*
* @param parent
*/
@Override
public void createPartControl(Composite parent) {
parent.setLayout(new FormLayout());
// initialize Beagle table
ResourceUtil.init(parent.getDisplay());
tableMediator = new TableMediator(parent, mementoUtil);
Activator.INSTANCE.getPreferenceStore().addPropertyChangeListener(
tableMediator.preferencesChangeListenter);
// start Beagle socket server
LoggingEventSocketServer loggingEventSocketServer = new LoggingEventSocketServer(
tableMediator.loggerContext, tableMediator.classicTISBuffer);
Thread serverThread = new Thread(loggingEventSocketServer);
serverThread.start();
// stop Beagle socket server, if user dispose the view
parent.addListener(SWT.Dispose, loggingEventSocketServer);
PlatformUI.getWorkbench().getHelpSystem()
.setHelp(tableMediator.grid, "ch.qos.logback.beagle.viewer");
}
/**
* {@inheritDoc}
*/
@Override
public void saveState(IMemento memento) {
MementoUtil.save(memento, tableMediator);
}
public TableMediator getTableMediator() {
return tableMediator;
}
/**
* {@inheritDoc}
*/
@Override
public void setFocus() {
tableMediator.grid.setFocus();
}
@Override
public void dispose() {
super.dispose();
Activator.INSTANCE.getPreferenceStore().removePropertyChangeListener(
tableMediator.preferencesChangeListenter);
}
}