/**
*
* NORD POS is a fork of Openbravo POS.
*
* Copyright (C) 2009-2016 Nord Trading Ltd. <http://www.nordpos.com>
*
* This file is part of NORD POS.
*
* NORD POS 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.
*
* NORD POS 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
* NORD POS. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nordpos.sales.geomap;
import com.openbravo.basic.BasicException;
import com.openbravo.data.loader.SentenceList;
import com.openbravo.data.loader.SerializerReadClass;
import com.openbravo.data.loader.StaticSentence;
import com.openbravo.pos.forms.AppLocal;
import com.openbravo.pos.forms.AppView;
import com.openbravo.pos.sales.JTicketsBag;
import com.openbravo.pos.sales.TicketsEditor;
import com.openbravo.pos.util.RoundUtils;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import org.openstreetmap.gui.jmapviewer.Coordinate;
import org.openstreetmap.gui.jmapviewer.JMapViewer;
import org.openstreetmap.gui.jmapviewer.JMapViewerTree;
import org.openstreetmap.gui.jmapviewer.Layer;
import org.openstreetmap.gui.jmapviewer.MapMarkerDot;
import org.openstreetmap.gui.jmapviewer.Style;
import org.openstreetmap.gui.jmapviewer.events.JMVCommandEvent;
import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
import org.openstreetmap.gui.jmapviewer.interfaces.JMapViewerEventListener;
import org.openstreetmap.gui.jmapviewer.interfaces.MapMarker;
/**
*
* @author Andrey Svininykh <svininykh@gmail.com>
* @version NORD POS 3.1
*/
public class JTicketsBagLocationMap extends JTicketsBag implements JMapViewerEventListener {
private java.util.List<Geolayer> m_alayers;
private final JMapViewerTree treeMap;
private final JTicketsBagLocation m_location;
private final Layer currentLayer;
private final MapMarker currentMarker;
private final DataLogicGeomap dlGeomap;
public JTicketsBagLocationMap(AppView app, TicketsEditor panelticket) {
super(app, panelticket);
dlGeomap = (DataLogicGeomap) app.getBean(DataLogicGeomap.class.getName());
treeMap = new JMapViewerTree("Tickets");
m_location = new JTicketsBagLocation(app, this);
initComponents();
map().addJMVListener(this);
map().setScrollWrapEnabled(true);
JPanel jLocations = new JPanel();
jLocations.applyComponentOrientation(getComponentOrientation());
jLocations.setLayout(new BorderLayout());
jLocations.setBorder(new javax.swing.border.CompoundBorder(
new javax.swing.border.EmptyBorder(new Insets(5, 5, 5, 5)),
new javax.swing.border.TitledBorder(treeMap.getName())));
JPanel jPanCont = new JPanel();
jPanCont.applyComponentOrientation(getComponentOrientation());
m_jPanelMap.add(jLocations, BorderLayout.CENTER);
jLocations.add(treeMap, BorderLayout.CENTER);
map().addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JMapViewerMouseClicked(e);
}
});
currentLayer = new Layer("Current");
currentMarker = new MapMarkerDot(currentLayer, new Coordinate(0, 0));
try {
reload();
} catch (BasicException ex) {
Logger.getLogger(JTicketsBagLocationMap.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void JMapViewerMouseClicked(java.awt.event.MouseEvent evt) {
ICoordinate icoord = map().getPosition(evt.getPoint());
if (SwingUtilities.isRightMouseButton(evt) && evt.getClickCount() == 1) {
map().removeMapMarker(currentMarker);
currentMarker.setLat(icoord.getLat());
currentMarker.setLon(icoord.getLon());
map().addMapMarker(currentMarker);
}
}
@Override
public void activate() {
m_panelticket.setActiveTicket(null, null);
m_location.activate();
showView("geomap");
}
@Override
public boolean deactivate() {
return true;
}
@Override
protected JComponent getNullComponent() {
return this;
}
@Override
public void deleteTicket() {
m_panelticket.setActiveTicket(null, null);
}
@Override
protected JComponent getBagComponent() {
return m_location;
}
private void showView(String view) {
CardLayout cl = (CardLayout) (getLayout());
cl.show(this, view);
}
private void reload() throws BasicException {
map().removeAllMapMarkers();
m_alayers = dlGeomap.getLayersList().list();
for (Geolayer geolayer : m_alayers) {
if (geolayer.isVisible()) {
Layer visibleLayer = new Layer(geolayer.getName());
visibleLayer.setVisibleTexts(Boolean.TRUE);
Style style = new Style();
style.setColor(Color.GRAY);
style.setBackColor(geolayer.getColor());
for (Geomarker geomarker : dlGeomap.getMarkers(geolayer.getId())) {
if (geomarker.isVisible()) {
if (geolayer.getIcon() != null) {
map().addMapMarker(new IconMarker(visibleLayer, new Coordinate(geomarker.getLatitude(), geomarker.getLongtitude()),
geolayer.getIcon()));
} else {
MapMarkerDot markerDot = new MapMarkerDot(visibleLayer, geomarker.getName(), new Coordinate(geomarker.getLatitude(), geomarker.getLongtitude()), style);
map().addMapMarker(markerDot);
}
}
}
}
}
}
private JMapViewer map() {
return treeMap.getViewer();
}
private void updateZoomParameters() {
}
@Override
public void processCommand(JMVCommandEvent command) {
if (command.getCommand().equals(JMVCommandEvent.COMMAND.ZOOM)
|| command.getCommand().equals(JMVCommandEvent.COMMAND.MOVE)) {
updateZoomParameters();
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
m_jPanelMap = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
m_jbtnRefresh = new javax.swing.JButton();
m_jText = new javax.swing.JLabel();
setLayout(new java.awt.CardLayout());
m_jPanelMap.setLayout(new java.awt.BorderLayout());
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
m_jbtnRefresh.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/reload.png"))); // NOI18N
m_jbtnRefresh.setText(AppLocal.getIntString("button.reloadticket")); // NOI18N
m_jbtnRefresh.setFocusPainted(false);
m_jbtnRefresh.setFocusable(false);
m_jbtnRefresh.setMargin(new java.awt.Insets(8, 14, 8, 14));
m_jbtnRefresh.setRequestFocusEnabled(false);
m_jbtnRefresh.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jbtnRefreshActionPerformed(evt);
}
});
jPanel2.add(m_jbtnRefresh);
jPanel2.add(m_jText);
jPanel1.add(jPanel2, java.awt.BorderLayout.LINE_START);
m_jPanelMap.add(jPanel1, java.awt.BorderLayout.NORTH);
add(m_jPanelMap, "geomap");
}// </editor-fold>//GEN-END:initComponents
private void m_jbtnRefreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtnRefreshActionPerformed
try {
reload();
} catch (BasicException ex) {
Logger.getLogger(JTicketsBagLocationMap.class.getName()).log(Level.SEVERE, null, ex);
}
}//GEN-LAST:event_m_jbtnRefreshActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel m_jPanelMap;
private javax.swing.JLabel m_jText;
private javax.swing.JButton m_jbtnRefresh;
// End of variables declaration//GEN-END:variables
}