filterdialog.java
来自「Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI」· Java 代码 · 共 153 行
JAVA
153 行
/*--------------------------------------------------------------------------*
| Copyright (C) 2006 Christopher Kohlhaas |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by the |
| Free Software Foundation. A copy of the license has been included with |
| these distribution in the COPYING file, if not go to www.fsf.org |
| |
| As a special exception, you are granted the permissions to link this |
| program with every library, which license fulfills the Open Source |
| Definition as published by the Open Source Initiative (OSI). |
*--------------------------------------------------------------------------*/
package org.rapla.gui.internal.edit;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.container.ContainerUtil;
import org.rapla.framework.RaplaContext;
import org.rapla.framework.RaplaException;
import org.rapla.gui.RaplaGUIComponent;
import org.rapla.gui.internal.common.CalendarSelectionModel;
import org.rapla.gui.toolkit.DialogUI;
public class FilterDialog extends RaplaGUIComponent
implements
Disposable
{
boolean isResourceOnly;
public FilterDialog(RaplaContext sm, boolean isResourceOnly) throws RaplaException {
super(sm);
this.isResourceOnly = isResourceOnly;
}
protected DialogUI dlg;
ArrayList listenerList = new ArrayList();
CalendarSelectionModel filterObj;
ClassifiableFilterEdit ui;
Listener listener = new Listener();
public void start(CalendarSelectionModel editObj,String title,Component owner, boolean modal)
throws
RaplaException
{
filterObj = (CalendarSelectionModel) editObj;
String buttons[];
if (dlg != null && dlg.isVisible()) {
dlg.close();
}
ContainerUtil.dispose(ui);
ui = new ClassifiableFilterEdit( getContext(), isResourceOnly);
JPanel mainPanel = new JPanel();
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
ui.setFilter(filterObj);
mainPanel.setLayout(new BorderLayout());
mainPanel.add(ui.getComponent(), BorderLayout.CENTER);
buttons = new String[] {
getString("ok")
,getString("apply")
,getString("cancel")
};
dlg = DialogUI.create(getContext(),owner,modal,mainPanel,buttons);
dlg.getButton(0).setAction(listener);
dlg.getButton(1).setAction(listener);
dlg.getButton(2).setAction(listener);
dlg.getButton(2).setIcon(getIcon("icon.abort"));
dlg.setTitle(getI18n().format("edit.format",title));
dlg.start();
dlg.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent evt) {
dispose();
}
});
}
public void addChangeListener(ChangeListener listener) {
listenerList.add(listener);
}
public void removeChangeListener(ChangeListener listener) {
listenerList.remove(listener);
}
public ChangeListener[] getChangeListeners() {
return (ChangeListener[])listenerList.toArray(new ChangeListener[]{});
}
protected void fireFilterChanged() {
if (listenerList.size() == 0)
return;
ChangeEvent evt = new ChangeEvent(this);
ChangeListener[] listeners = getChangeListeners();
for (int i = 0;i<listeners.length; i++) {
listeners[i].stateChanged(evt);
}
}
public void dispose() {
if (dlg != null)
dlg.close();
ContainerUtil.dispose(ui);
getLogger().debug("FilterDialog disposed");
}
class Listener extends AbstractAction {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent evt) {
try {
// cancel pressed
if (evt.getSource() == dlg.getButton(2)) {
dlg.close();
return;
}
filterObj.setFilter( ui.getFilters() );
fireFilterChanged();
// ok pressed
if (evt.getSource() == dlg.getButton(0)) {
dlg.close();
}
} catch (Exception ex) {
showException(ex,dlg);
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?