Java example source code file (FilterTopComponent.java)
This example Java source code file (FilterTopComponent.java) is included in the alvinalexander.com
"Java Source Code
Warehouse" project. The intent of this project is to help you "Learn
Java by Example" TM.
The FilterTopComponent.java Java example source code
/*
* Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package com.sun.hotspot.igv.filterwindow;
import com.sun.hotspot.igv.filterwindow.actions.MoveFilterDownAction;
import com.sun.hotspot.igv.filterwindow.actions.MoveFilterUpAction;
import com.sun.hotspot.igv.filterwindow.actions.NewFilterAction;
import com.sun.hotspot.igv.filterwindow.actions.RemoveFilterAction;
import com.sun.hotspot.igv.filterwindow.actions.RemoveFilterSettingsAction;
import com.sun.hotspot.igv.filterwindow.actions.SaveFilterSettingsAction;
import com.sun.hotspot.igv.filter.CustomFilter;
import com.sun.hotspot.igv.filter.Filter;
import com.sun.hotspot.igv.filter.FilterChain;
import com.sun.hotspot.igv.filter.FilterSetting;
import com.sun.hotspot.igv.data.ChangedEvent;
import com.sun.hotspot.igv.data.ChangedListener;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Serializable;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.JComboBox;
import javax.swing.UIManager;
import javax.swing.border.Border;
import org.openide.DialogDisplayer;
import org.openide.ErrorManager;
import org.openide.NotifyDescriptor;
import org.openide.awt.ToolbarPool;
import org.openide.explorer.ExplorerManager;
import org.openide.explorer.ExplorerUtils;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;
import org.openide.util.LookupEvent;
import org.openide.util.LookupListener;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
import org.openide.awt.Toolbar;
import org.openide.filesystems.FileLock;
import org.openide.util.actions.SystemAction;
import org.openide.windows.TopComponent;
import org.openide.windows.WindowManager;
import org.openide.filesystems.Repository;
import org.openide.filesystems.FileSystem;
import org.openide.filesystems.FileObject;
/**
*
* @author Thomas Wuerthinger
*/
public final class FilterTopComponent extends TopComponent implements LookupListener, ExplorerManager.Provider {
private static FilterTopComponent instance;
public static final String FOLDER_ID = "Filters";
public static final String AFTER_ID = "after";
public static final String ENABLED_ID = "enabled";
public static final String PREFERRED_ID = "FilterTopComponent";
private CheckListView view;
private ExplorerManager manager;
private FilterChain filterChain;
private FilterChain sequence;
private Lookup.Result result;
private JComboBox comboBox;
private List<FilterSetting> filterSettings;
private FilterSetting customFilterSetting = new FilterSetting("-- Custom --");
private ChangedEvent<FilterTopComponent> filterSettingsChangedEvent;
private ActionListener comboBoxActionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
comboBoxSelectionChanged();
}
};
public ChangedEvent<FilterTopComponent> getFilterSettingsChangedEvent() {
return filterSettingsChangedEvent;
}
public FilterChain getSequence() {
return sequence;
}
public void updateSelection() {
Node[] nodes = this.getExplorerManager().getSelectedNodes();
int[] arr = new int[nodes.length];
for (int i = 0; i < nodes.length; i++) {
int index = sequence.getFilters().indexOf(((FilterNode) nodes[i]).getFilter());
arr[i] = index;
}
view.showSelection(arr);
}
private void comboBoxSelectionChanged() {
Object o = comboBox.getSelectedItem();
if (o == null) {
return;
}
assert o instanceof FilterSetting;
FilterSetting s = (FilterSetting) o;
if (s != customFilterSetting) {
FilterChain chain = getFilterChain();
chain.beginAtomic();
List<Filter> toRemove = new ArrayList();
for (Filter f : chain.getFilters()) {
if (!s.containsFilter(f)) {
toRemove.add(f);
}
}
for (Filter f : toRemove) {
chain.removeFilter(f);
}
for (Filter f : s.getFilters()) {
if (!chain.containsFilter(f)) {
chain.addFilter(f);
}
}
chain.endAtomic();
filterSettingsChangedEvent.fire();
} else {
this.updateComboBoxSelection();
}
SystemAction.get(RemoveFilterSettingsAction.class).setEnabled(comboBox.getSelectedItem() != this.customFilterSetting);
SystemAction.get(SaveFilterSettingsAction.class).setEnabled(comboBox.getSelectedItem() == this.customFilterSetting);
}
private void updateComboBox() {
comboBox.removeAllItems();
comboBox.addItem(customFilterSetting);
for (FilterSetting s : filterSettings) {
comboBox.addItem(s);
}
this.updateComboBoxSelection();
}
public void addFilterSetting() {
NotifyDescriptor.InputLine l = new NotifyDescriptor.InputLine("Enter a name:", "Filter");
if (DialogDisplayer.getDefault().notify(l) == NotifyDescriptor.OK_OPTION) {
String name = l.getInputText();
FilterSetting toRemove = null;
for (FilterSetting s : filterSettings) {
if (s.getName().equals(name)) {
NotifyDescriptor.Confirmation conf = new NotifyDescriptor.Confirmation("Filter \"" + name + "\" already exists, to you want to overwrite?", "Filter");
if (DialogDisplayer.getDefault().notify(conf) == NotifyDescriptor.YES_OPTION) {
toRemove = s;
break;
} else {
return;
}
}
}
if (toRemove != null) {
filterSettings.remove(toRemove);
}
FilterSetting setting = createFilterSetting(name);
filterSettings.add(setting);
// Sort alphabetically
Collections.sort(filterSettings, new Comparator<FilterSetting>() {
public int compare(FilterSetting o1, FilterSetting o2) {
return o1.getName().compareTo(o2.getName());
}
});
updateComboBox();
}
}
public boolean canRemoveFilterSetting() {
return comboBox.getSelectedItem() != customFilterSetting;
}
public void removeFilterSetting() {
if (canRemoveFilterSetting()) {
Object o = comboBox.getSelectedItem();
assert o instanceof FilterSetting;
FilterSetting f = (FilterSetting) o;
assert f != customFilterSetting;
assert filterSettings.contains(f);
NotifyDescriptor.Confirmation l = new NotifyDescriptor.Confirmation("Do you really want to remove filter \"" + f + "\"?", "Filter");
if (DialogDisplayer.getDefault().notify(l) == NotifyDescriptor.YES_OPTION) {
filterSettings.remove(f);
updateComboBox();
}
}
}
private FilterSetting createFilterSetting(String name) {
FilterSetting s = new FilterSetting(name);
FilterChain chain = this.getFilterChain();
for (Filter f : chain.getFilters()) {
s.addFilter(f);
}
return s;
}
private void updateComboBoxSelection() {
List<Filter> filters = this.getFilterChain().getFilters();
boolean found = false;
for (FilterSetting s : filterSettings) {
if (s.getFilterCount() == filters.size()) {
boolean ok = true;
for (Filter f : filters) {
if (!s.containsFilter(f)) {
ok = false;
}
}
if (ok) {
if (comboBox.getSelectedItem() != s) {
comboBox.setSelectedItem(s);
}
found = true;
break;
}
}
}
if (!found && comboBox.getSelectedItem() != customFilterSetting) {
comboBox.setSelectedItem(customFilterSetting);
}
}
private class FilterChildren extends Children.Keys implements ChangedListener<CheckNode> {
//private Node[] oldSelection;
//private ArrayList<Node> newSelection;
private HashMap<Object, Node> nodeHash = new HashMap
Other Java examples (source code examples)
Here is a short list of links related to this Java FilterTopComponent.java source code file: