package com.jbidwatcher.ui.config; /* * Copyright (c) 2000-2007, CyberFOX Software, Inc. All Rights Reserved. * * Developed by mrs (Morgan Schweers) */ import com.jbidwatcher.ui.util.JBEditorPane; import com.jbidwatcher.ui.util.JPasteListener; import com.jbidwatcher.ui.util.OptionUI; import com.jbidwatcher.util.Constants; import com.jbidwatcher.util.config.JConfig; import java.awt.*; import javax.swing.*; public class JConfigSnipeTab extends JConfigTab { private JComboBox gixenMode; private JCheckBox autoSubtractShippingBox; private JTextField snipeTime; private JBEditorPane gixenDisabledWarning; private enum GixenModes { NO("Not at all"), ONLY("Exclusively"), ADDITIONAL("In addition to JBidwatcher"); private final String plainText; GixenModes(String subtitle) { this.plainText = subtitle; } public final String toString() { return plainText; } } public String getTabName() { return "Sniping"; } public void cancel() { } public void apply() { long newSnipeAt = Long.parseLong(snipeTime.getText()) * 1000; // Set the default snipe for everything to be whatever was typed in. JConfig.setConfiguration("snipemilliseconds", Long.toString(newSnipeAt)); JConfig.setConfiguration("snipe.subtract_shipping", autoSubtractShippingBox.isSelected() ? "true" : "false"); JConfig.setConfiguration("snipe.gixen", ((Enum) gixenMode.getSelectedItem()).name()); } public void updateValues() { String snipeAtCfg = JConfig.queryConfiguration("snipemilliseconds", "30000"); String autoSubtractShipping = JConfig.queryConfiguration("snipe.subtract_shipping", "false"); long snipeAt = Long.parseLong(snipeAtCfg); snipeTime.setText(Long.toString(snipeAt / 1000)); autoSubtractShippingBox.setSelected(autoSubtractShipping.equals("true")); gixenMode.setSelectedItem(GixenModes.valueOf(JConfig.queryConfiguration("snipe.gixen", "NO"))); } private JPanel buildSnipeSettings(JPasteListener pasteListener) { JPanel tp = new JPanel(); JLabel jl = new JLabel("How close to snipe (in seconds):"); tp.setBorder(BorderFactory.createTitledBorder("Snipe Timing")); tp.setLayout(new BorderLayout()); snipeTime = new JTextField(); snipeTime.addMouseListener(pasteListener); snipeTime.setToolTipText("Number of seconds prior to auction end to fire a snipe."); snipeTime.setEditable(true); snipeTime.getAccessibleContext().setAccessibleName("Default number of seconds prior to auction end to fire a snipe."); tp.add(jl, BorderLayout.NORTH); tp.add(snipeTime, BorderLayout.SOUTH); return(tp); } private JPanel buildExtraSettings() { JPanel tp = new JPanel(); tp.setBorder(BorderFactory.createTitledBorder("Snipe Settings")); tp.setLayout(new BoxLayout(tp, BoxLayout.Y_AXIS)); autoSubtractShippingBox = new JCheckBox("Subtract shipping/insurance from bid amounts by default"); autoSubtractShippingBox.setToolTipText("Determines the default behaviour of deducting shipping/insurance from bid amounts. This behaviour can be overridden on a per-bid basis."); Box shippingBox = Box.createHorizontalBox(); shippingBox.add(autoSubtractShippingBox); shippingBox.add(Box.createHorizontalGlue()); tp.add(shippingBox); return tp; } private JPanel buildGixenSettings() { JPanel tp = new JPanel(); tp.setBorder(BorderFactory.createTitledBorder("Gixen Settings (optional)")); tp.setLayout(new BoxLayout(tp, BoxLayout.Y_AXIS)); Box label = Box.createHorizontalBox(); label.add(new JLabel("Submit snipes to the Gixen web service")); label.add(Box.createHorizontalGlue()); tp.add(label); gixenMode = new JComboBox<GixenModes>(GixenModes.values()); Box gixenBox = Box.createHorizontalBox(); gixenBox.add(gixenMode); gixenBox.add(Box.createHorizontalGlue()); tp.add(gixenBox); return tp; } private static final String HTML_PREFIX = "<html><body><div style=\"font-size: 0.96em;\"><i>"; private static final String HTML_SUFFIX = "</div></body></html>"; private static final String GIXEN_DISABLED = "Gixen support is disabled until an eBay username and password are set."; private static final String GIXEN_AVAILABLE = "If you change to a new Gixen mode, JBidwatcher will submit your eBay username " + "and password to Gixen to verify that you have a Gixen Mirror account."; private final String DISABLED_HTML = HTML_PREFIX + GIXEN_DISABLED + HTML_SUFFIX; private final String AVAILABLE_HTML = HTML_PREFIX + GIXEN_AVAILABLE + HTML_SUFFIX; private void checkGixenEligibility() { String user = JConfig.queryConfiguration(Constants.EBAY_SERVER_NAME + ".user"); if(user == null || user.equals("default")) { gixenMode.setEnabled(false); gixenDisabledWarning.setText(DISABLED_HTML); gixenDisabledWarning.setVisible(true); } else { gixenMode.setEnabled(true); gixenDisabledWarning.setText(AVAILABLE_HTML); } this.repaint(); } public JConfigSnipeTab(JPasteListener pasteListener) { super(); this.setLayout(new BorderLayout()); JPanel jp = new JPanel(); jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS)); jp.add(buildSnipeSettings(pasteListener)); jp.add(buildExtraSettings()); Box spareBox = Box.createHorizontalBox(); spareBox.add(new JLabel("")); jp.add(spareBox); jp.add(buildGixenSettings()); this.add(panelPack(jp), BorderLayout.CENTER); gixenDisabledWarning = OptionUI.getHTMLLabel(DISABLED_HTML); checkGixenEligibility(); this.add(gixenDisabledWarning, BorderLayout.SOUTH); JConfig.registerListener(new com.cyberfox.util.config.JConfig.ConfigListener() { public void updateConfiguration() { checkGixenEligibility(); } }); updateValues(); } }