Skip to content

Commit

Permalink
zoom based on property change
Browse files Browse the repository at this point in the history
  • Loading branch information
Mario-S committed Nov 23, 2013
1 parent 4c198cb commit afc860d
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 45 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ src/main/java/Demo.java
/nbbuild/
/dist/
nbproject
build.xml
build.xml
.DS_Store
/_lib
/gradlew_release.cmd
/gradle_localOverride.cmd
/gradlew_updateWrapper.cmd
/gradlew_repairHeaders.cmd
/.nb-gradle/profiles/private/
1 change: 0 additions & 1 deletion src/main/java/jfxtras/labs/map/CoordinatesConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ private static int getZoom(Zoomable zoomable){
return zoomable.zoomProperty().get();
}

@Deprecated
public static Coordinate toCoordinate(Point mapPoint, Moveable controller) {
Dimension dim = new Dimension(controller.getMapWidth(), controller.getMapHeight());
Point center = controller.getCenter();
Expand Down
13 changes: 6 additions & 7 deletions src/main/java/jfxtras/labs/map/MapPane.java
Original file line number Diff line number Diff line change
Expand Up @@ -392,14 +392,11 @@ public void zoomOut(Point mapPoint) {
updateZoom(zoom.get() - 1, mapPoint);
}

public void setZoom(int nextZoom) {
// Point mapPoint = createMapCenterPoint();
// updateZoom(nextZoom, mapPoint);
private void setZoom(int nextZoom) {
zoom.set(nextZoom);
}

@Override
public void updateZoom(int nextZoom) {
private void updateZoom(int nextZoom) {
Point mapPoint = createMapCenterPoint();
updateZoom(nextZoom, mapPoint, zoomCoordinateCache.getZoomCoordinate());
}
Expand Down Expand Up @@ -672,9 +669,11 @@ private class ZoomChangeListener implements ChangeListener<Number>{
public void changed(ObservableValue<? extends Number> ov,
Number oldVal, Number newVal) {
if(oldVal != null){
Coordinate c = getCoordinate(createMapCenterPoint(), oldVal.intValue());
int oldZoomVal = oldVal.intValue();
Coordinate c = getCoordinate(createMapCenterPoint(), oldZoomVal);
zoomCoordinateCache.setZoomCoordinate(c);
updateZoom(newVal.intValue());
int newZoomVal = newVal.intValue();
updateZoom(newZoomVal);
}
}

Expand Down
24 changes: 14 additions & 10 deletions src/main/java/jfxtras/labs/map/ZoomControlFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
Expand All @@ -46,11 +45,13 @@
*/
public class ZoomControlFactory {

private static final int GAP = 5;

private static final String ZOOM_LEVEL = "Zoom to level ";

protected Zoomable zoomable;

private Slider zoomSlider;
private ZoomSlider zoomSlider;

private Button zoomInButton;

Expand All @@ -62,8 +63,7 @@ public Pane create(Zoomable zoomable) {

this.zoomable = zoomable;

ZoomSliderFactory zoomSliderFactory = new ZoomSliderFactory(zoomable);
zoomSlider = zoomSliderFactory.create();
zoomSlider = new ZoomSlider(zoomable);

zoomSlider.valueProperty().addListener(new ZoomSliderChangeListener(zoomable));

Expand All @@ -81,7 +81,7 @@ public Pane create(Zoomable zoomable) {

zoomable.zoomProperty().addListener(new ZoomChangeListener());

Pane pane = new VBox();
Pane pane = new VBox(GAP);
pane.getChildren().add(zoomInButton);
pane.getChildren().add(zoomSlider);
pane.getChildren().add(zoomOutButton);
Expand Down Expand Up @@ -130,7 +130,9 @@ private class ZoomMinChangeListener implements ChangeListener<Number> {
public void changed(ObservableValue<? extends Number> ov,
Number oldVal, Number newVal) {
ignore = true;
zoomSlider.setMin(newVal.doubleValue());
double min = newVal.doubleValue();
zoomSlider.adjustScale(min, zoomSlider.getMax());
zoomSlider.setMin(min);
ignore = false;
}
}
Expand All @@ -141,7 +143,9 @@ private class ZoomMaxChangeListener implements ChangeListener<Number> {
public void changed(ObservableValue<? extends Number> ov,
Number oldVal, Number newVal) {
ignore = true;
zoomSlider.setMax(newVal.doubleValue());
double max = newVal.doubleValue();
zoomSlider.adjustScale(zoomSlider.getMin(), max);
zoomSlider.setMax(max);
ignore = false;
}
}
Expand All @@ -155,10 +159,10 @@ public ZoomSliderChangeListener(Zoomable zoomable) {
}

@Override
public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
public void changed(ObservableValue<? extends Number> ov, Number oldVal, Number newVal) {
if(!ignore){
// zoomable.updateZoom(new_val.intValue());
zoomable.zoomProperty().set(new_val.intValue());
int newZoom = newVal.intValue();
zoomable.zoomProperty().set(newZoom);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,31 +33,31 @@
import javafx.scene.control.Slider;

/**
* Factory for the zoom slider.
* The zoom slider.
*
* @author Mario Schroeder
*/
public class ZoomSliderFactory {
public class ZoomSlider extends Slider{

private Zoomable zoomable;

public ZoomSliderFactory(Zoomable zoomable) {
this.zoomable = zoomable;
}

protected Slider create() {
Slider slider = new Slider();
slider.setOrientation(Orientation.VERTICAL);
slider.setShowTickLabels(true);
slider.setShowTickMarks(true);
slider.setMajorTickUnit(1.0);
slider.setMinorTickCount(0);
slider.setSnapToTicks(true);
public ZoomSlider(Zoomable zoomable) {

slider.setValue(zoomable.zoomProperty().get());
slider.setMin(zoomable.minZoomProperty().get());
slider.setMax(zoomable.maxZoomProperty().get());
setOrientation(Orientation.VERTICAL);
setShowTickLabels(true);
setShowTickMarks(true);
setSnapToTicks(true);
setMajorTickUnit(1.0);
setMinorTickCount(0);
setBlockIncrement(1);

setValue(zoomable.zoomProperty().get());
setMin(zoomable.minZoomProperty().get());
setMax(zoomable.maxZoomProperty().get());
}

return slider;
public void adjustScale(double min, double max){
double diff = max-min;
setPrefHeight(diff*5);

}
}
6 changes: 0 additions & 6 deletions src/main/java/jfxtras/labs/map/Zoomable.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,6 @@ public interface Zoomable {

SimpleIntegerProperty zoomProperty();

/**
* Updates the value of the zoom.
* @param zoom
*/
void updateZoom(int zoom);

/**
* zoom in at specific point
* @param point
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/jfxtras/labs/map/MapTrial1.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ public void start(Stage stage) throws Exception {
TileSource tileSource = factory.create(dir.getPath());
map.setTileSource(tileSource);

map.setZoom(7);
map.setDisplayPositionByLatLon(52.4, 5.9);
map.zoomProperty().set(7);

Scene scene = new Scene(root);

Expand Down

0 comments on commit afc860d

Please sign in to comment.