Skip to content

Commit

Permalink
FORGE-2196: Projects are now imported correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Jun 20, 2015
1 parent d023f33 commit 169f836
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.jboss.forge.furnace.services.Imported;
import org.jboss.forge.netbeans.runtime.FurnaceService;
import org.jboss.forge.netbeans.ui.NbUIProvider;
import org.jboss.forge.netbeans.ui.listener.ProjectImporterCommandExecutionListener;
import org.netbeans.spi.project.ui.support.ProjectChooser;
import org.openide.filesystems.FileUtil;
import org.openide.loaders.DataObject;
Expand Down Expand Up @@ -60,6 +61,7 @@ public UIProvider getProvider() {
}

private void initialize() {
addCommandExecutionListener(ProjectImporterCommandExecutionListener.INSTANCE);
Imported<UIContextListener> services = FurnaceService.INSTANCE
.lookupImported(UIContextListener.class);
if (services != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
*/
package org.jboss.forge.netbeans.ui.listener;

import java.io.File;
import java.io.IOException;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.ProjectListener;
Expand All @@ -19,11 +17,6 @@
import org.jboss.forge.furnace.spi.ContainerLifecycleListener;
import org.jboss.forge.furnace.spi.ListenerRegistration;
import org.jboss.forge.netbeans.runtime.FurnaceService;
import org.netbeans.api.project.ProjectManager;
import org.netbeans.api.project.ui.OpenProjects;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.Exceptions;
import org.openide.util.RequestProcessor;
import org.openide.util.lookup.ServiceProvider;

Expand All @@ -43,14 +36,7 @@ public class NbProjectListener implements ProjectListener, ContainerLifecycleLis

@Override
public void projectCreated(Project project) {
File root = (File) project.getRoot().getUnderlyingResourceObject();
FileObject dir = FileUtil.toFileObject(root);
try {
org.netbeans.api.project.Project p = ProjectManager.getDefault().findProject(dir);
OpenProjects.getDefault().open(new org.netbeans.api.project.Project[]{p}, true, true);
} catch (IOException | IllegalArgumentException ex) {
Exceptions.printStackTrace(ex);
}
ProjectImporter.INSTANCE.addProject(project);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
* Copyright (c) 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* JBoss by Red Hat - initial API and implementation and/or initial documentation
*/
package org.jboss.forge.netbeans.ui.listener;

import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Queue;
import org.jboss.forge.addon.projects.Project;
import org.netbeans.api.project.ProjectManager;
import org.netbeans.api.project.ui.OpenProjects;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.Exceptions;

/**
* Queues projects and allows to import at a later stage
*
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*/
public enum ProjectImporter {

INSTANCE;

private final Queue<Project> projects = new LinkedList<>();

public void addProject(Project project) {
projects.add(project);
}

public void importProjects() {
while (projects.size() > 0) {
doImport(projects.poll());
}
}

private void doImport(Project project) {
File root = (File) project.getRoot().getUnderlyingResourceObject();
FileObject dir = FileUtil.toFileObject(root);
try {
org.netbeans.api.project.Project p = ProjectManager.getDefault().findProject(dir);
OpenProjects.getDefault().open(new org.netbeans.api.project.Project[]{p}, true, true);
} catch (IOException | IllegalArgumentException ex) {
Exceptions.printStackTrace(ex);
}
}

public void clear() {
projects.clear();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright (c) 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* JBoss by Red Hat - initial API and implementation and/or initial documentation
*/
package org.jboss.forge.netbeans.ui.listener;

import org.jboss.forge.addon.ui.command.CommandExecutionListener;
import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
import org.jboss.forge.addon.ui.result.Result;

/**
*
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*/
public enum ProjectImporterCommandExecutionListener implements CommandExecutionListener {
INSTANCE;

@Override
public void preCommandExecuted(UICommand command, UIExecutionContext context) {
}

@Override
public void postCommandExecuted(UICommand command, UIExecutionContext context, Result result) {
ProjectImporter.INSTANCE.importProjects();
}

@Override
public void postCommandFailure(UICommand command, UIExecutionContext context, Throwable failure) {
ProjectImporter.INSTANCE.clear();
}


}

0 comments on commit 169f836

Please sign in to comment.