Updated license info

This commit is contained in:
nathan 2015-08-19 02:25:38 +02:00
parent 01271e9e5d
commit 1607d0a087
3 changed files with 143 additions and 30 deletions

View File

@ -1,3 +1,18 @@
/*
* Copyright 2015 dorkbox, llc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dorkbox.util.javafx;
import com.sun.javafx.application.PlatformImpl;
@ -23,6 +38,7 @@ import java.util.concurrent.CountDownLatch;
/**
* This class is necessary, because JavaFX stage is crap on linux. This offers sort-of the same functionality, but via swing instead.
* Annoying caveat. All swing setters MUST happen on the EDT.
*/
public
class StageViaSwing {
@ -30,6 +46,9 @@ class StageViaSwing {
final JFXPanel panel;
private boolean inNestedEventLoop = false;
private final CountDownLatch showlatch = new CountDownLatch(1);
private final CountDownLatch showAndWaitlatch = new CountDownLatch(1);
final WritableValue<Float> opacityProperty;
@ -69,6 +88,8 @@ class StageViaSwing {
});
}
private boolean center = false;
private
StageViaSwing() {
@ -91,7 +112,7 @@ class StageViaSwing {
@Override
public void setValue(Float value) {
frame.setOpacity(value);
SwingUtil.invokeLater(() -> frame.setOpacity(value));
}
};
@ -106,13 +127,24 @@ class StageViaSwing {
Thread.sleep(500);
sizeToScene();
SwingUtil.showOnSameScreenAsMouseCenter(frame);
if (center) {
SwingUtil.invokeAndWait(() -> SwingUtil.showOnSameScreenAsMouseCenter(frame));
}
Timeline timeline = new Timeline();
timeline.setCycleCount(1);
timeline.getKeyFrames()
.addAll(new KeyFrame(Duration.millis(700),
new KeyValue(opacityProperty, 1F, Interpolator.EASE_OUT)));
timeline.setOnFinished(event -> {
if (inNestedEventLoop) {
inNestedEventLoop= false;
com.sun.javafx.tk.Toolkit.getToolkit().exitNestedEventLoop(StageViaSwing.this, null);
} else {
showlatch.countDown();
}
});
timeline.play();
} catch(InterruptedException ignored) {
}
@ -126,7 +158,7 @@ class StageViaSwing {
public
void setTitle(final String title) {
frame.setTitle(title);
SwingUtil.invokeAndWait(() -> frame.setTitle(title));
}
public
@ -136,11 +168,12 @@ class StageViaSwing {
public
void close() {
SwingUtil.invokeAndWait(() -> frame.dispose());
SwingUtil.invokeAndWait(frame::dispose);
if (inNestedEventLoop) {
inNestedEventLoop= false;
com.sun.javafx.tk.Toolkit.getToolkit().exitNestedEventLoop(this, null);
} else {
latch.countDown();
showAndWaitlatch.countDown();
}
}
@ -159,9 +192,6 @@ class StageViaSwing {
SwingUtil.invokeAndWait(() -> frame.setIconImage(icon));
}
private final
CountDownLatch latch = new CountDownLatch(1);
public
void show() {
SwingUtil.invokeAndWait(() -> {
@ -179,18 +209,33 @@ class StageViaSwing {
sizeToScene();
SwingUtil.invokeAndWait(() -> frame.setVisible(true));
// false-positive
//noinspection Duplicates
if (Platform.isFxApplicationThread()) {
inNestedEventLoop = true;
com.sun.javafx.tk.Toolkit.getToolkit().enterNestedEventLoop(this);
} else {
try {
showlatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public
void showAndWait() {
show();
// false-positive
//noinspection Duplicates
if (Platform.isFxApplicationThread()) {
inNestedEventLoop = true;
com.sun.javafx.tk.Toolkit.getToolkit().enterNestedEventLoop(this);
} else {
try {
latch.await();
showAndWaitlatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
@ -226,11 +271,7 @@ class StageViaSwing {
method.invoke(scene);
// must be on the EDT
SwingUtil.invokeAndWait(() -> {
frame.setSize((int)scene.getWidth(), (int)scene.getHeight());
});
SwingUtil.invokeAndWait(() -> frame.setSize((int)scene.getWidth(), (int)scene.getHeight()));
} catch (InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}
@ -251,4 +292,24 @@ class StageViaSwing {
WritableValue<Float> getOpacityProperty() {
return opacityProperty;
}
public
void setLocation(final double anchorX, final double anchorY) {
SwingUtil.invokeAndWait(() -> frame.setLocation((int)anchorX, (int)anchorY));
}
public
Point getLocation() {
return frame.getLocation();
}
public
void center() {
this.center = true;
}
public
Dimension getSize() {
return frame.getSize();
}
}

View File

@ -26,6 +26,19 @@
*
*
* MODIFIED BY DORKBOX
* Copyright 2015 dorkbox, llc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dorkbox.util.javafx;
@ -195,6 +208,8 @@ public class Wizard {
*/
public
Wizard(String title) {
stage.center();
stage.initModality(java.awt.Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
setTitle(title);
@ -656,8 +671,7 @@ public class Wizard {
.addAll(new KeyFrame(Duration.millis(200),
new KeyValue(stage.getOpacityProperty(), 0F, Interpolator.EASE_OUT)));
timeline.setOnFinished(event -> {
currentPage.ifPresent(currentPage -> {
timeline.setOnFinished(event -> currentPage.ifPresent(currentPage -> {
refreshCurrentPage(stage, currentPage);
SwingUtil.invokeAndWait(() -> SwingUtil.showOnSameScreenAsMouseCenter(stage.frame));
@ -668,17 +682,14 @@ public class Wizard {
.addAll(new KeyFrame(Duration.millis(500),
new KeyValue(stage.getOpacityProperty(), 1F, Interpolator.EASE_OUT)));
timeline2.play();
});
}
})
);
sequentialTransition.getChildren().add(timeline);
});
// only run this if we don't have a prev page, otherwise, we run this at the end of our animation
if (!prevPage.isPresent()) {
currentPage.ifPresent(currentPage -> {
refreshCurrentPage(stage, currentPage);
});
currentPage.ifPresent(currentPage -> refreshCurrentPage(stage, currentPage));
}
sequentialTransition.play();

View File

@ -1,7 +1,48 @@
/**
* Copyright (c) 2014, 2015 ControlsFX
* 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 ControlsFX, 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 CONTROLSFX 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.
*
*
* MODIFIED BY DORKBOX
* Copyright 2015 dorkbox, llc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dorkbox.util.javafx;
import dorkbox.util.JavaFxUtil;
import javafx.application.Platform;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;