source: trunk/org.modelica.mdt/src/org/modelica/mdt/ui/ModelicaElementContentProvider.java @ 96

Last change on this file since 96 was 96, checked in by boris, 19 years ago
  • system library element added to projects view tree
File size: 4.2 KB
Line 
1/*
2 * This file is part of Modelica Development Tooling.
3 *
4 * Copyright (c) 2005, Linköpings universitet, Department of
5 * Computer and Information Science, PELAB
6 *
7 * All rights reserved.
8 *
9 * (The new BSD license, see also
10 * http://www.opensource.org/licenses/bsd-license.php)
11 *
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions are
15 * met:
16 *
17 * * Redistributions of source code must retain the above copyright
18 *   notice, this list of conditions and the following disclaimer.
19 *
20 * * Redistributions in binary form must reproduce the above copyright
21 *   notice, this list of conditions and the following disclaimer in
22 *   the documentation and/or other materials provided with the
23 *   distribution.
24 *
25 * * Neither the name of Linköpings universitet nor the names of its
26 *   contributors may be used to endorse or promote products derived from
27 *   this software without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 */
41
42package org.modelica.mdt.ui;
43
44import java.util.List;
45
46import org.eclipse.core.resources.IContainer;
47import org.eclipse.core.resources.IFolder;
48import org.eclipse.core.resources.IProject;
49import org.eclipse.core.runtime.CoreException;
50import org.eclipse.jface.viewers.ITreeContentProvider;
51import org.eclipse.jface.viewers.Viewer;
52import org.modelica.mdt.MdtPlugin;
53import org.modelica.mdt.core.IModelicaProject;
54import org.modelica.mdt.core.IModelicaRoot;
55import org.modelica.mdt.core.IParent;
56import org.modelica.mdt.internal.core.SystemLibrary;
57
58/**
59 * @author Elmir Jagudin
60 *
61 */
62public class ModelicaElementContentProvider implements ITreeContentProvider
63{
64
65    public Object[] getElements(Object inputElement)
66    {
67        try
68        {
69            if (inputElement instanceof IModelicaRoot)
70            {
71                return ((IModelicaRoot)inputElement).getProjects();
72            }
73           
74        }
75        catch (CoreException e)
76        {
77            MdtPlugin.log(e);
78        }
79        return new Object[] {};
80    }
81   
82    public void dispose()
83    {
84    }
85
86    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
87    {
88    }
89
90    public Object[] getChildren(Object parent)
91    {
92        if (parent instanceof IContainer)
93        {
94            try
95            {
96                return ((IContainer)parent).members();
97            }
98            catch (CoreException e)
99            {
100                MdtPlugin.log(e);
101            }
102        }
103        else if (parent instanceof IModelicaProject)
104        {
105            List<?> list = ((IModelicaProject)parent).getRootFolder().getChildren();
106           
107            Object[] children = new Object[list.size()+1];
108            /*
109             * add as last element system library
110             */
111            list.toArray(children);
112            children[children.length-1] = new SystemLibrary();
113            return children; 
114        }
115        else if (parent instanceof IParent)
116        {
117            return ((IParent)parent).getChildren().toArray();
118        }
119        return null;
120    }
121
122    public Object getParent(Object element)
123    {
124        return null;
125    }
126
127    public boolean hasChildren(Object element)
128    {
129        if (element instanceof IProject)
130        {
131            return ((IProject)element).isOpen();
132        }
133        else if (element instanceof IFolder)
134        {
135            return true;
136        }
137        else if (element instanceof IModelicaProject)
138        {
139            return ((IModelicaProject)element).getProject().isOpen();
140        }
141        else if (element instanceof IParent)
142        {
143            try 
144            {
145                return ((IParent)element).hasChildren();
146            } 
147            catch (CoreException e) 
148            {
149                // TODO Auto-generated catch block
150                e.printStackTrace();
151            }
152        }
153        return false;
154    }
155}
Note: See TracBrowser for help on using the repository browser.