// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.turnrestrictions.preferences;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
import org.openstreetmap.josm.gui.widgets.HtmlPanel;
import org.openstreetmap.josm.tools.GBC;
import org.openstreetmap.josm.tools.ImageProvider;
import org.openstreetmap.josm.tools.OpenBrowser;
/**
* This is the preference editor for the turn restrictions plugin.
*
*/
public class PreferenceEditor extends DefaultTabPreferenceSetting {
private PreferencesPanel pnlIconPreferences;
private JPanel mainPanel;
public PreferenceEditor() {
super("turnrestrictions", tr("Turn Restrictions"), tr("An OSM plugin for editing turn restrictions."));
build();
}
/**
* builds the panel with the sponsoring information
*/
protected JPanel buildCreditPanel() {
JPanel pnl = new JPanel(new GridBagLayout());
pnl.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
GridBagConstraints gc = new GridBagConstraints();
gc.anchor = GridBagConstraints.NORTHWEST;
gc.fill = GridBagConstraints.HORIZONTAL;
gc.insets = new Insets(0, 0, 0, 5);
gc.weightx = 0.0;
JLabel lbl = new JLabel();
pnl.add(lbl, gc);
lbl.setIcon(ImageProvider.get("skobbler-logo"));
gc.gridx = 1;
gc.weightx = 1.0;
HtmlPanel msg = new HtmlPanel();
msg.setText("<html><body>"
+ tr("Development of the turn restriction plugin was sponsored "
+ "by <a href=\"http://www.skobbler.de\">skobbler GmbH</a>.")
+"</body></html>");
pnl.add(msg, gc);
// filler - grab remaining space
gc.gridy = 1;
gc.gridx = 0;
gc.gridwidth = 2;
gc.weightx = 1.0;
gc.weighty = 1.0;
pnl.add(new JPanel(), gc);
SkobblerUrlLauncher urlLauncher = new SkobblerUrlLauncher();
msg.getEditorPane().addHyperlinkListener(urlLauncher);
lbl.addMouseListener(urlLauncher);
return pnl;
}
protected JPanel buildIconPreferencePanel() {
JPanel pnl = new JPanel(new BorderLayout());
pnlIconPreferences = new PreferencesPanel();
pnlIconPreferences.initFromPreferences(Main.pref);
JScrollPane sp = new JScrollPane(pnlIconPreferences);
sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
pnl.add(sp, BorderLayout.CENTER);
return pnl;
}
protected void build() {
mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
JTabbedPane tp = new JTabbedPane();
tp.add(buildIconPreferencePanel());
tp.add(buildCreditPanel());
tp.setTitleAt(0, tr("Preferences"));
tp.setToolTipTextAt(0, tr("Configure the preferences for the turnrestrictions plugin"));
tp.setTitleAt(1, tr("Sponsor"));
mainPanel.add(tp, BorderLayout.CENTER);
}
@Override
public void addGui(PreferenceTabbedPane gui) {
JPanel tab = gui.createPreferenceTab(this);
tab.add(mainPanel, GBC.eol().fill(GBC.BOTH));
}
@Override
public boolean ok() {
pnlIconPreferences.saveToPreferences(Main.pref);
return false;
}
/**
* Launches an external browser with the sponsors home page
*/
static class SkobblerUrlLauncher extends MouseAdapter implements HyperlinkListener {
protected void launchBrowser() {
OpenBrowser.displayUrl("http://www.skobbler.de");
}
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
launchBrowser();
}
}
@Override
public void mouseClicked(MouseEvent e) {
launchBrowser();
}
}
}