/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ServicesInfoDisplayedList.java
*
* Created on 2009-03-28, 12:23:54
*/
package app.navigps.gui.searchServices.swing;
import app.database.odb.core.ServiceCore;
import app.database.odb.core.ServiceDescription;
import app.navigps.gui.NaviRootWindow;
import app.navigps.gui.Scrollbar.ui.LineScrollBarUI;
import app.navigps.gui.borders.OvalBorder;
import app.navigps.gui.detailspanel.RoundWindow;
import app.navigps.gui.detailspanel.RoundWindowUtils;
import app.navigps.gui.svgComponents.DisplayObjects.AbstractDisplayManager;
import app.navigps.gui.svgComponents.DisplayObjects.ObjectService;
import app.navigps.utils.Utils;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.Vector;
import javax.swing.AbstractListModel;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
*
* @author Grzegorz (vara) Warywoda
*/
public class ServicesInfoDisplayedList extends javax.swing.JPanel {
private NaviDisplayList list;
private AnimationImageLayer animLayer = new AnimationImageLayer();
/** Creates new form ServicesInfoDisplayedList */
public ServicesInfoDisplayedList() {
initComponents();
jPanel1.setLayout(new BorderLayout(5,5));
list = new NaviDisplayList(new ServiceListModel());
list.setOpaque(false);
list.setModel(new ServiceListModel());
list.setCellRenderer(new ServiceListRenderer());
list.setBorder(null);
list.addListSelectionListener(createdListSelectionListener());
list.getModel().addListDataListener(createdListDataListener());
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBorder(new OvalBorder(5,5,5,5,10, 10,new Color(204,219,255)));
scrollPane.setOpaque(false);
scrollPane.getViewport().setOpaque(false);
scrollPane.getViewport().setBorder(null);
scrollPane.setViewportBorder(null);
JScrollBar scbH = scrollPane.getHorizontalScrollBar();
JScrollBar scbV = scrollPane.getVerticalScrollBar();
scbH.setOpaque(false);
scbV.setOpaque(false);
scbV.setUI(new LineScrollBarUI());
scbH.setUI(new LineScrollBarUI());
scbH.removeAll();
scbV.removeAll();
scrollPane.setViewportView(list);
jPanel1.add(scrollPane,BorderLayout.CENTER);
//jPanel1.add(new JButton("test"),BorderLayout.NORTH);
jScrollPane1.setBorder(null);
jScrollPane1.setOpaque(false);
jScrollPane1.getViewport().setOpaque(false);
jScrollPane1.getViewport().setBorder(null);
jScrollPane1.setViewportBorder(null);
JScrollBar scbH1 = jScrollPane1.getHorizontalScrollBar();
JScrollBar scbV1 = jScrollPane1.getVerticalScrollBar();
scbH1.setOpaque(false);
scbV1.setOpaque(false);
scbV1.setUI(new LineScrollBarUI());
scbH1.setUI(new LineScrollBarUI());
scbH1.removeAll();
scbV1.removeAll();
}
public void setListServices(Vector<ServiceCore> v){
getListModel().setAllServices(v);
}
public ServiceListModel getListModel(){
return (ServiceListModel)list.getModel();
}
/** 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jPanel3 = new javax.swing.JPanel();
jName = new javax.swing.JLabel();
jCity = new javax.swing.JLabel();
jStreet = new javax.swing.JLabel();
jCategory = new javax.swing.JLabel();
jCoord = new javax.swing.JLabel();
jAddit = new javax.swing.JLabel();
jLName = new javax.swing.JLabel();
jLCity = new javax.swing.JLabel();
jLStreet = new javax.swing.JLabel();
jLCateg = new javax.swing.JLabel();
jLAdditional = new javax.swing.JLabel();
jLCoord = new javax.swing.JLabel();
setOpaque(false);
jPanel1.setOpaque(false);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 200, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 170, Short.MAX_VALUE)
);
jPanel2.setOpaque(false);
jScrollPane1.setOpaque(false);
jPanel3.setOpaque(false);
jPanel3.setPreferredSize(new java.awt.Dimension(197, 140));
jName.setForeground(new java.awt.Color(240, 240, 240));
jCity.setForeground(new java.awt.Color(240, 240, 240));
jStreet.setForeground(new java.awt.Color(240, 240, 240));
jCategory.setForeground(new java.awt.Color(240, 240, 240));
jCoord.setForeground(new java.awt.Color(240, 240, 240));
jAddit.setForeground(new java.awt.Color(240, 240, 240));
jLName.setForeground(new java.awt.Color(240, 240, 240));
jLName.setText("Name:");
jLCity.setForeground(new java.awt.Color(240, 240, 240));
jLCity.setText("City:");
jLStreet.setForeground(new java.awt.Color(240, 240, 240));
jLStreet.setText("Street:");
jLCateg.setForeground(new java.awt.Color(240, 240, 240));
jLCateg.setText("Category:");
jLAdditional.setForeground(new java.awt.Color(240, 240, 240));
jLAdditional.setText("Additional:");
jLCoord.setForeground(new java.awt.Color(240, 240, 240));
jLCoord.setText("Coordinate:");
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jLAdditional, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLName, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLCity, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLStreet, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLCateg, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLCoord, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jCategory, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE)
.addComponent(jCoord, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE)
.addComponent(jCity, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE)
.addComponent(jName, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE)
.addComponent(jStreet, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE)
.addComponent(jAddit, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLName)
.addComponent(jName, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jCity, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLCity, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLStreet)
.addComponent(jStreet, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jCategory, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLCateg, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jCoord, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLCoord, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLAdditional))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jAddit, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(46, Short.MAX_VALUE))
);
jScrollPane1.setViewportView(jPanel3);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 171, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jAddit;
private javax.swing.JLabel jCategory;
private javax.swing.JLabel jCity;
private javax.swing.JLabel jCoord;
private javax.swing.JLabel jLAdditional;
private javax.swing.JLabel jLCateg;
private javax.swing.JLabel jLCity;
private javax.swing.JLabel jLCoord;
private javax.swing.JLabel jLName;
private javax.swing.JLabel jLStreet;
private javax.swing.JLabel jName;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel jStreet;
// End of variables declaration//GEN-END:variables
/**
* @return the animLayer
*/
public AnimationImageLayer getAnimamtionLayer() {
return animLayer;
}
public void setLabels(ServiceCore sc){
ServiceDescription sd = sc.getServiceDescription();
jName.setText(sd.getServiceName());
jCity.setText(sd.getCity());
jStreet.setText(sd.getServiceStreet()+" "+sd.getServiceNumber());
jCoord.setText(" x: "+Utils.roundsValue(sc.getServiceAttributes().getX(),2)+" y: "+Utils.roundsValue(sc.getServiceAttributes().getY(),2));
jCategory.setText(sd.getCategory().getName());
jAddit.setText(sd.getAdditionaInfo());
}
/**
* @param animLayer the animLayer to set
*/
public void setAnimLayer(AnimationImageLayer animLayer) {
this.animLayer = animLayer;
} // End of variables declaration
protected MyListSelectionUpdater createdListSelectionListener(){
return new MyListSelectionUpdater();
}
protected NaviListDataListener createdListDataListener(){
return new NaviListDataListener();
}
protected class MyListSelectionUpdater implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
JList lsm = (JList)e.getSource();
if ( !e.getValueIsAdjusting() || e.getFirstIndex() == -1 ||
lsm.isSelectionEmpty() )
return;
int index = lsm.getSelectedIndex();
//System.out.println("index selected "+index);
if (index != -1) {
ServiceCore sc = (ServiceCore)getListModel().getElementAt(index);
System.out.println(""+sc.getServiceDescription().getServiceName());
setLabels(sc);
AbstractDisplayManager dm = NaviRootWindow.getSVGCanvas().getDisplayManager();
JComponent os = (JComponent)dm.getObject(sc.getOID().getObjectId());
if(os!=null){
Rectangle bounds = os.getBounds();
Point location = new Point(bounds.x, bounds.y);
location = SwingUtilities.convertPoint(os.getParent(), location,getAnimamtionLayer());
//location.y -= 13;
bounds.setLocation(location);
getAnimamtionLayer().startAnimateImage(bounds,ObjectService.iconinfo.getImage());
}
}
}
}
protected class NaviListDataListener implements ListDataListener{
@Override
public void intervalAdded(ListDataEvent e) {
}
@Override
public void intervalRemoved(ListDataEvent e) {
}
@Override
public void contentsChanged(ListDataEvent e) {
AbstractListModel alm = (AbstractListModel)e.getSource();
int size = alm.getSize();
System.out.println("NaviListDataListener size of list "+size);
if(size == 0){
RoundWindow rw = RoundWindowUtils.getParentRoundWindow(ServicesInfoDisplayedList.this);
if(rw!=null){
rw.setEnabled(false);
}
}
}
}
protected class NaviDisplayList extends JList{
public NaviDisplayList(ListModel lm){
super(lm);
}
}
}