package org.korsakow.ide.ui.controller.action; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import org.korsakow.ide.Application; import org.korsakow.ide.lang.LanguageBundle; import org.korsakow.ide.ui.controller.PossiblePoolApplicationListener; import org.korsakow.ide.ui.controller.PossiblePoolMouseListener; import org.korsakow.ide.ui.resourceexplorer.ResourceTreeTable; import org.korsakow.ide.ui.resourceexplorer.ResourceTreeTableHeaderCellRenderer; import org.korsakow.ide.ui.resources.UnusedMediaResourceTreeTableModel; import org.korsakow.ide.util.UIHelper; public class ShowPossiblePoolWindowAction extends AbstractShowPoolWindowAction { public void actionPerformed(ActionEvent e) { Application app = Application.getInstance(); if (app.getPossiblePoolDialog() != null) { app.getPossiblePoolDialog().toFront(); return; } ResourceTreeTable treeTable = new ResourceTreeTable(); treeTable.setAutoCreateColumnsFromModel(false); final UnusedMediaResourceTreeTableModel unusedVideoModel = new UnusedMediaResourceTreeTableModel(treeTable, app.getProjectExplorer().getResourceBrowser().getResourceTreeTable().getTreeTableModel(), false, true); treeTable.getTableHeader().setDefaultRenderer(new ResourceTreeTableHeaderCellRenderer()); treeTable.setTreeTableModel(unusedVideoModel); treeTable.addMouseListener(new PossiblePoolMouseListener()); JCheckBox imageFilter, videoFilter; JPanel content = UIHelper.createVerticalBoxLayoutPanel( UIHelper.createHorizontalBoxLayoutPanel( imageFilter = new JCheckBox("Images"), UIHelper.createHorizontalStrut(10), videoFilter = new JCheckBox("Videos") ), new JScrollPane(treeTable) ); imageFilter.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { unusedVideoModel.setIncludeImages(((JCheckBox)event.getSource()).isSelected()); unusedVideoModel.update(); } }); videoFilter.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { unusedVideoModel.setIncludeVideos(((JCheckBox)event.getSource()).isSelected()); unusedVideoModel.update(); } }); videoFilter.setSelected(true); PossiblePoolApplicationListener updateListener = new PossiblePoolApplicationListener(treeTable); // app.getProjectExplorer().getResourceExplorer().getResourceBrowser().getResourceTreeTable().getModel().addTableModelListener(updateListener); app.getProjectExplorer().getResourceBrowser().getResourceTreeTable().addPropertyChangeListener("model", updateListener); Application.getInstance().addApplicationListener(updateListener); treeTable.putClientProperty("applicationListener", updateListener); // tie lifetime to pool since applisteners are weak-refs JFrame dialog = createPoolDialog(LanguageBundle.getString("possiblepool.window.title"), content); app.setPossiblePoolDialog(dialog, treeTable); dialog.setSize(300, dialog.getHeight()); dialog.setLocation(app.getProjectExplorer().getX()+600, app.getProjectExplorer().getY()-dialog.getInsets().top); dialog.setVisible(true); } }