/**
*
*/
package org.korsakow.ide.controller;
import org.apache.log4j.Logger;
import org.korsakow.domain.interf.IProject;
import org.korsakow.domain.interf.IResource;
import org.korsakow.domain.interf.ISettings;
import org.korsakow.domain.mapper.input.ProjectInputMapper;
import org.korsakow.domain.mapper.input.SettingsInputMapper;
import org.korsakow.ide.Application;
import org.korsakow.ide.lang.LanguageBundle;
import org.korsakow.ide.ui.ResourceEditor;
import org.korsakow.ide.ui.controller.ProjectSettingsController;
import org.korsakow.ide.ui.controller.helper.ProjectHelper;
import org.korsakow.ide.ui.settings.ProjectSettingsPanel;
/**
* Should not implement ResourceEditAction
* <strike>This action is broken. Right now we don't use a ResourceEditor for Projects because ResourceEditor extends JFrame
* but we want this window to be modal. If we make ResourceEditor a JDialog it won't show up in the taskbar in windows,
* so pending that being acceptable, we just return null.</strike>
* @author d
*
*/
public class ProjectEditAction implements ResourceEditAction
{
protected void initViewHelper(ProjectSettingsPanel view, IProject project, ISettings settings) throws Exception
{
ProjectHelper.edit(view, project, settings);
}
public ResourceEditor run(IResource resource) throws Exception
{
IProject project = resource.getId()!=null?ProjectInputMapper.map(resource.getId()):null;
return run(project);
}
public ResourceEditor run(IProject project) throws Exception
{
ISettings settings = SettingsInputMapper.find();
ProjectSettingsPanel view = new ProjectSettingsPanel();
ProjectSettingsController controller = new ProjectSettingsController(view);
try {
initViewHelper(view, project, settings);
if (!Application.getInstance().showOKCancelDialog(Application.getInstance().getProjectExplorer(), LanguageBundle.getString("projectexplorer.projectsettings.title"), view))
return null;
ProjectHelper.save(view, project!=null?project.getId():null, settings!=null?settings.getId():null);
} catch (Exception e) {
throw e;
} finally {
try {
view.dispose();
} catch (Exception e) {
Logger.getLogger(ProjectEditAction.class).error("Finally", e);
}
}
return null;
}
}