/*
* File : ChooseServicePanel.java
* Created : 10 nov. 2003
* By : Olivier
*
* Azureus - a Java Bittorrent client
*
* 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 2 of the License.
*
* 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 ( see the LICENSE file ).
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.gudy.azureus2.ui.swt.ipchecker;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.ipchecker.extipchecker.ExternalIPCheckerFactory;
import org.gudy.azureus2.core3.ipchecker.extipchecker.ExternalIPCheckerService;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.mainwindow.Colors;
import org.gudy.azureus2.ui.swt.wizard.AbstractWizardPanel;
import org.gudy.azureus2.ui.swt.wizard.IWizardPanel;
/**
* @author Olivier
*
*/
public class ChooseServicePanel extends AbstractWizardPanel {
private Combo servicesList;
private ExternalIPCheckerService[] services;
Label serviceDescription;
Label serviceUrl;
public ChooseServicePanel(IpCheckerWizard wizard,IWizardPanel previousPanel) {
super(wizard,previousPanel);
}
public void show() {
wizard.setTitle(MessageText.getString("ipCheckerWizard.service"));
wizard.setCurrentInfo(MessageText.getString("ipCheckerWizard.chooseService"));
Composite rootPanel = wizard.getPanel();
GridLayout layout = new GridLayout();
layout.numColumns = 2;
rootPanel.setLayout(layout);
Label label = new Label(rootPanel,SWT.WRAP);
GridData gridData = new GridData();
gridData.widthHint = 380;
gridData.horizontalSpan = 2;
label.setLayoutData(gridData);
label.setText(MessageText.getString("ipCheckerWizard.explanations"));
this.servicesList = new Combo(rootPanel,SWT.READ_ONLY);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 2;
servicesList.setLayoutData(gridData);
this.services = ExternalIPCheckerFactory.create().getServices();
for(int i = 0 ; i < services.length ; i++) {
servicesList.add(services[i].getName());
}
label = new Label(rootPanel,SWT.NULL);
label.setText(MessageText.getString("ipCheckerWizard.service.url"));
Cursor handCursor = new Cursor(rootPanel.getDisplay(), SWT.CURSOR_HAND);
this.serviceUrl = new Label(rootPanel,SWT.NULL);
gridData = new GridData(GridData.FILL_HORIZONTAL);
serviceUrl.setLayoutData(gridData);
serviceUrl.setForeground(Colors.blue);
serviceUrl.setCursor(handCursor);
serviceUrl.addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(MouseEvent arg0) {
Utils.launch((String) ((Label) arg0.widget).getText());
}
public void mouseDown(MouseEvent arg0) {
Utils.launch((String) ((Label) arg0.widget).getText());
}
});
servicesList.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
updateInfos();
}
});
servicesList.select(0);
label = new Label(rootPanel,SWT.NULL);
gridData = new GridData();
gridData.heightHint = 50;
gridData.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
label.setLayoutData(gridData);
label.setText(MessageText.getString("ipCheckerWizard.service.description"));
this.serviceDescription = new Label(rootPanel,SWT.WRAP);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.heightHint = 50;
gridData.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
serviceDescription.setLayoutData(gridData);
updateInfos();
}
private void updateInfos() {
int selection = servicesList.getSelectionIndex();
serviceDescription.setText(services[selection].getDescription());
serviceUrl.setText(services[selection].getURL());
((IpCheckerWizard)wizard).selectedService = services[selection];
((IpCheckerWizard)wizard).setFinishEnabled( services[selection].supportsCheck());
}
public boolean isFinishEnabled() {
return true;
}
public IWizardPanel getFinishPanel() {
return new ProgressPanel((IpCheckerWizard)wizard,this);
}
}