e2ee14856b
git-svn-id: https://osmand.googlecode.com/svn/trunk@719 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
213 lines
7 KiB
Java
213 lines
7 KiB
Java
package net.osmand.swing;
|
|
|
|
import java.awt.Component;
|
|
import java.awt.Dimension;
|
|
import java.awt.FlowLayout;
|
|
import java.awt.GridBagConstraints;
|
|
import java.awt.GridBagLayout;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.UnsupportedEncodingException;
|
|
|
|
import javax.swing.BorderFactory;
|
|
import javax.swing.Box;
|
|
import javax.swing.BoxLayout;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JDialog;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JOptionPane;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JTextField;
|
|
|
|
import net.osmand.Algoritms;
|
|
import net.osmand.LogUtil;
|
|
|
|
import org.apache.commons.logging.Log;
|
|
|
|
|
|
public class NewTileSourceDialog extends JDialog {
|
|
|
|
private static final long serialVersionUID = -4862884032977071296L;
|
|
private static final Log log = LogUtil.getLog(NewTileSourceDialog.class);
|
|
|
|
private JButton okButton;
|
|
private JButton cancelButton;
|
|
|
|
private JTextField templateName;
|
|
private JTextField templateUrl;
|
|
|
|
|
|
public NewTileSourceDialog(Component parent){
|
|
super(JOptionPane.getFrameForComponent(parent), true);
|
|
setTitle(Messages.getString("NewTileSourceDialog.CREATE.NEW.TILE")); //$NON-NLS-1$
|
|
initDialog();
|
|
|
|
}
|
|
|
|
public void showDialog(){
|
|
setSize(800, 200);
|
|
double x = getParent().getBounds().getCenterX();
|
|
double y = getParent().getBounds().getCenterY();
|
|
setLocation((int) x - getWidth() / 2, (int) y - getHeight() / 2);
|
|
setVisible(true);
|
|
}
|
|
|
|
private void initDialog() {
|
|
JPanel pane = new JPanel();
|
|
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
|
|
pane.setBorder(BorderFactory.createEmptyBorder(10, 10, 5, 10));
|
|
add(pane);
|
|
|
|
|
|
createInputSourceSection(pane);
|
|
pane.add(Box.createVerticalGlue());
|
|
|
|
FlowLayout l = new FlowLayout(FlowLayout.RIGHT);
|
|
JPanel buttonsPane = new JPanel(l);
|
|
okButton = new JButton("OK"); //$NON-NLS-1$
|
|
buttonsPane.add(okButton);
|
|
cancelButton = new JButton(Messages.getString("NewTileSourceDialog.CANCEL")); //$NON-NLS-1$
|
|
buttonsPane.add(cancelButton);
|
|
|
|
buttonsPane.setMaximumSize(new Dimension(Short.MAX_VALUE, (int) l.preferredLayoutSize(buttonsPane).getHeight()));
|
|
pane.add(buttonsPane);
|
|
|
|
addListeners();
|
|
}
|
|
|
|
|
|
private void createInputSourceSection(JPanel root) {
|
|
JPanel panel = new JPanel();
|
|
GridBagLayout l = new GridBagLayout();
|
|
panel.setLayout(l);
|
|
panel.setBorder(BorderFactory.createTitledBorder(Messages.getString("NewTileSourceDialog.INPUT.SOURCE"))); //$NON-NLS-1$
|
|
root.add(panel);
|
|
|
|
|
|
JLabel label = new JLabel(Messages.getString("NewTileSourceDialog.NAME")); //$NON-NLS-1$
|
|
panel.add(label);
|
|
GridBagConstraints constr = new GridBagConstraints();
|
|
constr.anchor = GridBagConstraints.WEST;
|
|
constr.ipadx = 5;
|
|
constr.gridx = 0;
|
|
constr.gridy = 0;
|
|
l.setConstraints(label, constr);
|
|
|
|
templateName = new JTextField();
|
|
templateName.setText(Messages.getString("NewTileSourceDialog.MAPNIK.EXAMPLE")); //$NON-NLS-1$
|
|
panel.add(templateName);
|
|
constr = new GridBagConstraints();
|
|
constr.fill = GridBagConstraints.HORIZONTAL;
|
|
constr.ipadx = 5;
|
|
constr.gridx = 1;
|
|
constr.gridy = 0;
|
|
l.setConstraints(templateName, constr);
|
|
|
|
label = new JLabel(Messages.getString("NewTileSourceDialog.URL.TEMPLATE")); //$NON-NLS-1$
|
|
panel.add(label);
|
|
constr = new GridBagConstraints();
|
|
constr.ipadx = 5;
|
|
constr.ipady = 10;
|
|
constr.gridx = 0;
|
|
constr.gridy = 1;
|
|
constr.anchor = GridBagConstraints.WEST;
|
|
l.setConstraints(label, constr);
|
|
|
|
templateUrl = new JTextField();
|
|
// Give hint about wms
|
|
templateUrl.setText("http://tile.openstreetmap.org/{$z}/{$x}/{$y}.png"); //$NON-NLS-1$
|
|
panel.add(templateUrl);
|
|
constr = new GridBagConstraints();
|
|
constr.weightx = 1;
|
|
constr.fill = GridBagConstraints.HORIZONTAL;
|
|
constr.ipadx = 5;
|
|
constr.gridx = 1;
|
|
constr.gridy = 1;
|
|
l.setConstraints(templateUrl, constr);
|
|
|
|
|
|
label = new JLabel(Messages.getString("NewTileSourceDialog.ADD.WMS.SERVICE")); //$NON-NLS-1$
|
|
panel.add(label);
|
|
constr = new GridBagConstraints();
|
|
constr.ipadx = 5;
|
|
constr.ipady = 10;
|
|
constr.gridx = 0;
|
|
constr.gridy = 2;
|
|
constr.anchor = GridBagConstraints.WEST;
|
|
l.setConstraints(label, constr);
|
|
|
|
label = new JLabel();
|
|
// Give hint about wms
|
|
label.setText("http://whoots.mapwarper.net/tms/{$z}/{$x}/{$y}/{layer}/http://path.to.wms.server"); //$NON-NLS-1$
|
|
panel.add(label);
|
|
constr = new GridBagConstraints();
|
|
constr.weightx = 1;
|
|
constr.fill = GridBagConstraints.HORIZONTAL;
|
|
constr.ipadx = 5;
|
|
constr.gridx = 1;
|
|
constr.gridy = 2;
|
|
l.setConstraints(label, constr);
|
|
|
|
panel.setMaximumSize(new Dimension(Short.MAX_VALUE, panel.getPreferredSize().height));
|
|
}
|
|
|
|
private void addListeners(){
|
|
okButton.addActionListener(new ActionListener(){
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
if(okPressed()){
|
|
setVisible(false);
|
|
}
|
|
}
|
|
|
|
});
|
|
cancelButton.addActionListener(new ActionListener(){
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
setVisible(false);
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
|
|
public boolean okPressed(){
|
|
if(Algoritms.isEmpty(templateName.getText())){
|
|
JOptionPane.showMessageDialog(this, Messages.getString("NewTileSourceDialog.SPECIFY.TEMPLATE.NAME") , Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$
|
|
return false;
|
|
}
|
|
if(Algoritms.isEmpty(templateUrl.getText())){
|
|
JOptionPane.showMessageDialog(this, Messages.getString("NewTileSourceDialog.SPECIFY.TEMPLATE.URL") , Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$
|
|
return false;
|
|
}
|
|
String url = templateUrl.getText();
|
|
if(url.indexOf("{$x}") == -1 || url.indexOf("{$y}") == -1 || url.indexOf("{$z}") == -1){ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
|
JOptionPane.showMessageDialog(this, Messages.getString("NewTileSourceDialog.SPECIFY.ALL.PLACEHLDRS") , Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$
|
|
return false;
|
|
}
|
|
File tilesDirectory = DataExtractionSettings.getSettings().getTilesDirectory();
|
|
if(tilesDirectory != null){
|
|
File dir = new File(tilesDirectory, templateName.getText());
|
|
if(dir.mkdirs()){
|
|
try {
|
|
FileOutputStream ous = new FileOutputStream(new File(dir, "url")); //$NON-NLS-1$
|
|
ous.write(url.getBytes("UTF-8")); //$NON-NLS-1$
|
|
ous.close();
|
|
} catch (UnsupportedEncodingException e) {
|
|
log.error(Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC") +" " + url, e); //$NON-NLS-1$
|
|
} catch (IOException e) {
|
|
log.error(Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC") +" " + url, e); //$NON-NLS-1$
|
|
}
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|