Updated license info
This commit is contained in:
parent
01271e9e5d
commit
1607d0a087
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user