/* * 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); } } }