/* * Copyright (C) 2015 by Array Systems Computing Inc. http://www.array.ca * * 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; either version 3 of the License, or (at your option) * any later version. * This program 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 for * more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, see http://www.gnu.org/licenses/ */ package org.esa.snap.worldwind.preferences; import org.netbeans.spi.options.OptionsPanelController; import org.openide.util.HelpCtx; import org.openide.util.Lookup; import javax.swing.*; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; @OptionsPanelController.SubRegistration(location = "GeneralPreferences", displayName = "#LBL_WorldWindOption_DisplayName", keywords = "#LBL_WorldWindOption_Keywords", keywordsCategory = "WorldWind", id = "WorldWindOptionsPanelController", position = 8 ) @org.openide.util.NbBundle.Messages({ "LBL_WorldWindOption_DisplayName=World View", "LBL_WorldWindOption_Keywords=WorldWind,Globe,World,Map" }) public class WorldWindOptionsPanelController extends OptionsPanelController { private WorldWindOptionsPanel panel; private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); private boolean changed; public void update() { getPanel().load(); changed = false; } public void applyChanges() { SwingUtilities.invokeLater(() -> { getPanel().store(); changed = false; }); } public void cancel() { // need not do anything special, if no changes have been persisted yet } public boolean isValid() { return getPanel().valid(); } public boolean isChanged() { return changed; } @Override public HelpCtx getHelpCtx() { return new HelpCtx("WorldWind"); } public JComponent getComponent(Lookup masterLookup) { return getPanel(); } public void addPropertyChangeListener(PropertyChangeListener l) { pcs.addPropertyChangeListener(l); } public void removePropertyChangeListener(PropertyChangeListener l) { pcs.removePropertyChangeListener(l); } private WorldWindOptionsPanel getPanel() { if (panel == null) { panel = new WorldWindOptionsPanel(this); } return panel; } void changed() { if (!changed) { changed = true; pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, false, true); } pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null); } }