org.openmaji.implementation.tool.eclipse.ui.view.log.MajiLogView.java Source code

Java tutorial

Introduction

Here is the source code for org.openmaji.implementation.tool.eclipse.ui.view.log.MajiLogView.java

Source

/*
 * @(#)MajiLogView.java
 *
 * Copyright 2003 by EkoLiving Pty Ltd.  All Rights Reserved.
 *
 * This software is the proprietary information of EkoLiving Pty Ltd.
 * Use is subject to license terms.
 */

/* ToDo:
 * - max entries limit
 */
package org.openmaji.implementation.tool.eclipse.ui.view.log;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.part.ViewPart;
import org.openmaji.implementation.tool.eclipse.icon.Icon;

/**
 * <p>
 * ...
 * </p>
 * @author  mg
 * @version 1.0
 */
public class MajiLogView extends ViewPart {

    public static final String LOG_TRACE_ENABLED = "LogTraceEnabled";
    public static final String LOG_TRACE_LEVEL = "LogTraceLevel";
    public static final String LOG_AUTOSCROLL = "LogAutoscroll";
    public static final String LOG_CLASS_FILTER = "LogClassFilter";

    TableViewer viewer;
    Action filterAction;
    LogLevelFilter logLevelfilter = new LogLevelFilter();
    ClassnameFilter classNamefilter = new ClassnameFilter();
    LogTableContentProvider contentProvider = new LogTableContentProvider();

    /* (non-Javadoc)
     * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
     */
    public void createPartControl(Composite parent) {
        viewer = new TableViewer(parent,
                SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);

        GridData gd = new GridData(GridData.FILL_BOTH);
        Table table = viewer.getTable();
        table.setLayoutData(gd);
        table.setHeaderVisible(true);

        TableColumn column = new TableColumn(table, SWT.LEFT, 0);
        column.setText("Time");
        column.setWidth(160);
        column = new TableColumn(table, SWT.LEFT, 1);
        column.setText("Level");
        column.setWidth(50);
        column = new TableColumn(table, SWT.LEFT, 2);
        column.setText("Class");
        column.setWidth(340);
        column = new TableColumn(table, SWT.LEFT, 3);
        column.setText("Text");
        column.setWidth(350);

        table.pack();

        viewer.addFilter(logLevelfilter);
        viewer.addFilter(classNamefilter);

        viewer.setContentProvider(contentProvider);
        viewer.setLabelProvider(new LogTableLabelProvider());
        viewer.setInput(new Object());
        viewer.addDoubleClickListener(new DoubleClickListener());

        createActions();
        createToolbar();
    }

    /* (non-Javadoc)
     * @see org.eclipse.ui.IWorkbenchPart#setFocus()
     */
    public void setFocus() {
    }

    public void createActions() {
        filterAction = new Action("Filters") {
            public void run() {
                showFilterDialog();
            }
        };
        filterAction.setImageDescriptor(ImageDescriptor.createFromFile(Icon.class, "filter.gif"));
        filterAction.setToolTipText("Filters");
    }

    protected void showFilterDialog() {
        LogViewPreferencesDialog prefsDialog = new LogViewPreferencesDialog(
                getViewSite().getWorkbenchWindow().getActivePage().getWorkbenchWindow().getShell());
        prefsDialog.open();
        logLevelfilter.updateFilterSettings();
        classNamefilter.updateFilterSettings();
        contentProvider.setAutoscroll();
        viewer.refresh();
    }

    private void createToolbar() {
        IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
        mgr.add(filterAction);
    }

    private class DoubleClickListener implements IDoubleClickListener {

        /* (non-Javadoc)
         * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
         */
        public void doubleClick(DoubleClickEvent event) {
            //         LogEvent logEvent = (LogEvent)((IStructuredSelection)event.getSelection()).getFirstElement();
            //         LogDetailDialog eventDialog = new LogDetailDialog(getViewSite().getWorkbenchWindow().getActivePage().getWorkbenchWindow().getShell(), logEvent);
            //         eventDialog.open();
        }

    }
}