Search in sources :

Example 31 with ErlModelException

use of org.erlide.engine.model.ErlModelException in project erlide_eclipse by erlang.

the class ErlProject method getExternalIncludes.

@Override
public Collection<IErlModule> getExternalIncludes() throws ErlModelException {
    final List<IErlModule> result = Lists.newArrayList();
    accept(new IErlElementVisitor() {

        @Override
        public boolean visit(final IErlElement element) throws ErlModelException {
            final boolean isExternalOrProject = element.getKind() == ErlElementKind.EXTERNAL_ROOT || element.getKind() == ErlElementKind.EXTERNAL_APP || element.getKind() == ErlElementKind.EXTERNAL_FOLDER || element.getKind() == ErlElementKind.PROJECT;
            if (element instanceof IErlModule) {
                final IErlModule module = (IErlModule) element;
                if (module.getSourceKind() == SourceKind.HRL && (module.getAncestorOfKind(ErlElementKind.PROJECT) == ErlProject.this || element.getKind() == ErlElementKind.EXTERNAL_APP || element.getKind() == ErlElementKind.EXTERNAL_FOLDER)) {
                    result.add(module);
                }
                return false;
            } else if (isExternalOrProject && element instanceof IOpenable) {
                final IOpenable openable = (IOpenable) element;
                openable.open(null);
            }
            return isExternalOrProject;
        }
    }, EnumSet.noneOf(AcceptFlags.class), ErlElementKind.MODULE);
    return result;
}
Also used : IErlElement(org.erlide.engine.model.IErlElement) IOpenable(org.erlide.engine.model.root.IOpenable) ErlModelException(org.erlide.engine.model.ErlModelException) IErlModule(org.erlide.engine.model.root.IErlModule) IErlElementVisitor(org.erlide.engine.model.IErlElementVisitor)

Example 32 with ErlModelException

use of org.erlide.engine.model.ErlModelException in project erlide_eclipse by erlang.

the class ErlModel method findElement.

@Override
public IErlElement findElement(final IResource rsrc, final boolean openElements) {
    if (rsrc == null) {
        return null;
    }
    final IPath path = rsrc.getFullPath();
    IParent p = this;
    for (final String segment : path.segments()) {
        IErlElement c = p.getChildWithResource(rsrc);
        if (c != null) {
            return c;
        }
        c = p.getChildNamed(segment);
        if (c == null) {
            return null;
        }
        if (openElements && c instanceof IOpenable) {
            final IOpenable o = (IOpenable) c;
            try {
                o.open(null);
            } catch (final ErlModelException e) {
                return null;
            }
        }
        final IResource resource = c.getResource();
        if (resource != null && resource.equals(rsrc)) {
            return c;
        }
        p = (IParent) c;
    }
    return null;
}
Also used : IErlElement(org.erlide.engine.model.IErlElement) IOpenable(org.erlide.engine.model.root.IOpenable) IPath(org.eclipse.core.runtime.IPath) IParent(org.erlide.engine.model.IParent) ErlModelException(org.erlide.engine.model.ErlModelException) OtpErlangString(com.ericsson.otp.erlang.OtpErlangString) IResource(org.eclipse.core.resources.IResource)

Example 33 with ErlModelException

use of org.erlide.engine.model.ErlModelException in project erlide_eclipse by erlang.

the class ErlModel method newProject.

@Override
public final IErlProject newProject(final String name) throws ErlModelException {
    final IWorkspace ws = ResourcesPlugin.getWorkspace();
    final IProject project = ws.getRoot().getProject(name);
    try {
        if (!project.exists()) {
            project.create(null);
            project.open(null);
            final IProjectDescription description = project.getDescription();
            description.setNatureIds(new String[] { ModelPlugin.NATURE_ID });
            description.setName(name);
            project.setDescription(description, null);
        }
        if (!project.isOpen()) {
            project.open(null);
        }
        return findProject(project);
    } catch (final CoreException e) {
        e.printStackTrace();
        throw new ErlModelException(e, new ErlModelStatus(e));
    }
}
Also used : CoreException(org.eclipse.core.runtime.CoreException) ErlModelException(org.erlide.engine.model.ErlModelException) ErlModelStatus(org.erlide.engine.model.ErlModelStatus) IWorkspace(org.eclipse.core.resources.IWorkspace) IProjectDescription(org.eclipse.core.resources.IProjectDescription) IProject(org.eclipse.core.resources.IProject)

Example 34 with ErlModelException

use of org.erlide.engine.model.ErlModelException in project erlide_eclipse by erlang.

the class ErlModel method remove.

void remove(final IResource rsrc) {
    final IErlElement element = findElement(rsrc);
    if (element != null) {
        final IParent p = element.getParent();
        p.removeChild(element);
        if (element instanceof IOpenable) {
            final IOpenable openable = (IOpenable) element;
            try {
                openable.close();
            } catch (final ErlModelException e) {
                ErlLogger.error(e);
            }
        }
    }
// TODO should we make Erlidemodelevents and fire them?
}
Also used : IErlElement(org.erlide.engine.model.IErlElement) IOpenable(org.erlide.engine.model.root.IOpenable) IParent(org.erlide.engine.model.IParent) ErlModelException(org.erlide.engine.model.ErlModelException)

Example 35 with ErlModelException

use of org.erlide.engine.model.ErlModelException in project erlide_eclipse by erlang.

the class ErlElement method toStringChildren.

/**
 * Debugging purposes
 */
protected void toStringChildren(final int tab, final StringBuilder buffer, final Object info) {
    if (!(info instanceof ErlElement)) {
        return;
    }
    if (getChildCount() > 0) {
        buffer.append("{");
        int i = 0;
        try {
            for (final IErlElement element : getChildren()) {
                ((ErlElement) element).toString(tab + 1, buffer);
                // $NON-NLS-1$
                buffer.append(",");
                if (++i > 3) {
                    buffer.append("...");
                    break;
                }
            }
        } catch (final ErlModelException e) {
        }
        buffer.deleteCharAt(buffer.length() - 1);
        buffer.append("}");
    }
}
Also used : IErlElement(org.erlide.engine.model.IErlElement) IErlElement(org.erlide.engine.model.IErlElement) ErlModelException(org.erlide.engine.model.ErlModelException)

Aggregations

ErlModelException (org.erlide.engine.model.ErlModelException)45 IErlElement (org.erlide.engine.model.IErlElement)21 IErlModule (org.erlide.engine.model.root.IErlModule)21 IErlModel (org.erlide.engine.model.root.IErlModel)9 IErlProject (org.erlide.engine.model.root.IErlProject)9 ArrayList (java.util.ArrayList)8 IOpenable (org.erlide.engine.model.root.IOpenable)7 CoreException (org.eclipse.core.runtime.CoreException)6 IProject (org.eclipse.core.resources.IProject)5 IResource (org.eclipse.core.resources.IResource)5 OtpErlangString (com.ericsson.otp.erlang.OtpErlangString)4 IFile (org.eclipse.core.resources.IFile)4 IParent (org.erlide.engine.model.IParent)4 IErlFunction (org.erlide.engine.model.erlang.IErlFunction)4 IErlFunctionClause (org.erlide.engine.model.erlang.IErlFunctionClause)4 Composite (org.eclipse.swt.widgets.Composite)3 ErlangEditor (org.erlide.ui.editors.erl.ErlangEditor)3 OtpErlangTuple (com.ericsson.otp.erlang.OtpErlangTuple)2 HashSet (java.util.HashSet)2 LinkedList (java.util.LinkedList)2