/**
*
*/
package org.korsakow.ide.ui.controller.action.snu;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JFrame;
import org.dsrg.soenea.domain.MapperException;
import org.korsakow.domain.interf.IResource;
import org.korsakow.domain.interf.ISnu;
import org.korsakow.ide.Application;
import org.korsakow.ide.controller.AbstractResourceEditAction;
import org.korsakow.ide.resources.ResourceType;
import org.korsakow.ide.ui.ResourceEditor;
import org.korsakow.ide.ui.controller.SnuResourceEditorController;
import org.korsakow.ide.ui.controller.action.ShowKeywordPoolWindowAction;
import org.korsakow.ide.ui.resources.SnuResourceView;
import org.korsakow.ide.util.UIUtil;
public class EditSnuAction extends AbstractResourceEditAction
{
@Override
protected void initViewHelper(ResourceEditor editor, IResource resource) throws Exception
{
edit(editor, (ISnu)resource);
}
@Override
protected void adjustEditorAfterPack(ResourceEditor editor, IResource resource)
{
new ShowKeywordPoolWindowAction().actionPerformed(null);
JFrame poolDialog = Application.getInstance().getKeywordPoolDialog();
Dimension screenSize = UIUtil.getAvailableScreenSize();
Point point = new Point();
point.y = editor.getY();
if (editor.getX()+editor.getWidth()+poolDialog.getWidth() > screenSize.width) {
point.x = editor.getX()-poolDialog.getWidth();
} else {
point.x = editor.getX()+editor.getWidth();
}
poolDialog.setLocation(point);
}
private static void edit(ResourceEditor resourceEditor, ISnu snu) throws MapperException
{
Long id = snu!=null?snu.getId():null;
SnuResourceView resourceView = new SnuResourceView();
resourceEditor.setResourceView(resourceView, ResourceType.SNU);
SnuResourceEditorController controller = new SnuResourceEditorController(resourceEditor, id); // it might be a bad sign that its unnecessary to keep this reference
resourceEditor.addSaveActionListener( id!=null? SaveSnuAction.update(resourceView, id):SaveSnuAction.insert(resourceView) );
if (snu != null)
SnuHelper.initView(resourceView, snu);
controller.validate();
}
}