/**
*
*/
package org.korsakow.ide.ui.controller.action.interf;
import java.awt.Dimension;
import org.dsrg.soenea.domain.MapperException;
import org.korsakow.domain.interf.IInterface;
import org.korsakow.domain.interf.IProject;
import org.korsakow.domain.interf.IResource;
import org.korsakow.domain.mapper.input.ProjectInputMapper;
import org.korsakow.ide.Application;
import org.korsakow.ide.controller.AbstractResourceEditAction;
import org.korsakow.ide.lang.LanguageBundle;
import org.korsakow.ide.resources.ResourceType;
import org.korsakow.ide.ui.ResourceEditor;
import org.korsakow.ide.ui.controller.InterfaceResourceEditorController;
import org.korsakow.ide.ui.controller.helper.InterfaceHelper;
import org.korsakow.ide.ui.interfacebuilder.InterfaceBuilderMainPanel;
public class EditInterfaceAction extends AbstractResourceEditAction
{
@Override
protected void initViewHelper(ResourceEditor editor, IResource resource) throws Exception
{
edit(editor, (IInterface)resource);
}
@Override
protected void adjustEditorAfterPack(ResourceEditor editor, IResource resource)
{
Dimension size = editor.getSize();
size.width = Math.max(640, size.width);
size.height = Math.max(480, size.height);
editor.setSize(size);
editor.setResizable(true);
}
private static void edit(ResourceEditor resourceEditor, IInterface interf) throws MapperException
{
Long id = interf!=null?interf.getId():null;
InterfaceBuilderMainPanel resourceView = new InterfaceBuilderMainPanel();
resourceEditor.setResourceView(resourceView, ResourceType.INTERFACE);
InterfaceResourceEditorController controller = new InterfaceResourceEditorController(resourceEditor, id); // it might be a bad sign that its unnecessary to keep this reference
resourceEditor.addSaveActionListener( id!=null?SaveInterfaceAction.update(resourceView, id):SaveInterfaceAction.insert(resourceView));
if ( id != null ) {
resourceEditor.setSaveCopyVisible( true );
resourceEditor.addSaveCopyActionListener(SaveInterfaceAction.copy(resourceView, id));
}
if (interf != null) {
InterfaceHelper.initView(resourceView, interf);
controller.initialState();
}
}
@Override
public ResourceEditor run(IResource resource) throws Exception {
IProject project = ProjectInputMapper.find();
if (resource != null &&
project.getDefaultInterface() != null &&
project.getDefaultInterface().getId().equals(resource.getId()))
Application.getInstance().showOneTimeAlertDialog("SaveInterface", Application.getInstance().getProjectExplorer(), LanguageBundle.getString("interfacebuilder.editalert.title"), LanguageBundle.getString("interfacebuilder.editalert.message"));
return super.run(resource);
}
}