Repository for the HealthTool which enables Apple users to analyse their health data from the Apple health app and prepares the data for contributing it for future studies on wearable data.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

94 lines
2.6 KiB

package application.customviews;
import java.io.File;
import java.net.MalformedURLException;
import application.UICoordinator;
import application.helpers.Utils;
import application.res.Text;
import javafx.application.HostServices;
import javafx.event.EventHandler;
import javafx.geometry.Point2D;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
public class FileView extends HBox
{
/**
* Set height of all FileViews
*/
private static final int HEIGHT = 62;
/**
* Set width of all FileViews
*/
public static final int WIDTH = 300;
/**
* Set border width of all FileViews
*/
public static final double BORDER_WIDTH = Utils.darkGreyBorderBR.getInsets().getBottom();
/**
* Set height of the icon of all FileViews
*/
private static final int PIC_HEIGHT = HEIGHT - 5;
/**
* Initializes the view and sets up the clickHandler
* @param file File which will be represented with this view
* @param desc The user readable name of the file to be displayed to the user.
* @param hs The hostServices needed to open the document in host application.
*/
public FileView(File file, String desc, HostServices hs)
{
this.setMaxHeight(HEIGHT);
this.setMinHeight(HEIGHT);
this.setMaxWidth(WIDTH);
this.setMinWidth(WIDTH);
ImageView image;
this.setBorder(Utils.darkGreyBorderBR);
if (file.getName().endsWith(".csv"))
{
image = new ImageView(new Image(UICoordinator.class.getResourceAsStream("csv-grey.png")));
} else
{
Image i = new Image(UICoordinator.class.getResourceAsStream("txt-grey.png"));
image = new ImageView(i);
}
image.setFitWidth(PIC_HEIGHT);
image.setFitHeight(PIC_HEIGHT);
Label name = new Label(desc);
name.setMinHeight(HEIGHT);
name.setMaxHeight(HEIGHT);
this.getChildren().add(image);
this.getChildren().add(name);
setOnMouseClicked(new EventHandler<MouseEvent>()
{ // Click on the fileView should open the file in a system native application.
// Otherwise a tooltip will appear to inform the user about failing to open the
// file.
@Override
public void handle(MouseEvent event)
{
try
{
hs.showDocument(file.toURI().toURL().toExternalForm());
name.setTooltip(null);
} catch (MalformedURLException e)
{
Point2D p = name.localToScreen(name.getLayoutBounds().getCenterX(),
name.getLayoutBounds().getCenterY());
Tooltip t = new Tooltip(Text.NO_OPENING_FILES);
name.setTooltip(t);
t.show(name, p.getX(), p.getY());
t.autoHideProperty().set(true);
}
}
});
}
}