package org.korsakow.ide.ui.controller.action; import java.awt.event.ActionEvent; import javax.swing.JFrame; import org.dsrg.soenea.domain.MapperException; import org.korsakow.ide.Application; import org.korsakow.ide.lang.LanguageBundle; import org.korsakow.ide.ui.components.snupool.SnuPool; import org.korsakow.ide.ui.components.snupool.SnuPoolModel; import org.korsakow.ide.ui.components.snupool.SnuPoolUpdateListener; public class ShowSnuPoolWindowAction extends AbstractShowPoolWindowAction { public void actionPerformed(ActionEvent event) { Application app = Application.getInstance(); if (app.getSnuPoolDialog() != null) { app.getSnuPoolDialog().toFront(); return; } SnuPoolModel model; try { model = SnuPoolUpdateListener.createModel(); } catch (MapperException e) { Application.getInstance().showUnhandledErrorDialog(e); model = new SnuPoolModel(); } SnuPool pool = new SnuPool(); pool.setModel(model); org.korsakow.ide.ui.components.snupool.ContentUpdater updater = new org.korsakow.ide.ui.components.snupool.ContentUpdater(pool); pool.addActionListener(updater); pool.addListSelectionListener(updater); SnuPoolUpdateListener updateListener = new SnuPoolUpdateListener(pool); Application.getInstance().addApplicationListener(updateListener); pool.putClientProperty("applicationListener", updateListener); // tie lifetime to pool since applisteners are weak-refs JFrame dialog = createPoolDialog(LanguageBundle.getString("snupool.window.title"), pool); app.setSnuPoolDialog(dialog, pool); dialog.setLocation(app.getProjectExplorer().getX()+200, app.getProjectExplorer().getY()-dialog.getInsets().top); dialog.setVisible(true); } }