org.fxyz3d.FXyzSampleBase Maven / Gradle / Ivy
The newest version!
/**
* FXyzSampleBase.java
*
* Copyright (c) 2013-2016, F(X)yz
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of F(X)yz, any associated website, nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL F(X)yz BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.fxyz3d;
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
* A base class for samples - it is recommended that they extend this class
* rather than Application, as then the samples can be run either standalone
* or within FXSampler.
*/
public abstract class FXyzSampleBase extends Application implements FXyzSample {
/** {@inheritDoc}
* @throws java.lang.Exception */
@Override public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle(getSampleName());
Scene scene = new Scene((Parent)buildSample(this, primaryStage), 800, 800);
primaryStage.setScene(scene);
primaryStage.show();
}
/** {@inheritDoc}
* @return */
@Override public boolean isVisible() {
return true;
}
/** {@inheritDoc}
* @return */
@Override public Node getControlPanel() {
return null;
}
/**
* @return */
public double getControlPanelDividerPosition() {
return 0.6;
}
/** {@inheritDoc}
* @return */
@Override public String getSampleDescription() {
return "";
}
/** {@inheritDoc}
* @return */
@Override public String getProjectName() {
return "FXyz-Samples";
}
/**
* Utility method to create the default look for samples.
*
* This is also where the service should be ran from or the changeSample method in FXyzSampler
*
* @param sample
* @param stage
* @return
*/
public static Node buildSample(FXyzSample sample, Stage stage) {
return sample.getPanel(stage);
}
}