blob: 78fee1803d68d719c605fa3952cf355fce277465 [file] [log] [blame]
package org.eclipse.fx.ide.gradient.app;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TabPane;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.equinox.app.IApplicationContext;
import org.eclipse.fx.ide.gradient.app.impl.LinearGradientDetailTab;
import org.eclipse.fx.ide.gradient.app.impl.RadialGradientDetailTab;
import org.eclipse.fx.ide.gradient.app.util.GradientConverter;
import org.eclipse.fx.ide.gradient.model.gradient.FxCycleMethod;
import org.eclipse.fx.ide.gradient.model.gradient.FxLinearGradient;
import org.eclipse.fx.ide.gradient.model.gradient.FxRadialGradient;
import org.eclipse.fx.ide.gradient.model.gradient.FxStop;
import org.eclipse.fx.ide.gradient.model.gradient.GradientFactory;
import org.eclipse.fx.osgi.util.AbstractJFXApplication;
public class MainApplication extends AbstractJFXApplication {
protected void jfxStart(IApplicationContext applicationContext,
Application jfxApplication, Stage primaryStage) {
primaryStage.setTitle("Gradient Editor");
ComposedAdapterFactory f = new ComposedAdapterFactory(
ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
EditingDomain editingDomain = new AdapterFactoryEditingDomain(f,
new BasicCommandStack());
FxLinearGradient gLin = GradientFactory.eINSTANCE
.createFxLinearGradient();
FxStop s1 = GradientFactory.eINSTANCE.createFxStop();
s1.setOffset(0.22);
s1.setColor(GradientConverter.convertRgbColor(new Color(1.0, 0.0, 0.0,
0.5)));
gLin.getStops().add(s1);
FxStop s2 = GradientFactory.eINSTANCE.createFxStop();
s2.setOffset(0.33);
s2.setColor(GradientConverter.convertRgbColor(new Color(0.0, 1.0, 0.0,
0.5)));
gLin.getStops().add(s2);
FxStop s3 = GradientFactory.eINSTANCE.createFxStop();
s3.setOffset(0.44);
s3.setColor(GradientConverter.convertRgbColor(new Color(0.0, 0.0, 1.0,
0.5)));
gLin.getStops().add(s3);
gLin.setStartX(0.2);
gLin.setEndX(0.8);
gLin.setStartY(0.2);
gLin.setEndY(0.8);
gLin.setCycleMethod(FxCycleMethod.REFLECT);
gLin.setProportional(true);
FxRadialGradient gRad = GradientFactory.eINSTANCE
.createFxRadialGradient();
gRad.getStops().add(EcoreUtil.copy(s1));
// TODO OSGI
GridPane root = new GridPane();
TabPane tabPane = new TabPane();
root.add(tabPane, 0, 0);
LinearGradientDetailTab linearDetail = new LinearGradientDetailTab();
linearDetail.initUI();
tabPane.getTabs().add(linearDetail);
RadialGradientDetailTab radialDetail = new RadialGradientDetailTab();
radialDetail.initUI();
tabPane.getTabs().add(radialDetail);
linearDetail.bind(editingDomain, gLin);
radialDetail.bind(editingDomain, gRad);
GridPane buttons = new GridPane();
Button bApply = new Button();
bApply.setText("Apply");
bApply.setMinWidth(0.3);
buttons.add(bApply, 1, 0);
bApply.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
try {
primaryStage.close();
jfxApplication.stop();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Button bCancel = new Button();
bCancel.setText("Cancel");
bCancel.setMinWidth(0.3);
buttons.add(bCancel, 0, 0);
bCancel.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
try {
primaryStage.close();
jfxApplication.stop();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
root.add(buttons, 0, 1, 2, 1);
primaryStage.setScene(new Scene(root, 600, 350));
primaryStage.show();
}
}