com.matlab.eclipse.mconsole.views.MatlabWorkspaceView.java Source code

Java tutorial

Introduction

Here is the source code for com.matlab.eclipse.mconsole.views.MatlabWorkspaceView.java

Source

/*******************************************************************************
 * Copyright (c) 2006, 2011 Graz University of Technology,
 * Institute of Theoretical and Computational Physics (ITPCP) 
 *
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     David Camhy, Winfried Kernbichler, Georg Huhs (ITPCP) - 
 *        initial API and implementation
 *     Christopher Albert (ITPCP) - refactoring
 *******************************************************************************/
package com.matlab.eclipse.mconsole.views;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.themes.ITheme;
import org.eclipse.ui.themes.IThemeManager;
import com.matlab.eclipse.mconsole.MConsolePlugin;
import com.matlab.eclipse.mconsole.internal.ui.preferences.IPreferenceConstants;
import com.matlab.eclipse.mconsole.internal.ui.preferences.ThemeConstants;
import com.matlab.eclipse.mconsole.internal.ui.preferences.ThemeWrapper;
import com.matlab.eclipse.mconsole.matlab.MOutputParser;
import com.matlab.eclipse.mconsole.matlab.MatlabCommunicationException;
import com.matlab.eclipse.mconsole.matlab.MatlabData;
import com.matlab.eclipse.mconsole.matlab.MatlabDataObject;
import com.matlab.eclipse.mconsole.matlab.MatlabDataParent;
import com.matlab.eclipse.mconsole.matlab.MatlabNotStartedException;

public class MatlabWorkspaceView extends ViewPart {
    public static String VIEW_ID = "com.matlab.eclipse.mconsole.views.MatlabWorkspaceView";
    private StyledText text;

    private static TreeViewer viewer;

    private List<MOutputParser> vars;

    private List<MOutputParser> globalvars;

    private static MatlabWorkspaceView myself;

    private final IPropertyChangeListener valueChangeListener = new IPropertyChangeListener() {

        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME)) {
                ((ITheme) event.getOldValue()).getColorRegistry().removeListener(this);
                ((ITheme) event.getNewValue()).getColorRegistry().addListener(this);
                ((ITheme) event.getOldValue()).getFontRegistry().removeListener(this);
                ((ITheme) event.getNewValue()).getFontRegistry().addListener(this);
            } else if (event.getProperty().equals(ThemeConstants.WORKSPACE_FONT)) {
                ThemeWrapper theme = getCurrentTheme();
                text.setFont(theme.getFont(ThemeConstants.WORKSPACE_FONT));
            } else if (event.getProperty().equals(ThemeConstants.WORKSPACE_BACKGROUND_COLOR)) {
                ThemeWrapper theme = getCurrentTheme();
                text.setBackground(theme.getColor(ThemeConstants.WORKSPACE_BACKGROUND_COLOR));
            } else if (event.getProperty().equals(ThemeConstants.WORKSPACE_TEXT_COLOR)) {
                ThemeWrapper theme = getCurrentTheme();
                text.setForeground(theme.getColor(ThemeConstants.WORKSPACE_TEXT_COLOR));
            } else if (event.getProperty().equals(ThemeConstants.WORKSPACE_TREE_FONT)) {
                ThemeWrapper theme = getCurrentTheme();
                viewer.getTree().setFont(theme.getFont(ThemeConstants.WORKSPACE_TREE_FONT));
                refresh();
            }
        }
    };

    class ViewContentProvider implements IStructuredContentProvider, ITreeContentProvider {
        private MatlabDataParent invisibleRoot;

        public void inputChanged(Viewer v, Object oldInput, Object newInput) {
        }

        public void dispose() {
        }

        public Object[] getElements(Object parent) {
            if (parent.equals(getViewSite())) {
                if (invisibleRoot == null)
                    initialize();
                return getChildren(invisibleRoot);
            }
            return getChildren(parent);
        }

        public Object getParent(Object child) {
            if (child instanceof MatlabDataObject) {
                return ((MatlabDataObject) child).getParent();
            }
            return null;
        }

        public Object[] getChildren(Object parent) {
            if (parent instanceof MatlabDataParent) {
                return ((MatlabDataParent) parent).getChildren();
            }
            return new Object[0];
        }

        public boolean hasChildren(Object parent) {
            if (parent instanceof MatlabDataParent)
                return ((MatlabDataParent) parent).hasChildren();
            return false;
        }

        /*
         * We will set up a dummy model to initialize tree heararchy. In a real
         * code, you will connect to a real model and expose its hierarchy.
         */

        public MatlabDataParent outputMatlabParent(String name, MatlabData data) {
            try {
                MatlabDataParent output;
                List<?> contents = data.getData();
                String[] childrensname = new String[contents.size()];

                String sizestring = data.getSize();

                try {

                    sizestring = sizestring.substring(1, sizestring.length() - 1);

                    String[] sizestringsplit = sizestring.split(",");
                    StringBuilder middle = new StringBuilder(sizestringsplit[1] + "," + sizestringsplit[0] + ",");
                    for (int i = 2; i < sizestringsplit.length; i++) {
                        middle.append(sizestringsplit[i] + ",");
                    }

                    sizestring = "[" + middle.substring(0, middle.length() - 1) + "]";

                } catch (Exception e) {

                    sizestring = data.getSize();
                }

                output = new MatlabDataParent(name + " (" + data.getType() + ")" + sizestring, data);

                if (data.getType().equals("struct")) {

                    childrensname = data.getName().trim().split(",");
                    String[] sizearr = sizestring.substring(1, sizestring.length() - 1).trim().split(",");
                    Integer sx = 0, sy = 0;

                    if (!(sizearr.length > 2)) {
                        sx = new Integer(sizearr[0]).intValue();
                        sy = new Integer(sizearr[1]).intValue();
                    }

                    try {
                        for (int i = 0; i < sx; i++) {
                            for (int j = 0; j < sy; j++) {
                                Integer index = j + i * sx;
                                String structurename = "structure element" + " " + "(" + (i + 1) + "," + (j + 1)
                                        + ")";
                                // childrensname[index] =
                                // "structure element"+" "+"("
                                // +(j+1)+","+(i+1)+")";
                                MatlabDataParent child = new MatlabDataParent(structurename, new MatlabData());
                                output.addChild(child);

                                for (int k = 0; k < childrensname.length; k++) {
                                    MatlabData structElementData = (MatlabData) contents
                                            .get(k * sx * sy + i * sy + j);
                                    MatlabDataParent grandchild = outputMatlabParent(childrensname[k],
                                            structElementData);
                                    child.addChild(grandchild);

                                }
                            }
                        }

                    } catch (Throwable t) {
                        t.printStackTrace();
                    }

                }
                if (data.getType().equals("cell")) {

                    String[] sizearr = sizestring.substring(1, sizestring.length() - 1).trim().split(",");

                    Integer sx = 0, sy = 0;
                    if (!(sizearr.length > 2)) {
                        sx = new Integer(sizearr[0]).intValue();
                        sy = new Integer(sizearr[1]).intValue();
                    }
                    for (int i = 0; i < sx; i++) {
                        for (int j = 0; j < sy; j++) {
                            Integer index = j + i * sy;
                            if (sx == 1 && sy == 1)
                                childrensname[index] = "cell element";
                            else
                                childrensname[index] = "cell element " + "{" + (i + 1) + "," + (j + 1) + "}";
                            MatlabDataParent child = outputMatlabParent(childrensname[index],
                                    (MatlabData) contents.get(j + i * sy));
                            output.addChild(child);
                        }

                    }
                }

                return output;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }

        }

        private void initialize() {
            invisibleRoot = new MatlabDataParent("", new MatlabData());
            if (MConsolePlugin.getDefault().isMatlabInitialized()) {
                try {
                    vars = MConsolePlugin.getDefault().getMatlab().getLocalVars();
                    globalvars = MConsolePlugin.getDefault().getMatlab().getGlobalVars();
                } catch (NullPointerException e) {
                    vars = new ArrayList<MOutputParser>();
                    globalvars = new ArrayList<MOutputParser>();
                } catch (MatlabCommunicationException e) {
                    vars = new ArrayList<MOutputParser>();
                    globalvars = new ArrayList<MOutputParser>();
                } catch (MatlabNotStartedException e) {
                    vars = new ArrayList<MOutputParser>();
                    globalvars = new ArrayList<MOutputParser>();
                }
                MatlabDataParent localRoot = new MatlabDataParent(
                        "Local Variables - name(class)[size]<min,mean,max>", new MatlabData());
                MatlabDataParent globalRoot = new MatlabDataParent(
                        "Global Variables - name(class)[size]<min,mean,max>", new MatlabData());
                MatlabDataParent testresultRoot = MConsolePlugin.getDefault().getTestResults();
                invisibleRoot.addChild(localRoot);
                invisibleRoot.addChild(globalRoot);
                if (testresultRoot != null)
                    invisibleRoot.addChild(testresultRoot);
                for (int i = 0; i < vars.size(); i++) {
                    MOutputParser var = vars.get(i);
                    String varname = var.getName();
                    MatlabDataParent p1 = outputMatlabParent(varname, var.getData());

                    localRoot.addChild(p1);
                }
                for (int i = 0; i < globalvars.size(); i++) {
                    // lobal
                    MOutputParser globalvar = globalvars.get(i);
                    String varname = globalvar.getName();

                    MatlabDataParent p1 = outputMatlabParent(varname, globalvar.getData());
                    globalRoot.addChild(p1);
                }
            }

        }

        public MatlabDataParent getInvisibleRoot() {
            return invisibleRoot;
        }

        public void setInvisibleRoot(MatlabDataParent invisibleRoot) {
            this.invisibleRoot = invisibleRoot;
        }
    }

    class ViewLabelProvider extends LabelProvider implements IFontProvider {

        @Override
        public String getText(Object obj) {
            if (obj instanceof MatlabDataParent) {
                MatlabDataParent matlabDataParent = (MatlabDataParent) obj;
                MatlabData matlabData = matlabDataParent.getMatlabdata();
                if (matlabData.isNumeric()) {
                    if (!matlabData.getSize().equals("[1,1]"))
                        return obj.toString() + " <" + matlabData.getMin() + "," + matlabData.getMean() + ","
                                + matlabData.getMax() + ">";
                }
            }
            return obj.toString();
        }

        @Override
        public Image getImage(Object obj) {
            String imageKey = ISharedImages.IMG_OBJ_ELEMENT;

            if (obj instanceof MatlabDataParent) {
                MatlabDataParent matlabdata = (MatlabDataParent) obj;
                try {
                    String type = matlabdata.getMatlabdata().getType();
                    if (type.equals("char"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/c.gif"))
                                .createImage();
                    else if (type.equals("dchar"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/dc.gif"))
                                .createImage();
                    else if (type.equals("single"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/s.gif"))
                                .createImage();
                    else if (type.equals("double"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/d.gif"))
                                .createImage();
                    else if (type.equals("logical"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/L.gif"))
                                .createImage();
                    else if (type.equals("int8"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/i8.gif"))
                                .createImage();
                    else if (type.equals("uint8"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/ui8.gif"))
                                .createImage();
                    else if (type.equals("int16"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/i16.gif"))
                                .createImage();
                    else if (type.equals("uint16"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/ui16.gif"))
                                .createImage();
                    else if (type.equals("int32"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/i32.gif"))
                                .createImage();
                    else if (type.equals("uint32"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/ui32.gif"))
                                .createImage();
                    else if (type.equals("int64"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/i64.gif"))
                                .createImage();
                    else if (type.equals("uint64"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/ui64.gif"))
                                .createImage();
                    else if (type.equals("handle"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/h.gif"))
                                .createImage();
                    else if (type.equals("function_handle"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/h.gif"))
                                .createImage();
                    else if (type.equals("cell"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/cl.gif"))
                                .createImage();
                    else if (type.equals("sparse"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/sp.gif"))
                                .createImage();
                    else if (type.equals("struct"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/st.gif"))
                                .createImage();
                    else if (type.equals("inline"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/il.gif"))
                                .createImage();
                    else if (type.equals("sym"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/sy.gif"))
                                .createImage();
                    else
                        imageKey = ISharedImages.IMG_OBJ_ELEMENT;
                } catch (Exception e) {
                    if (matlabdata.getName().equals("Local Variables"))
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/local.gif"))
                                .createImage();
                    else
                        return ImageDescriptor
                                .createFromURL(MConsolePlugin.getDefault().getBundle().getEntry("icons/global.gif"))
                                .createImage();
                }
            } else
                imageKey = ISharedImages.IMG_OBJ_FOLDER;

            return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
        }

        public Font getFont(Object element) {
            ThemeWrapper theme = getCurrentTheme();
            return theme.getFont(ThemeConstants.WORKSPACE_TREE_FONT);

        }
    }

    // class NameSorter extends ViewerSorter {
    // }

    /**
     * The constructor.
     */
    public MatlabWorkspaceView() {
        myself = this;
    }

    /**
     * This is a callback that will allow us to create the viewer and initialize
     * it.
     */

    @Override
    public void createPartControl(Composite parent) {

        System.currentTimeMillis();
        final SashForm sashForm1 = new SashForm(parent, SWT.BORDER);
        final Composite composite_1 = new Composite(sashForm1, SWT.NONE);
        composite_1.setLayout(new FillLayout());
        // final ScrolledComposite = new ScrolledComposite(parent, SWT.BORDER |
        // SWT.H_SCROLL | SWT.V_SCROLL);
        final GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        sashForm1.setLayout(gridLayout);
        ThemeWrapper theme = getCurrentTheme();

        viewer = new TreeViewer(composite_1, SWT.BORDER);
        viewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(final SelectionChangedEvent e) {
                ISelection selection = viewer.getSelection();
                // TODO: Run in background
                Object obj = ((IStructuredSelection) selection).getFirstElement();
                if (obj instanceof MatlabDataParent) {
                    // System.out.println("TreeParent");
                    try {
                        MatlabDataParent select = (MatlabDataParent) obj;
                        MatlabData data = select.getMatlabdata();
                        String type = data.getType();
                        if (type.equals("single") || type.equals("double") || type.equals("logical")
                                || type.equals("int8") || type.equals("uint8") || type.equals("int16")
                                || type.equals("uint16") || type.equals("int32") || type.equals("uint32")
                                || type.equals("int64") || type.equals("uint64")

                        ) {
                            List<?> contentstruct = data.getData();
                            MConsolePlugin.getDefault().waitForAutoBuild();

                            String sizestr = data.getSize();
                            String[] sizearr = sizestr.substring(1, sizestr.length() - 1).trim().split(",");
                            String contenttext = "";
                            StringBuilder contenttextstruct = new StringBuilder();
                            for (int i = 0; i < contentstruct.size(); i++) {
                                contenttextstruct.append((String) contentstruct.get(i));
                            }

                            if (!MConsolePlugin.getDefault().getPreferenceStore()
                                    .getBoolean(IPreferenceConstants.P_SHRINKOUTPUT)) {
                                if (!(sizearr.length > 2)) {
                                    Integer sx = new Integer(sizearr[0]).intValue();
                                    Integer sy = new Integer(sizearr[1]).intValue();
                                    MatlabData datastruct = MConsolePlugin.getDefault().getMatlab()
                                            .getMatlabVarXML(contenttextstruct.toString()).getData();
                                    List<?> content = datastruct.getData();
                                    sizestr = datastruct.getSize();
                                    sizearr = sizestr.substring(1, sizestr.length() - 1).trim().split(",");
                                    sx = new Integer(sizearr[0]).intValue();
                                    sy = new Integer(sizearr[1]).intValue();
                                    Integer maxLength = 0;
                                    for (int i = 0; i < sy; i++) {
                                        for (int j = 0; j < sx; j++) {
                                            int length = ((String) content.get(j + i * sx)).length();
                                            if (length > maxLength)
                                                maxLength = length;
                                        }
                                    }
                                    for (int i = 0; i < sy; i++) {
                                        for (int j = 0; j < sx; j++) {
                                            final int index = j + i * sx;
                                            String s = ((String) content.get(index)).trim();
                                            int length = s.length();

                                            for (int k = 0; k < maxLength - length; k++)
                                                contenttext = contenttext + " ";
                                            contenttext = contenttext + s + " ";
                                        }
                                        contenttext = contenttext + '\n';
                                    }
                                    if (sx == 0 && sy == 0)
                                        contenttext = contenttext + "[]";
                                } else {
                                    contenttext = MConsolePlugin.getDefault().getMatlab()
                                            .eval(contenttextstruct.toString(), false, false);
                                }
                            } else {
                                MConsolePlugin.getDefault().getMatlab()
                                        .evalNoOutput("shrink=shrink_output(" + contenttextstruct + ");");
                                MOutputParser outputparser = MConsolePlugin.getDefault().getMatlab()
                                        .getMatlabVarXML("shrink");
                                List<?> content = outputparser.getData().getData();
                                for (int i = 0; i < content.size(); i++) {
                                    contenttext = contenttext + (String) content.get(i);
                                }

                                MConsolePlugin.getDefault().getMatlab().evalNoOutput("clear shrink;");
                            }

                            text.setText(contenttext);

                        } else if (type.equals("char") || type.equals("dchar")) {
                            List<?> content = data.getData();
                            String sizestr = data.getSize();
                            String[] sizearr = sizestr.substring(1, sizestr.length() - 1).trim().split(",");
                            Integer sx = new Integer(sizearr[0]).intValue();
                            Integer sy = new Integer(sizearr[1]).intValue();
                            String contenttext = "";
                            for (int i = 0; i < content.size(); i++) {
                                contenttext = contenttext + (String) content.get(i);
                            }

                            String outputText = "";
                            for (int i = 0; i < sy; i++) {
                                for (int j = 0; j < sx; j++) {
                                    final int index = j + i * sx;
                                    char c = (contenttext.charAt(index));
                                    outputText = outputText + c;
                                }
                                outputText = outputText + '\n';
                            }
                            if (sx == 0 && sy == 0)
                                outputText = outputText + "[]";
                            text.setText(outputText);

                        } else if (type.equals("function_handle") || type.equals("inline") || type.equals("sym")
                                || type.equals("sparse")) {
                            List<?> content = data.getData();
                            String outputText = "";
                            for (int i = 0; i < content.size(); i++) {
                                outputText = outputText + (String) content.get(i);
                            }
                            String sizestr = data.getSize();
                            String[] sizearr = sizestr.substring(1, sizestr.length() - 1).trim().split(",");
                            Integer sx = new Integer(sizearr[0]).intValue();
                            Integer sy = new Integer(sizearr[1]).intValue();
                            if (sx == 0 && sy == 0)
                                outputText = outputText + "[]";
                            text.setText(outputText);

                        } else {
                            text.setText("");
                        }

                    } catch (Throwable t) {
                        text.setText("");
                    }
                }

            }
        });
        viewer.setAutoExpandLevel(1);

        viewer.setContentProvider(new ViewContentProvider());
        viewer.setLabelProvider(new ViewLabelProvider());

        viewer.setInput(getViewSite());

        final SashForm sashForm = new SashForm(sashForm1, SWT.VERTICAL);

        final Composite composite_2 = new Composite(sashForm, SWT.NONE);
        composite_2.setLayout(new FillLayout());

        text = new StyledText(composite_2, SWT.V_SCROLL | SWT.MULTI | SWT.H_SCROLL);
        text.setEditable(false);
        // text.set
        sashForm.setWeights(new int[] { 262 });
        sashForm.setSize(247, 342);
        sashForm1.setWeights(new int[] { 100, 200 });
        sashForm1.setSize(200, 200);
        text.setFont(theme.getFont(ThemeConstants.WORKSPACE_FONT));
        text.setBackground(theme.getColor(ThemeConstants.WORKSPACE_BACKGROUND_COLOR));
        text.setForeground(theme.getColor(ThemeConstants.WORKSPACE_TEXT_COLOR));
        text.setWordWrap(false);
        IThemeManager themeManager = MConsolePlugin.getDefault().getWorkbench().getThemeManager();
        // listen for the default workbench theme to change.
        themeManager.addPropertyChangeListener(valueChangeListener);
        // listen for changes to the current theme values
        themeManager.getCurrentTheme().getColorRegistry().addListener(valueChangeListener);
        themeManager.getCurrentTheme().getFontRegistry().addListener(valueChangeListener);

        viewer.getTree().setFont(theme.getFont(ThemeConstants.WORKSPACE_TREE_FONT));

    }

    public void refresh() {
        if (MConsolePlugin.getDefault().isMatlabInitialized()) {
            getViewer().refresh();
            getViewer().expandAll();
            text.setText("");
        } else {
            ViewContentProvider contentprovider = (ViewContentProvider) getViewer().getContentProvider();
            contentprovider.setInvisibleRoot(null);
            getViewer().refresh();
            text.setText("");
        }
    }

    public TreeViewer getViewer() {
        viewer.setContentProvider(new ViewContentProvider());
        viewer.setLabelProvider(new ViewLabelProvider());
        // viewer.setSorter(new NameSorter());
        viewer.setInput(getViewSite());
        return viewer;
    }

    public ThemeWrapper getCurrentTheme() {
        return new ThemeWrapper(MConsolePlugin.getDefault().getWorkbench().getThemeManager().getCurrentTheme());
    }

    public static MatlabWorkspaceView getDefault() {
        return myself;
    }

    /**
     * Passing the focus request to the viewer's control.
     */
    @Override
    public void setFocus() {
        viewer.getControl().setFocus();
    }

    public StyledText getText() {
        return text;
    }
}