1 package net.wlandscape.map;
2
3 import java.awt;
4 import javax.swing;
5 import java.awt.geom;
6 import net.wlandscape.pgm;
7
8 /**
9 * <p>?berschrift: Project WLANdscape</p>
10 * <p>Beschreibung: class to create the layer for the display of the WLANs;</p>
11 * <p>--> used in a JLayeredPane in class CMapDisplay</p>
12 * <p>Copyright: Copyright (c) 2002</p>
13 * <p>Organisation: <a href="http://sourceforge.net/projects/wlandscape/">Project WLANdscape</a></p>
14 * @author <a href="mailto:cg7@gmx.de">Christian Gra?</a>
15 * @version 0.1
16 */
17
18 public class CWlanLayer extends JPanel{
19 private static final boolean debug = true;
20 private CWlanInfo[] wlanInfos;
21 private boolean[] isToRender;
22
23 public CWlanLayer(CWlanInfo[] theWlanInfo){
24 wlanInfos = theWlanInfo;
25 isToRender = new boolean[wlanInfos.length];
26 for (int i = 0; i<wlanInfos.length; i++){
27 isToRender[i] = true;
28 }
29 setBounds(0,0,800,600);
30 }
31
32 // determine which WLANs will be rendered and which not
33 public void setIsToRender(int[] selectedWlans){
34 for (int i = 0; i<isToRender.length; i++){
35 isToRender[i] = true;
36 }
37 for (int i = 0; i<selectedWlans.length; i++){
38 isToRender[selectedWlans[i]] = false;
39 }
40 repaint();
41 }
42
43
44 public void paintComponent(Graphics g1){
45 Graphics2D g = (Graphics2D)g1;
46 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
47 RenderingHints.VALUE_ANTIALIAS_ON);
48 for(int i = 0; i < isToRender.length; i++){ // for each WLAN
49 if(isToRender[i] == true){ //if it is to render
50 if(debug){
51 System.out.println("Rendering " + wlanInfos[i].toString());
52 }
53 CWlanPosition[] positions = wlanInfos[i].getWlanPositions();
54 int wlanColor = (int)(i*100/isToRender.length);
55 g.setColor(Color.getHSBColor(100,100,wlanColor));
56 //g.fillRect(i*10,0,10,10);
57 for (int j = 0; j < positions.length; j++){ // for each position of the WLAN
58 g.setColor(Color.getHSBColor(100,(int)(positions[j].getQuality()), wlanColor));
59 g.fill(new Ellipse2D.Double(positions[j].getLatitude(),
60 600-positions[j].getLongitude(),
61 30, 30));
62
63
64 }
65 }
66 }
67 if (debug){
68 g.setColor(Color.gray);
69 for (int i = 0; i<600; i+=10){
70 g.drawLine(0,i,800, i);
71 if(i%100 == 0){
72 g.drawLine(0,i-1,800, i-1);
73 g.drawLine(0,i+1,800, i+1);
74 }
75 }
76 for (int i = 0; i<800; i+=10){
77 g.drawLine(i,0,i,600);
78 if(i%100 == 0){
79 g.drawLine(i-1,0,i-1,600);
80 g.drawLine(i+1,0,i+1,600);
81 }
82 }
83 }
84 } // end of render method
85
86
87 // *** generate the adequate color for the link quality
88 private Color getQualityColor(double theQuality)
89 {
90 int q = (int) (255*theQuality/100);
91 Color qualityColor = new Color(30, q, 30, 120);
92 return qualityColor;
93 }
94 } // end of class CWlanLayer
95
96
97