Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 29 additions & 5 deletions src/places/DescribedPlace.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,42 @@
package places;

import java.awt.Color;
import java.awt.Graphics;

public class DescribedPlace extends Place{

private String description;

public DescribedPlace(String name, Position position, String description){
super(name, position);
/*-------------------------------------------------CONSTRUCTOR--------------------------------------------------------*/
public DescribedPlace(String name, Position position, Registry register, String description){
super(name, position, register);
this.description = description;
}

/*---------------------------------------------------METHODS----------------------------------------------------------*/
protected void paintPlaceInfo(Graphics g){

int newX = getSizeX() *3; // EXPERIMENT
int newY = getSizeY() *2;


System.out.println(getSizeX());
System.out.println(newX);

this.setBounds(getPositionX()-15,getPositionY()-25, newX , newY);

g.setColor(Color.WHITE);
g.fillRect(0, 0,getBounds().width-1, getBounds().height -1);
g.setColor(Color.BLACK);
g.drawString(getName(), 0, 0 + (getBounds().height - getSizeY()));
g.drawString(description, 0, 0 + (getBounds().height -1));

drawIfMarked(g);
}

public DescribedPlace(String name, Position position, TravelCategory color, String description){
super(name, position, color);
this.description = description;
@Override
public String toString() {

return "Described" +","+ getColor() +","+ getPosition().getX() +","+ getPosition().getY() +","+ getName() +","+ description;
}
}
34 changes: 29 additions & 5 deletions src/places/NamedPlace.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,37 @@
package places;

import java.awt.Color;
import java.awt.Graphics;

public class NamedPlace extends Place{

public NamedPlace(String name, Position position){
super(name, position);

/*----------------------------------------------------CONSTRUCTOR--------------------------------------------------*/
public NamedPlace(String name, Position position, Registry register){
super(name, position, register);
}
public NamedPlace(String name, Position position, TravelCategory color){
super(name, position, color);

/*------------------------------------------------------METHODS----------------------------------------------------*/
@Override
protected void paintPlaceInfo(Graphics g) {

int newX = getSizeX() *3; // EXPERIMENT

System.out.println(getSizeX());
System.out.println(newX);

this.setBounds(getPositionX()-15,getPositionY()-25, newX ,getSizeY() );

g.setColor(Color.WHITE);
g.fillRect(0, 0,getBounds().width-1, getBounds().height -1);
g.setColor(Color.BLACK);
g.drawString(getName(), 0, 0 + (getBounds().height -1));

drawIfMarked(g);
}

@Override
public String toString() {
// TODO Auto-generated method stub
return "Named" +","+ getColor() +","+ getPosition().getX() +","+ getPosition().getY() +","+ getName();
}
}
184 changes: 169 additions & 15 deletions src/places/Place.java
Original file line number Diff line number Diff line change
@@ -1,48 +1,202 @@
package places;
import javax.swing.JComponent; // kanske ladda allt? allts� -> *
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public abstract class Place extends JComponent {

private String name;
private Position position;
private TravelCategory color = TravelCategory.NO_CATEGORY;// kategori - buss, t�g, t-bana
private boolean showInfo;
//private boolean visible; // beh�vs ej? JComponent -> setVisible()
private boolean marked;

public Place(String name, Position position){
private TravelCategory color;
private boolean showInfo = false;
private boolean marked = false;
private int sizeX = 30;
private int sizeY = 25;
Registry register;

/*------------------------------------------------CONSTRUCTOR---------------------------------------------------------------*/
public Place(String name, Position position, Registry register){
this.name = name;
this.position = position;
this.register = register;
this.addMouseListener(new MarkLyss());

this.setBounds(position.getX()-15,position.getY()-25,sizeX,sizeY);
this.setPreferredSize (new Dimension(100,100));
this.setMaximumSize (new Dimension(100,100));
this.setMinimumSize (new Dimension(100,100));
setVisible(true);
}
public Place(String name, Position position, TravelCategory color){
this(name, position);
this.color = color;
setVisible(true);
int i = 0;
}

/*-------------------------------------------------METHODS-------------------------------------------------------------------*/
public String getName(){
return name;
} // dessa getMetoder borde inte beh�vas d� den �rever fr�n JComponent och allts�
//ska representeras grafiskt som en trekant p� kartan.
}

public Position getPosition(){
return position;
}
public int getPositionX(){
return position.getX();
}
public int getPositionY(){
return position.getY();
}
public int getSizeX(){
return sizeX;
}
public int getSizeY(){
return sizeY;
}

void setMarked(){
marked = true;
repaint();
}

void setNotMarked(){
marked = false;
repaint();
}

void setDontShowInfo(){
showInfo = false;
repaint();
}

public TravelCategory getColor(){
return color;
}

public void setCategory(TravelCategory color){
try{
this.color = color;
}catch(NullPointerException e){
// Inget problem, då Place kan va kategorilös!
}
}


public boolean getShowInfo(){
return showInfo;
}
public boolean getMarked(){
return marked;
}

public abstract String toString();

public void drawIfMarked(Graphics g){
if(marked){
g.setColor(Color.RED);
g.drawRect(0, 0,getBounds().width-1, getBounds().height -1);
}
}

@Override
protected void paintComponent(Graphics g){
if(showInfo){
paintPlaceInfo(g);
}else{
paintPlace(g);
// denna if-sats skulle kunna ligga utanför paintComponent
//och i så fall kunde describedPlace istället representeras av en pålagd panel med en textArea.
}
}

private void paintPlace(Graphics g) {
super.paintComponent(g);

this.setBounds(getPositionX()-15,getPositionY()-25, sizeX ,sizeY);

g.setColor(Color.BLACK);
int[] xLed = {0,15,30};
int[] yLed = {0,25,0};

if(color != null){
switch(color.toString()){

case "BUS":
g.setColor(Color.RED);
break;

case "TRAIN":
g.setColor(Color.GREEN);
break;

case "SUBWAY":
g.setColor(Color.BLUE);
break;
default:
}
}

g.fillPolygon(xLed, yLed, 3);

drawIfMarked(g);

}
protected abstract void paintPlaceInfo(Graphics g); // Utseende och Info definieras i varje given Place-child

/*----------------------------------------------------------CLASSES---------------------------------------------------------*/
class MarkLyss implements MouseListener{


public void mouseClicked(MouseEvent mev){
switch(mev.getButton()){

case MouseEvent.BUTTON1:
if(marked){
marked = false;
register.getMarkedPlace().remove(Place.this);
//TA BORT UR MARKED LIST
}
else{
marked = true;
register.getMarkedPlace().add(Place.this);
// LÄGG TILL I MARKEDLIST
}
repaint();
break;

case MouseEvent.BUTTON3:
if(showInfo)
showInfo = false;
else
showInfo = true;
repaint();
break;

default:
return;
}
}

@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}
}
}


30 changes: 27 additions & 3 deletions src/places/Position.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,40 @@ public class Position {

private int positionX;
private int positionY;


/*-----------------------------------------------------CONSTRUCTOR------------------------------------------------------*/
public Position(int x, int y){
x = positionX;
y = positionY;
positionX = x;
positionY = y;
}

/*-------------------------------------------------------METHODS--------------------------------------------------------*/
public int getX(){
return positionX;
}

public int getY(){
return positionY;
}

@Override
public boolean equals(Object o){ // till för jämförelser i hashMap

if(o instanceof Position){

Position comparePos=(Position)o;

if(comparePos.getX() == positionX && comparePos.getY() == positionY){
return true;
}
}

return false;
}


@Override
public int hashCode(){ //// till för jämförelser i hashMap
return positionX * 31 + positionY;
}
}
Loading