/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package org.absmodels.abs.plugin.debug.views.variablesview; import org.eclipse.debug.ui.AbstractDebugView; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.TreeColumn; /** * This is the ABS variable view intended to be used in the ABS debug perspective. It contains * a TreeViewer representing the contents of a abs.backend.java.observing.TaskStackFrameView * or an abs.backend.java.observing.ObjectView. * @author tfischer */ public class VariableView extends AbstractDebugView{ @Override protected Viewer createViewer(final Composite parent) { final TreeViewer viewer = new TreeViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION); viewer.setContentProvider(new VariableContentProvider()); viewer.setLabelProvider(new VariableLabelProvider()); final TreeColumn column1 = new TreeColumn(viewer.getTree(), SWT.LEFT); column1.setText("Name"); final TreeColumn column2 = new TreeColumn(viewer.getTree(), SWT.LEFT); column2.setText("Value"); viewer.getTree().setHeaderVisible(true); viewer.getTree().setLinesVisible(true); viewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent event) { Object selection = ((IStructuredSelection)event.getSelection()).getFirstElement(); if (selection != null) { viewer.setExpandedState(selection, !viewer.getExpandedState(selection)); } } }); parent.addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { Rectangle area = parent.getClientArea(); int width = area.width; column1.setWidth(width/3); column2.setWidth(2*width/3); } }); return viewer; } @Override protected void createActions() {} @Override protected String getHelpContextId() { return null; } @Override protected void fillContextMenu(IMenuManager menu) {} @Override protected void configureToolBar(IToolBarManager tbm) {} }