org.axdt.swc.ui.SwcEditorView.java Source code

Java tutorial

Introduction

Here is the source code for org.axdt.swc.ui.SwcEditorView.java

Source

/*******************************************************************************
 * Copyright (c) 2010 Martin Schnabel <mb0@mb0.org>.
 * 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
 ******************************************************************************/
package org.axdt.swc.ui;

import java.util.ArrayList;

import org.axdt.core.ui.img.AxdtImageHelper;
import org.axdt.core.ui.img.AxdtImages;
import org.axdt.swc.ui.model.SwcContainer;
import org.axdt.swc.ui.model.SwcEntry;
import org.axdt.swc.ui.model.SwcInfo;
import org.axdt.swc.ui.model.SwcModel;
import org.axdt.swc.ui.model.SwcModelObject;
import org.axdt.swc.ui.model.SwcPackage;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorRegistry;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.EditorPart;

public class SwcEditorView extends EditorPart {

    @Override
    public void doSave(IProgressMonitor monitor) {
    }

    @Override
    public void doSaveAs() {
    }

    @Override
    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
        setSite(site);
        setInput(input);
    }

    @Override
    public boolean isDirty() {
        return false;
    }

    @Override
    public boolean isSaveAsAllowed() {
        return false;
    }

    @Override
    public void createPartControl(Composite parent) {
        Composite base = new Composite(parent, SWT.NONE);
        base.setLayout(new FillLayout());
        TreeViewer treeViewer = new TreeViewer(base);
        treeViewer.setLabelProvider(new SwcLabelProvider());
        treeViewer.setContentProvider(new SwcContentProvider());
        IEditorInput input = getEditorInput();
        SwcInfo info = new SwcInfo();
        if (input instanceof IFileEditorInput) {
            IFileEditorInput fileInput = (IFileEditorInput) input;
            info.readFile(fileInput.getFile());
        }
        treeViewer.setInput(info.getModel());
        treeViewer.expandToLevel(3);
    }

    @Override
    public void setFocus() {
    }
}

class SwcLabelProvider extends LabelProvider {
    IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
    ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
    AxdtImageHelper imageHelper = AxdtImageHelper.getInstance();

    @Override
    public String getText(Object element) {
        return element.toString();
    }

    @Override
    public Image getImage(Object element) {
        if (element instanceof SwcPackage) {
            return imageHelper.getImage(AxdtImages.PACKAGE);
        } else if (element instanceof SwcContainer) {
            if (((SwcContainer) element).getParent() instanceof SwcModel && "catalog".equals(element.toString()))
                return imageHelper.getImage(AxdtImages.SWC_FILE);
            return sharedImages.getImage(ISharedImages.IMG_OBJ_FOLDER);
        } else if (element instanceof SwcEntry) {
            return editorRegistry.getImageDescriptor(element.toString()).createImage();
        }
        return super.getImage(element);
    }
}

class SwcContentProvider implements ITreeContentProvider {

    public void dispose() {
    }

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

    public Object[] getChildren(Object element) {
        ArrayList<Object> list = new ArrayList<Object>();
        if (element instanceof SwcContainer) {
            SwcContainer o = (SwcContainer) element;
            list.addAll(o.getContainers());
            list.addAll(o.getEntries());
        }
        return list.toArray();
    }

    public Object getParent(Object element) {
        if (element instanceof SwcModelObject) {
            SwcModelObject o = (SwcModelObject) element;
            return o.getParent();
        }
        return null;
    }

    public boolean hasChildren(Object element) {
        if (element instanceof SwcContainer) {
            SwcContainer o = (SwcContainer) element;
            return o.hasContainers() || o.hasEntries();
        }
        return false;
    }

    public Object[] getElements(Object inputElement) {
        return getChildren(inputElement);
    }
}