Giter VIP home page Giter VIP logo

jfxtras's Introduction

JFXtras

A supporting library for JavaFX, containing helper classes, extended layouts, controls and other interesting widgets. See the JFXtras website for more details and screen clips.

Project structure:

Root project 'jfxtras-parent'
+--- Module 'jfxtras-agenda'
+--- Module 'jfxtras-common'
+--- Module 'jfxtras-controls'
+--- Module 'jfxtras-font-roboto'
+--- Module 'jfxtras-fxml'
+--- Module 'jfxtras-gauge-linear'
+--- Module 'jfxtras-icalendaragenda'
+--- Module 'jfxtras-icalendarfx'
+--- Module 'jfxtras-menu'
+--- Module 'jfxtras-test-support'
\--- Module 'jfxtras-window'

How to use

The easiest way to use JFXtras is by using Maven or Gradle and access the Maven central repository.

The group-id is org.jfxtras, the artifact-id is the module name.

Maven:
<dependency>
  <groupId>org.jfxtras</groupId>
  <artifactId>jfxtras-controls</artifactId>
  <version>11-r1-SNAPSHOT</version>
</dependency>
Gradle:
compile group: 'org.jfxtras', name: 'jfxtras-controls', version: '11-r1-SNAPSHOT'

License

JFXtras uses the new BSD license

jfxtras's People

Contributors

aaabramov avatar aalmiray avatar bblonski avatar brian-at-sri avatar daviddbal avatar deanriverson avatar kris-kun avatar maxoudela avatar miho avatar mtnygard avatar olafxso avatar rladstaetter avatar samypr100 avatar tbee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jfxtras's Issues

Provide manifest headers to use JFXtras in OSGi environment

The OSGi headers does not affect regular, non-OSGi based build, while allows off-the-shelf use in OSGi environments. Gradle build system provides plugins for generation of OSGi headers thus the only concern would be to check whether all resource loading uses proper classloader.

Menu bar/content overlap.

The menu bar where the title and icons are, can interfere with the content.
Proposed solution is to make it so the content cannot overlap with the menu bar.

this was user error on my part, this can be closed.

LocalDatePicker and multiple selection

Hi, just continuing my bug report thread here since I think it's more appropriate than at StackExchange.
I tried the 8.0-r4-SNAPSHOT (from 01/30/2015) with scene builder and multiple selection on LocalDatePicker is still not functional for me.
Again, CalendarPicker works fine.

Fix Window with TableView

Right now TableView works very poorly with Window, resizing it can be unresponsive if TableView is highlighted, TableView looks wonky, etc.

CalendarTimePicker no hour step function

There is a secondStepProperty and minuteStepProperty inside CalendarTimePicker
but there is no such thing for hours...

Is it intentional missing? or just a oversight

because there is now for me no way to change the step of the hour slider

CSS Problem with CalendarTextField

When using the CalendarTextField the following exception is thrown:

SEVERE: The -fx-skin property has not been defined in CSS for ListSpinner[id=yearListSpinner, styleClass=ListSpinner] and createDefaultSkin() returned null.
Oct 09, 2014 4:48:05 PM javafx.scene.CssStyleHelper calculateValue
WARNING: Could not resolve '-fx-text-background-color' while resolving lookups for '-fx-text-fill' from rule '*.label' in stylesheet jar:file:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/lib/ext/jfxrt.jar!/com/sun/javafx/scene/control/skin/modena/modena.bss
Oct 09, 2014 4:48:05 PM javafx.scene.CssStyleHelper calculateValue

Code examples FXML:








Code example JAVA:
@FXML private CalendarTextField datePickerStart;

@Override
public void initialize(URL arg0, ResourceBundle arg1) {
    datePickerStart.setDateFormat(SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM,
            Locale.getDefault()));
    Calendar calendar = Calendar.getInstance();
    datePickerStart.setCalendar(calendar);

}

Few Questions

Hello everybody,
I really like the agenda control. It's very useful. But there are a few things I'm not sure how to achieve.

  • I don't want to render a day from 00:00 until 23:59, because I want to allow appointments only between 07:00 and 20:00 o'clock. So is there any possibility to do something like that?
  • I'm also interested in rendering not the whole week from Monday to Sunday, but Monday to Friday? Possible anyhow?
  • The last thing is, that I want to know if it's possible to drag and drop appointments into the agenda from Outside. E.g. I have a button and if it gets dragged, the user can place a appointment right where he drops the button. Is there a chance to do something like that?

BR Daniel

Edit:

  • I was now able to use some hacking with overriding the WeekSkin and changing the number of displayed dates from 7 to 5. But I guess some similiar thing won't work for the the TimeLine as there is no way to change the TimeScale24Hour Class without changing your sourcecode.

expose isXXXChanging properties on LocalDateTimePicker

I need to know when a user has chosen a new LocalDateTime, but not be notified of every intermediate LocalDateTime before the user dismisses the popup. It would be nice if a isChanging property were exposed like for sliders.

Can't put window outside of parent

It should be so then if you try to put the Window outside of the parent (usually a Pane) and let go of the left mouse button, it snaps back to the closest location.

This is so then the windows can't be lost outside of the project.

Window - apply default JavaFX Stylesheets

I'm finding it difficult to apply default JavaFX (Modena, Caspian) styles to the themable Window component. Is there a simply way to do this through the Window API, or by extension? I would prefer not to build out my own styles from scratch. Thanks in advance.

Graphical tests fail on Linux

There are the errors from building. Done on the last shadow commit you made in July.:
david@david-desktop:~/Documents/temp/jfxtras$ gradle build
:jfxtras-common:compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:jfxtras-common:compileRetrolambdaMain
:jfxtras-common:processResources UP-TO-DATE
:jfxtras-common:classes
:jfxtras-common:jar
:jfxtras-fxml:compileJava
Note: /home/david/Documents/temp/jfxtras/jfxtras-fxml/src/main/java/jfxtras/fxml/JFXtrasBuilderFactory.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:jfxtras-fxml:compileRetrolambdaMain
:jfxtras-fxml:processResources UP-TO-DATE
:jfxtras-fxml:classes
:jfxtras-fxml:jar
:jfxtras-controls:compileJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:jfxtras-controls:compileRetrolambdaMain
:jfxtras-controls:processResources
:jfxtras-controls:classes
:jfxtras-controls:jar
:jfxtras-agenda:compileJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:jfxtras-agenda:compileRetrolambdaMain
:jfxtras-agenda:processResources
:jfxtras-agenda:classes
:jfxtras-agenda:jar
:jfxtras-font-roboto:compileJava
:jfxtras-font-roboto:compileRetrolambdaMain
:jfxtras-font-roboto:processResources
:jfxtras-font-roboto:classes
:jfxtras-font-roboto:jar
:jfxtras-gauge-linear:compileJava
Note: /home/david/Documents/temp/jfxtras/jfxtras-gauge-linear/src/main/java/jfxtras/internal/scene/control/gauge/linear/skin/AbstractLinearGaugeSkin.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:jfxtras-gauge-linear:compileRetrolambdaMain
:jfxtras-gauge-linear:processResources
:jfxtras-gauge-linear:classes
:jfxtras-gauge-linear:jar
:jfxtras-menu:compileJava
:jfxtras-menu:compileRetrolambdaMain
:jfxtras-menu:processResources UP-TO-DATE
:jfxtras-menu:classes
:jfxtras-menu:jar
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:signArchives SKIPPED
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
:jfxtras-common:javadoc
javadoc: warning - --base-dir must be present for includes or file reference features to work properly.
WARN: tilt autoloading 'tilt/haml' in a non thread-safe way; explicit require 'tilt/haml' suggested.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/util/NodeUtil.java:213: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/util/NodeUtil.java:224: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/util/NodeUtil.java:254: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/util/NodeUtil.java:267: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/scene/layout/GridPane.java:106: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/scene/layout/GridPane.java:117: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/scene/layout/GridPane.java:128: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/scene/layout/GridPane.java:139: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/scene/layout/HBox.java:134: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/scene/layout/VBox.java:134: warning - @return tag has no arguments.
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/scene/layout/GenericLayoutConstraints.java:92: warning: no description for @param
* @param node
^
/home/david/Documents/temp/jfxtras/jfxtras-common/src/main/java/jfxtras/scene/layout/GenericLayoutConstraints.java:73: warning: no description for @param
* @param node
^
13 warnings
:jfxtras-fxml:javadoc
javadoc: warning - --base-dir must be present for includes or file reference features to work properly.
WARN: tilt autoloading 'tilt/haml' in a non thread-safe way; explicit require 'tilt/haml' suggested.
1 warning
:jfxtras-controls:javadoc
javadoc: warning - --base-dir must be present for includes or file reference features to work properly.
WARN: tilt autoloading 'tilt/haml' in a non thread-safe way; explicit require 'tilt/haml' suggested.
1 warning
:jfxtras-agenda:javadoc
javadoc: warning - --base-dir must be present for includes or file reference features to work properly.
WARN: tilt autoloading 'tilt/haml' in a non thread-safe way; explicit require 'tilt/haml' suggested.
/home/david/Documents/temp/jfxtras/jfxtras-agenda/src/main/java/jfxtras/scene/control/agenda/Agenda.java:542: warning - Tag @see: can't find setAppointmentGroup(AppointmentGroup) in jfxtras.scene.control.agenda.Agenda.AppointmentImplBase
/home/david/Documents/temp/jfxtras/jfxtras-agenda/src/main/java/jfxtras/scene/control/agenda/Agenda.java:542: warning - Tag @see: can't find setAppointmentGroup(AppointmentGroup) in jfxtras.scene.control.agenda.Agenda.AppointmentImplBase
3 warnings
:jfxtras-agenda:docJar
:jfxtras-agenda:sourcesJar
:jfxtras-agenda:signArchives SKIPPED
:jfxtras-agenda:assemble
:jfxtras-test-support:compileJava
Note: /home/david/Documents/temp/jfxtras/jfxtras-test-support/src/main/java/jfxtras/test/TestUtil.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:jfxtras-test-support:compileRetrolambdaMain
:jfxtras-test-support:processResources UP-TO-DATE
:jfxtras-test-support:classes
:jfxtras-test-support:jar
:jfxtras-agenda:compileTestJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:jfxtras-agenda:compileRetrolambdaTest
:jfxtras-agenda:processTestResources
:jfxtras-agenda:testClasses
:jfxtras-agenda:test

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderRegularSpanningAppointment FAILED
java.lang.AssertionError at AgendaRenderTest.java:301

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderOverlappingAppointments FAILED
java.lang.AssertionError at AgendaRenderTest.java:361

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderWholeDayAppointmentLocalDate FAILED
java.lang.AssertionError at AgendaRenderTest.java:195

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderRegularAppointmentOffset FAILED
java.lang.AssertionError at AgendaRenderTest.java:232

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderTwoConsequetiveRegularAppointment FAILED
java.lang.AssertionError at AgendaRenderTest.java:110

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderRegularAppointment FAILED
java.lang.AssertionError at AgendaRenderTest.java:86

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderRegularAppointmentCalendar FAILED
java.lang.AssertionError at AgendaRenderTest.java:157

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderWholeDayAppointment FAILED
java.lang.AssertionError at AgendaRenderTest.java:329

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderWholeDayAppointmentHijrahDate FAILED
java.lang.AssertionError at AgendaRenderTest.java:214

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderRegularAppointmentDaySkin FAILED
java.lang.AssertionError at AgendaRenderTest.java:279

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderRegularAppointmentZoned FAILED
java.lang.AssertionError at AgendaRenderTest.java:177

jfxtras.scene.control.agenda.test.AgendaRenderTest > renderRegularAppointmentInstant FAILED
java.lang.AssertionError at AgendaRenderTest.java:258

jfxtras.scene.control.agenda.test.AgendaMenuTest > toggleWholedayInMenu FAILED
java.lang.AssertionError at AgendaMenuTest.java:161

55 tests completed, 13 failed
:jfxtras-agenda:test FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':jfxtras-agenda:test'.

    There were failing tests. See the report at: file:///home/david/Documents/temp/jfxtras/jfxtras-agenda/build/reports/tests/index.html

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 52.28 secs

Compile error in Agenda.java

Environment:

  • JDK 1.8 update 40
  • Mint Rebecca

Error compiling jfxtras-agenda, in Agenda.java:

 error: getUserAgentStylesheet() in Agenda cannot override getUserAgentStylesheet() in Region
    @Override protected String getUserAgentStylesheet()

Cannot build due to javadoc error

Here is the error I am getting:

:jfxtras-common:javadoc
javadoc: warning - --base-dir must be present for includes or file reference features to work properly.
javadoc: error - In doclet class org.asciidoctor.Asciidoclet, method start has thrown an exception java.lang.reflect.InvocationTargetException
org.jruby.exceptions.RaiseException: (Errno::ENOENT) /home/jeyveen/.gem/jruby/1.9
at org.jruby.RubyFileTest.file?(org/jruby/RubyFileTest.java:131)
at RUBY.dirs(/home/jeyveen/.gradle/caches/modules-2/files-2.1/org.jruby/jruby-complete/1.7.16.1/b76682bd0966a31dab60dc5e275d8b28ac17c38f/jruby-complete-1.7.16.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/defaults/jruby.rb:83)
at org.jruby.RubyArray.collect(org/jruby/RubyArray.java:2407)
at RUBY.dirs(/home/jeyveen/.gradle/caches/modules-2/files-2.1/org.jruby/jruby-complete/1.7.16.1/b76682bd0966a31dab60dc5e275d8b28ac17c38f/jruby-complete-1.7.16.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/defaults/jruby.rb:82)
at RUBY.stubs(/home/jeyveen/.gradle/caches/modules-2/files-2.1/org.jruby/jruby-complete/1.7.16.1/b76682bd0966a31dab60dc5e275d8b28ac17c38f/jruby-complete-1.7.16.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:705)
at RUBY.find_inactive_by_path(/home/jeyveen/.gradle/caches/modules-2/files-2.1/org.jruby/jruby-complete/1.7.16.1/b76682bd0966a31dab60dc5e275d8b28ac17c38f/jruby-complete-1.7.16.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:897)
at RUBY.try_activate(/home/jeyveen/.gradle/caches/modules-2/files-2.1/org.jruby/jruby-complete/1.7.16.1/b76682bd0966a31dab60dc5e275d8b28ac17c38f/jruby-complete-1.7.16.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems.rb:183)
at RUBY.require(/home/jeyveen/.gradle/caches/modules-2/files-2.1/org.jruby/jruby-complete/1.7.16.1/b76682bd0966a31dab60dc5e275d8b28ac17c38f/jruby-complete-1.7.16.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:132)
at RUBY.(root)(<script>:9)
1 error
1 warning
:jfxtras-common:javadoc FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':jfxtras-common:javadoc'.

    Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/home/jeyveen/jfxtras-8.0/jfxtras-common/build/tmp/javadoc/javadoc.options'

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 11.402 secs

Needs a newer estable versiรณn of jfxtras

Well, this is not an issue, it is just more like a release of a new stable version that supports jdk 8u40.

I had updated all my old code to 8u40 but the release of jfxtras r3 from October of last year, has issues to display some controls.

Thanks a lot.

TestFX upgrade

Hi,

I'm wondering if we could try to upgrade the TestFX version to at least 4.0 ? Or is there any reasons we should not?

My keyboard is in French, and each time I run the JFXtras tests, the tests are failing because I need to put my keyboard in QWERTY otherwise the input are wrong. Also my mouse settings are put back to default.

These issues are currently fixed from 4.0 TestFX version. Also, the tests can be ran in HeadLess mode which is very nice because you can actually do something else when the tests are running (and you even can run them in a device that hasn't any screen).

Honestly, I don't know the amount of work to do the migration, but since I'm using TestFX 4.0 in my application, I think I can do it without too much difficulty..

DisabledCalendar not working with LocalDateTextField

Run this sample program that dynamically disabled all visible Calendars when a range is displayed :

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.util.Callback;

/**
 *
 * @author samir.hadzic
 */
public class Test extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {

        BorderPane pane = new BorderPane();
        LocalDateTextField field = new LocalDateTextField();
        field.setLocalDateRangeCallback(new Callback<LocalDatePicker.LocalDateRange, Void>() {

            @Override
            public Void call(LocalDatePicker.LocalDateRange param) {
                field.disabledLocalDates().clear();
                List<LocalDate> list = new ArrayList<>();
                for (LocalDate current = param.getStartLocalDate(); current.compareTo(param.getEndLocalDate()) <= 0; current = current.plusDays(1)) {
                    list.add(current);
                }
                field.disabledLocalDates().addAll(list);

                return null;
            }
        });
        pane.setCenter(field);

        Scene scene = new Scene(pane);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

The reason is that the LocalDateTextFieldSkin is syncing its disabledCalendars with the CalendarTextField. BUT there is not syncing between the CalendarTextField and the CalendarPicker displayed. The disabledCalendar are only added to CalendarPicker when the popup is shown. Therefore, if you add some disabledCalendars after the popup is shown, it will not be considered.

My advice would be to refactor all these classes in order to factorize all these properties in order to avoid syncing all List between each components. It will be simpler, faster and more efficient.

8.0-r4-SNAPSHOT in mavem ?

when will be the release of the 8.0-r4-SNAPSHOT in mavem ?, because this simple example with this version

TextField tooltip cannot be removed

Hi,

In the code, we currently have that :

if (getSkinnable().getTooltip() == null)
		{
			// TODO: internationalize the tooltip
			getSkinnable().setTooltip(new Tooltip("Type a date or use # for today, or +/-<number>[d|w|m|y] for delta's (for example: -3m for minus 3 months)\nUse cursor up and down plus optional shift (week), ctrl (month) or alt (year) for quick keyboard changes."));
		}

I want to display a CalendarTextField where no tooltip is displayed on the TextField. Currently, if I do not set any tooltip, the one above will be set. If I set an empty Tooltip, an empty tooltip will be shown..

We should find a way to allow the user to completely remove the tooltip if he wants to. Currently I do not see a clear solution..

Compile Error on icalendaragenda on Windows.

Issue 1

Requested project: C:****\jfxtras\jfxtras-icalendaragenda

Stack trace:
org.gradle.tooling.BuildException: Could not execute build using Gradle distribution 'https://services.gradle.org/distributions/gradle-2.12-bin.zip'.
at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:59)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:57)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:72)
at org.netbeans.gradle.project.tasks.AsyncGradleTask.runBuild(AsyncGradleTask.java:369)
at org.netbeans.gradle.project.tasks.AsyncGradleTask.doGradleTasksWithProgressIgnoreTaskDefCancel(AsyncGradleTask.java:492)
at org.netbeans.gradle.project.tasks.AsyncGradleTask.doGradleTasksWithProgressIgnoreTaskDefCancel(AsyncGradleTask.java:402)
at org.netbeans.gradle.project.tasks.AsyncGradleTask.doGradleTasksWithProgress(AsyncGradleTask.java:393)
at org.netbeans.gradle.project.tasks.AsyncGradleTask.access$400(AsyncGradleTask.java:84)
at org.netbeans.gradle.project.tasks.AsyncGradleTask$BuildExecutionItem$1.run(AsyncGradleTask.java:775)
at org.netbeans.gradle.project.tasks.GradleDaemonManager.runNonBlockingGradleTask(GradleDaemonManager.java:36)
at org.netbeans.gradle.project.tasks.GradleDaemonManager.access$100(GradleDaemonManager.java:23)
at org.netbeans.gradle.project.tasks.GradleDaemonManager$2.execute(GradleDaemonManager.java:126)
at org.jtrim.concurrent.AbstractTaskExecutorService$FunctionWrapper.execute(AbstractTaskExecutorService.java:270)
at org.jtrim.concurrent.AbstractTaskExecutorService$TaskOfAbstractExecutor.execute(AbstractTaskExecutorService.java:340)
at org.jtrim.concurrent.Tasks$RunOnceCancelableTask.execute(Tasks.java:342)
at org.jtrim.concurrent.ThreadPoolTaskExecutor$ThreadPoolTaskExecutorImpl$QueuedItem.runTask(ThreadPoolTaskExecutor.java:1213)
at org.jtrim.concurrent.ThreadPoolTaskExecutor$ThreadPoolTaskExecutorImpl$Worker.executeTask(ThreadPoolTaskExecutor.java:1049)
at org.jtrim.concurrent.ThreadPoolTaskExecutor$ThreadPoolTaskExecutorImpl$Worker.run(ThreadPoolTaskExecutor.java:1179)
at org.jtrim.concurrent.ThreadPoolTaskExecutor$ThreadPoolTaskExecutorImpl$Worker$1.run(ThreadPoolTaskExecutor.java:998)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':jfxtras-icalendaragenda:compileJava'.
at org.gradle.initialization.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:74)
at org.gradle.initialization.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:47)
at org.gradle.initialization.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:30)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:101)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:45)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':jfxtras-icalendaragenda:compileJava'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
... 42 more
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:48)
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:33)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:104)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:53)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)
at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:35)
at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:25)
at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:163)
at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:145)
at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:93)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:244)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:231)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 70 more

TEST FAILED

Hi,

I am new to JAVA and I want to try jfxtras. I downloaded jfxras and I followed the instruction for Windows CMD, "gradlew assemble." and I got the build successful. Now, I did "gredlew build" and I got all 13 tests failed. I tried it on netbeans and got the same errors.
I am using Windows 10, gradle 2.13 and jdk1.8.0_91.
I've also set JAVA6_HOME to jdk1.6.0_45 and JAVA_HOME to jdk1.7.0_79.

Again, I am new to all this and have no idea. I really appreciate it if somebody can help me.

Thanks,

testfailed.txt

Set id for Layout in ResponsivePane

How do I set an id for Layouts?

My FXML:

<ResponsivePane debug="true" prefHeight="900.0" prefWidth="1600.0" trace="false" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
    <reusableNodes>
        <Label id="label" text="refLabel" />
        <Button id="button" text="refButton" />
    </reusableNodes>
    
    <layouts>
        <Layout sizeAtLeast="3.0in">
            <VBox>
                <Ref to="label" />
                <Label text="layout_3.0" />
            </VBox>
        </Layout>
         
        <Layout sizeAtLeast="width:20cm">
            <HBox>
                <Ref id="labelid" to="label" />
                <Ref to="button" />
                <Label text="layout_width3.0" />
            </HBox>
        </Layout>     
         
        <Layout sizeAtLeast="width:40cm">
            <BorderPane fx:id="borderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="900.0" prefWidth="1600.0" styleClass="background">
                <center>
                    <AnchorPane fx:id="ilustrationAnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" BorderPane.alignment="CENTER_RIGHT">
                        <children>
                            <ImageView fitHeight="900.0" fitWidth="1315.0" layoutX="180.0" pickOnBounds="true" scaleX="1.2" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                                <image>
                                    <Image url="@../img/dashboard/dashboard.png" />
                                </image>
                            </ImageView>
                            <Button fx:id="minimizeButton" layoutX="1243.0" layoutY="12.0" mnemonicParsing="false" onAction="#performMinimizeWindow" styleClass="button-action--minimize" AnchorPane.rightAnchor="46.0" AnchorPane.topAnchor="10.0" />
                            <Button fx:id="closeButton" layoutX="1278.0" layoutY="12.0" mnemonicParsing="false" onAction="#performCloseWindow" styleClass="button-action--close" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0" />
                        </children>
                        <BorderPane.margin>
                            <Insets />
                        </BorderPane.margin>
                    </AnchorPane>
                </center>
                <left>
                </left>
                <left>
                    <AnchorPane fx:id="leftAnchorPane" prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: #334455;" BorderPane.alignment="CENTER" />
                </left>
            </BorderPane>
        </Layout>     
    </layouts>
     
    <sceneStylesheets>
        <Stylesheet sizeAtLeast="3.0in">  
            <URL value="@../styles/controller/res1024/Dashboard.css" /> 
        </Stylesheet>
        <Stylesheet sizeAtLeast="width:20cm"> 
            <URL value="@../styles/controller/res1280/Dashboard.css" /> 
        </Stylesheet>
        <Stylesheet sizeAtLeast="width:40cm"> 
            <URL value="@../styles/controller/res1600/Dashboard.css" /> 
        </Stylesheet>
    </sceneStylesheets>
</ResponsivePane>

I got null for borderPane in Class:

@FXML
   private BorderPane borderPane;

ListSpinner arrow direction

EDIT: This issue can be disregarded. Initially, I could not find the support for up/down ListSpinners which seemed to exist in past JavaFX 2.2 versions of Jfxtras.

However, after closer examination of the current Jfxtras APIs, I found the support that I was seeking in the ListSpinnerSkin class.

Week end highlight can be wrong

Hi,

In the Calendar, the weekend days are highlighted. If you look at CalendarPickerMonthlySkinAbstract, you will have that :

/**
     * check if a certain weekday name is a certain day-of-the-week
     */
    protected boolean isWeekdayWeekend(int idx) 
    {
        return (isWeekday(idx, java.util.Calendar.SATURDAY) || isWeekday(idx, java.util.Calendar.SUNDAY));
    }

But if your Calendar is set at Israel Locale, the week end is the friday and saturday. Therefore, the highlight is no good.

I've seen this issue in StackOverflow, https://stackoverflow.com/questions/17927854/how-to-check-if-a-certain-date-is-a-weekend-taking-into-account-the-current-loca.

A guy coded this solution quickly :

private static final List<String> sunWeekendDaysCountries = Arrays.asList(new String[]{"GQ", "IN", "TH", "UG"});
private static final List<String> fryWeekendDaysCountries = Arrays.asList(new String[]{"DJ", "IR"});
private static final List<String> frySunWeekendDaysCountries = Arrays.asList(new String[]{"BN"});
private static final List<String> thuFryWeekendDaysCountries = Arrays.asList(new String[]{"AF"});
private static final List<String> frySatWeekendDaysCountries = Arrays.asList(new String[]{"AE", "DZ", "BH", "BD", "EG", "IQ", "IL", "JO", "KW", "LY", "MV", "MR", "OM", "PS", "QA", "SA", "SD", "SY", "YE"});

public static int[] getWeekendDays(Locale locale) {
    if (thuFryWeekendDaysCountries.contains(locale.getCountry())) {
        return new int[]{Calendar.THURSDAY, Calendar.FRIDAY};
    }
    else if (frySunWeekendDaysCountries.contains(locale.getCountry())) {
        return new int[]{Calendar.FRIDAY, Calendar.SUNDAY};
    }
    else if (fryWeekendDaysCountries.contains(locale.getCountry())) {
        return new int[]{Calendar.FRIDAY};
    }
    else if (sunWeekendDaysCountries.contains(locale.getCountry())) {
        return new int[]{Calendar.SUNDAY};
    }
    else if (frySatWeekendDaysCountries.contains(locale.getCountry())) {
        return new int[]{Calendar.FRIDAY, Calendar.SATURDAY};
    }
    else {
        return new int[]{Calendar.SATURDAY, Calendar.SUNDAY};
    }
}

What do you think?

Can't include in Project

I'm trying to link to the project with gradle, like below. However, I get this error
``

dependencies {
compile files('src/jsoup-1.8.3.jar')
compile files('src/pdfbox-app-2.0.0-RC2.jar')
compile (group: 'org.jfxtras', name: 'jfxtras-agenda', version: '8.0-r1-SNAPSHOT')
}

Javadocs do not include css components

When trying to style the components in JFXtras, it is a hit and miss since it seems the components have sub-components. Example is the BigDecimalField. To round the corners and add a drop-shadow I needed to have my css show the following. The class name was guess as was the sub-components; however, I still have a residual sharp corner on the buttons.

// Big Decimal Field
.big-decimal-field{
    -fx-effect: dropshadow(one-pass-box, grey, 10, .4, 2, 2);
    -fx-background-radius: 10 10 10 10;
}
.big-decimal-field .text-field {
    -fx-background-radius: 10 0 0 10;
}
.big-decimal-field .button {
    -fx-background-radius: 10 0 0 10;
}

On your next build, please have the JavaDocs updated to reflect the required css classes to modify your elements (example http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#textarea although they are missing the ..scroll-pane .viewport)

CalendarTimePicker has transparent background

With jfxtras-8.0-r3 & JDK8u60 on OSX and Windows. See linked screenshot. Usage is via FXML with no additional settings

<LocalDateTimeTextField fx:id="roundStartTime" style="-fx-background-color: white;" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="4" />

Tried to find some way to tweak the background color using CSS to no avail. Any clues on how to fix this?

jfxtras

Printing agenda width doesn't fit

Hi,

When printing from the agenda, it seems that the width doesn't fit when using AgendaWeekSkin and AgendaDaysFromDisplayedSkin.
Indeed, when using both of these skins, the width of the agenda doesn't fit the page layout of the print job and the last day of the agenda isn't displayed as showed in the attached images (taken from the JFXTras 8.0 Samples).

week view (saturday missing)
week view (saturday missing)
dynamic view (8 days, saturday missing)
dynamic view (8 days, saturday missing)

ListSpinnerIntegerList.indexOf( size ) doesn't return -1

Is that intended?

Because this:

public void start(Stage primaryStage) {
    StackPane root = new StackPane();
    ListSpinner<Integer> spinner = new ListSpinner<>(new ListSpinnerIntegerList(0, 59)).withEditable(true).withStringConverter(StringConverterFactory.forInteger());
    ListSpinnerIntegerList list = new ListSpinnerIntegerList(0, 59);
    System.out.println(list.indexOf(59));
    System.out.println(list.indexOf(60));
    System.out.println(list.indexOf(61));
    System.out.println(list.size());
    root.getChildren().add(spinner);
    primaryStage.setScene(new Scene(root, 300, 250));
    primaryStage.show();
}

Outputs:
59
60
-1
60

And if you introduce 60 in the ListSpinner textfield it throws:
java.lang.IllegalArgumentException: Index out of bounds: 60, valid values are 0-59
(any other invalid value just puts last value back, as expected)

I'm using jfxtras-controls-8.0.r3.jar downloaded directly from the Maven repo.

concurrent modification exception the first time the picker popup is opened from LocalDateTimeTextfield

here is the stack trace

java.util.ConcurrentModificationException
at java.util.WeakHashMap$HashIterator.nextEntry(WeakHashMap.java:806)
at java.util.WeakHashMap$KeyIterator.next(WeakHashMap.java:839)
at com.sun.javafx.css.StyleManager.userAgentStylesheetsChanged(StyleManager.java:1334)
at com.sun.javafx.css.StyleManager.addUserAgentStylesheet(StyleManager.java:1168)
at com.sun.javafx.css.StyleManager.addUserAgentStylesheet(StyleManager.java:1130)
at javafx.scene.control.Control.impl_processCSS(Control.java:882)
at javafx.scene.Parent.impl_processCSS(Parent.java:1270)
at javafx.scene.Parent.impl_processCSS(Parent.java:1270)
at javafx.scene.Node.processCSS(Node.java:8822)
at javafx.scene.Scene.doCSSPass(Scene.java:523)
at javafx.scene.Scene.preferredSize(Scene.java:1604)
at javafx.scene.Scene.impl_preferredSize(Scene.java:1681)
at javafx.stage.Window$9.invalidated(Window.java:753)
at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:109)
at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:143)
at javafx.stage.Window.setShowing(Window.java:829)
at javafx.stage.Window.show(Window.java:844)
at javafx.stage.PopupWindow.showImpl(PopupWindow.java:443)
at javafx.stage.PopupWindow.show(PopupWindow.java:391)
at jfxtras.internal.scene.control.skin.CalendarTextFieldSkin.showPopup(CalendarTextFieldSkin.java:426)
at jfxtras.internal.scene.control.skin.CalendarTextFieldSkin.lambda$createNodes$22(CalendarTextFieldSkin.java:188)
at jfxtras.internal.scene.control.skin.CalendarTextFieldSkin$$Lambda$462/22264819.handle(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3432)
at javafx.scene.Scene$ClickGenerator.access$8100(Scene.java:3360)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3728)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3447)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1723)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2456)
at com.sun.javafx.tk.quantum.EmbeddedScene.lambda$null$266(EmbeddedScene.java:250)
at com.sun.javafx.tk.quantum.EmbeddedScene$$Lambda$556/26073636.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.EmbeddedScene.lambda$mouseEvent$267(EmbeddedScene.java:238)
at com.sun.javafx.tk.quantum.EmbeddedScene$$Lambda$195/18066906.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$148(PlatformImpl.java:288)
at com.sun.javafx.application.PlatformImpl$$Lambda$62/27023284.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$149(PlatformImpl.java:287)
at com.sun.javafx.application.PlatformImpl$$Lambda$61/12027038.run(Unknown Source)
[catch] at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$126(WinApplication.java:102)
at com.sun.glass.ui.win.WinApplication$$Lambda$52/3748619.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)

CheckComboBox Does Not Appear to Load FXML data as Expected

If you populate a CheckComboBox with sample data in FXML as you would a ComboBox it treats it as a single item.

                    <CheckComboBox fx:id="checkComboBoxRepeatDays" prefHeight="25.0" prefWidth="158.0" >
                        <items>
                            <FXCollections fx:factory="observableArrayList">
                                <String fx:value="All" />
                                <String fx:value="Sunday" />
                                <String fx:value="Monday" />
                                <String fx:value="Tuesday" />
                                <String fx:value="Wednesday" />
                                <String fx:value="Thursday" />
                                <String fx:value="Friday" />
                                <String fx:value="Saturday" />
                            </FXCollections>
                        </items> 
                    </CheckComboBox>

checkcombobox

A quick switch to combo box object yields the expected result:

combobox

CalendarTimeTextField drop with timeZone

Hi,

Your lib is great, nice job

But, i create a CalendarTimtextField with a format and a timezone.

with this code :

final CalendarTimeTextField lCalendarTimePicker = new CalendarTimeTextField();
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
lCalendarTimePicker.setDateFormat(timeFormat);

and the drop combo don't display the first slider for the hours.

datepickerdrop

Radial Gauge using large amount of memory

I have noticed that memory usage for radial gauges increases every time the setValue() method is called. I have a project that I can upload showing this issue if that will help.

The code I use for adding the gauge to my application is very similar to ensemble.

Popup not showing properly

Hi guys,

I have an issue with the LocalDateTextField (and others that uses the Textfield).

Basically, I'm adding the LocalDateTextField into a cell of a SpreadsheetView (of ControlsFX - like a TableView). And I want to show directly the popup. But since the TextField has not been shown somehow, its height is not set.
Therefore the code in CalendarTextFieldSkin :
popup.show(textField, NodeUtil.screenX(getSkinnable()), NodeUtil.screenY(getSkinnable()) + textField.getHeight());

is wrong and the popup is shown above the TextField.

I don't have a sample test case to reproduce it unfortunately. My solution consists of preventing that case by looking to the real height if necessary like that :
double height = textField.getHeight() == 0.0 ? textField.prefHeight(-1): textField.getHeight();

I can provide a pull request if you want.

Compile error on icalendaragenda on Linux.

Compile error on icalendaragenda on linux. The errors involve generics being typed only to Object. Oddly, these errors are not found on Jenkins or Windows builds. Also, if same code is put inside the icalendarfx package it compiles. Errors don't exist in Eclipse either (on Linux). This evidence suggests Gradle isn't property connecting the iCalendarFx dependency for iCalendarAgenda.

Something wrong with build.gradle?

david@david-desktop:~/workspace/jfxtras$ gradle :jfxtras-icalendaragenda:build
:jfxtras-common:compileJava UP-TO-DATE
:jfxtras-common:compileRetrolambdaMain UP-TO-DATE
:jfxtras-common:processResources UP-TO-DATE
:jfxtras-common:classes UP-TO-DATE
:jfxtras-common:jar UP-TO-DATE
:jfxtras-fxml:compileJava UP-TO-DATE
:jfxtras-fxml:compileRetrolambdaMain UP-TO-DATE
:jfxtras-fxml:processResources UP-TO-DATE
:jfxtras-fxml:classes UP-TO-DATE
:jfxtras-fxml:jar UP-TO-DATE
:jfxtras-controls:compileJava UP-TO-DATE
:jfxtras-controls:compileRetrolambdaMain UP-TO-DATE
:jfxtras-controls:processResources UP-TO-DATE
:jfxtras-controls:classes UP-TO-DATE
:jfxtras-controls:jar UP-TO-DATE
:jfxtras-agenda:compileJava UP-TO-DATE
:jfxtras-agenda:compileRetrolambdaMain UP-TO-DATE
:jfxtras-agenda:processResources UP-TO-DATE
:jfxtras-agenda:classes UP-TO-DATE
:jfxtras-agenda:jar UP-TO-DATE
:jfxtras-common:javadoc UP-TO-DATE
:jfxtras-fxml:javadoc UP-TO-DATE
:jfxtras-controls:javadoc UP-TO-DATE
:jfxtras-agenda:javadoc UP-TO-DATE
:jfxtras-icalendarfx:compileJava UP-TO-DATE
:jfxtras-icalendarfx:compileRetrolambdaMain UP-TO-DATE
:jfxtras-icalendarfx:processResources UP-TO-DATE
:jfxtras-icalendarfx:classes UP-TO-DATE
:jfxtras-icalendarfx:jar UP-TO-DATE
:jfxtras-icalendaragenda:compileJava UP-TO-DATE
:jfxtras-icalendaragenda:compileRetrolambdaMain UP-TO-DATE
:jfxtras-icalendaragenda:processResources UP-TO-DATE
:jfxtras-icalendaragenda:classes UP-TO-DATE
:jfxtras-icalendarfx:javadoc UP-TO-DATE
:jfxtras-icalendaragenda:javadoc UP-TO-DATE
:jfxtras-icalendaragenda:docJar UP-TO-DATE
:jfxtras-icalendaragenda:jar UP-TO-DATE
:jfxtras-icalendaragenda:sourcesJar UP-TO-DATE
:jfxtras-icalendaragenda:signArchives SKIPPED
:jfxtras-icalendaragenda:assemble UP-TO-DATE
:jfxtras-test-support:compileJava UP-TO-DATE
:jfxtras-test-support:compileRetrolambdaMain UP-TO-DATE
:jfxtras-test-support:processResources UP-TO-DATE
:jfxtras-test-support:classes UP-TO-DATE
:jfxtras-test-support:jar UP-TO-DATE
:jfxtras-icalendaragenda:compileTestJava
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/internal/scene/control/skin/agenda/icalendar/base24hour/popup/PopupReviseAllTest.java:167: error: cannot find symbol
.withSummary("new summary")
^
symbol: method withSummary(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/internal/scene/control/skin/agenda/icalendar/base24hour/popup/PopupReviseAllTest.java:288: error: cannot find symbol
.withSequence(1);
^
symbol: method withSequence(int)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/internal/scene/control/skin/agenda/icalendar/base24hour/popup/PopupReviseAllTest.java:340: error: cannot find symbol
.withRecurrenceRule("FREQ=MONTHLY;BYDAY=3SU")
^
symbol: method withRecurrenceRule(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/internal/scene/control/skin/agenda/icalendar/base24hour/popup/PopupReviseAllTest.java:379: error: cannot find symbol
.withSequence(1);
^
symbol: method withSequence(int)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/internal/scene/control/skin/agenda/icalendar/base24hour/popup/PopupReviseAllTest.java:495: error: cannot find symbol
.withDateTimeStamp("20150110T080000Z")
^
symbol: method withDateTimeStamp(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/internal/scene/control/skin/agenda/icalendar/base24hour/popup/PopupReviseAllTest.java:547: error: incompatible types: Object cannot be converted to VEvent
.withRecurrenceRule(new RecurrenceRule2()
^
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/internal/scene/control/skin/agenda/icalendar/base24hour/popup/VJournalMakeiTIPTest.java:42: error: cannot find symbol
.withDateTimeStamp("20160518T232502Z")
^
symbol: method withDateTimeStamp(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/internal/scene/control/skin/agenda/icalendar/base24hour/popup/VTodoMakeiTIPTest.java:43: error: cannot find symbol
.withSummary("test todo")
^
symbol: method withSummary(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:34: error: cannot find symbol
.withUniqueIdentifier("[email protected]")
^
symbol: method withUniqueIdentifier(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:47: error: incompatible types: Object cannot be converted to VEvent
.withRecurrenceRule(new RecurrenceRule2()
^
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:57: error: cannot find symbol
.withUniqueIdentifier("[email protected]")
^
symbol: method withUniqueIdentifier(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:70: error: incompatible types: Object cannot be converted to VEvent
.withRecurrenceRule(new RecurrenceRule2()
^
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:80: error: cannot find symbol
.withDescription("Weekly1 Description")
^
symbol: method withDescription(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:96: error: cannot find symbol
.withUniqueIdentifier("[email protected]")
^
symbol: method withUniqueIdentifier(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:117: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 11, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:135: error: cannot find symbol
.withDescription("Daily1 Description")
^
symbol: method withDescription(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:152: error: cannot find symbol
.withDescription("Daily2 Description")
^
symbol: method withDescription(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:170: error: cannot find symbol
.withDescription("Daily6 Description")
^
symbol: method withDescription(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:187: error: cannot find symbol
.withDescription("Individual Description")
^
symbol: method withDescription(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:201: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 1, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:212: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 1, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:235: error: cannot find symbol
.withDateTimeStart(LocalDate.of(2015, 11, 8))
^
symbol: method withDateTimeStart(LocalDate)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:251: error: cannot find symbol
.withDateTimeStart(LocalDate.of(2015, 11, 8))
^
symbol: method withDateTimeStart(LocalDate)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/ICalendarStaticComponents.java:266: error: cannot find symbol
.withDateTimeStart(LocalDate.of(2015, 11, 8))
^
symbol: method withDateTimeStart(LocalDate)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/deletor/DeleteOneTest.java:74: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2016, 5, 17, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/deletor/DeleteAllTest.java:75: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2016, 5, 17, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/revisor/ReviseThisAndFutureTest.java:119: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2016, 5, 17, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/revisor/ReviseThisAndFutureTest.java:203: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2015, 12, 25, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/revisor/ReviseThisAndFutureTest.java:212: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2016, 5, 17, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/revisor/ReviseAllTest.java:236: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2016, 5, 17, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/revisor/ReviseAllTest.java:244: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2016, 5, 19, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/revisor/ReviseAllTest.java:329: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2016, 5, 17, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/editors/revisor/ReviseAllTest.java:337: error: cannot find symbol
.withRecurrenceId(LocalDateTime.of(2016, 5, 19, 10, 0))
^
symbol: method withRecurrenceId(LocalDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/RenderVEventsTest.java:231: error: cannot find symbol
.withDateTimeStamp(LocalDateTime.now().atZone(ZoneId.of("Z")))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/MakeNewVEventsTest.java:47: error: cannot find symbol
.withCategories("group10")
^
symbol: method withCategories(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/MakeNewVEventsTest.java:102: error: cannot find symbol
.withCategories("group00")
^
symbol: method withCategories(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/MakeNewVEventsTest.java:133: error: cannot find symbol
.withCategories("group00")
^
symbol: method withCategories(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/MakeNewVEventsTest.java:167: error: cannot find symbol
.withCategories("group00")
^
symbol: method withCategories(String)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/GraphicallyChangeTest.java:112: error: cannot find symbol
.withDateTimeStamp(new DateTimeStamp(editedVEvent1.getDateTimeStamp())) // copy DTSTAMP, because it depends on current date/time
^
symbol: method withDateTimeStamp(DateTimeStamp)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/GraphicallyChangeTest.java:165: error: cannot find symbol
.withSequence(1);
^
symbol: method withSequence(int)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/GraphicallyChangeTest.java:213: error: cannot find symbol
.withSequence(1);
^
symbol: method withSequence(int)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/GraphicallyChangeTest.java:221: error: cannot find symbol
.withDateTimeStamp(new DateTimeStamp(editedVEvent1.getDateTimeStamp())) // copy DTSTAMP, because it depends on current date/time
^
symbol: method withDateTimeStamp(DateTimeStamp)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/agenda/RevisePopupTest.java:71: error: cannot find symbol
.withDateTimeStamp(new DateTimeStamp(vComponentIndividual.getDateTimeStamp()))
^
symbol: method withDateTimeStamp(DateTimeStamp)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/misc/MakeAppointmentsTest.java:84: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 11, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/misc/MakeAppointmentsTest.java:128: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 1, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/trial/DemoTest.java:25: error: no suitable method found for add(Object)
agenda.getVCalendar().getVEvents().add(ICalendarStaticComponents.getDaily1()
^
method Collection.add(VEvent) is not applicable
(argument mismatch; Object cannot be converted to VEvent)
method List.add(VEvent) is not applicable
(argument mismatch; Object cannot be converted to VEvent)
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/trial/controller/CalendarController.java:124: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 11, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/trial/controller/CalendarController.java:136: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 11, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/trial/controller/CalendarController.java:151: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 11, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/trial/controller/CalendarController.java:166: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 1, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/trial/controller/CalendarController.java:180: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 1, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/trial/controller/CalendarController.java:193: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 1, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
/home/david/workspace/jfxtras/jfxtras-icalendaragenda/src/test/java/jfxtras/scene/control/agenda/icalendar/trial/controller/CalendarController.java:208: error: cannot find symbol
.withDateTimeStamp(ZonedDateTime.of(LocalDateTime.of(2015, 1, 10, 8, 0), ZoneOffset.UTC))
^
symbol: method withDateTimeStamp(ZonedDateTime)
location: class Object
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
53 errors
:jfxtras-icalendaragenda:compileTestJava FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':jfxtras-icalendaragenda:compileTestJava'.

    Compilation failed; see the compiler error output for details.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.217 secs

Persistent promptText

The prompt text implemented by JavaFX (As in Java 8) is invisible when a TextField has the focus. It may be good or bad in certain situation, but it's that way.

Now suppose you have an application with several CalendartextField one below each other. And you have to type some dates with the keyBoard. But these calendars have their own Date formatter.
So one will want "DD/MM/YYYY" as input, the other will want "MM/DD/YYYY" for example. (Yes this can happens in you have different Locale...)

So you put the format into the promptText, but each time the user goes to one Calendar to another, the prompt Text is gone because of JavaFX default implementation! So the user is like "what should I type?".

I've looked over and find this solution here : https://stackoverflow.com/questions/25125563/clear-prompt-text-in-javafx-textfield-only-when-user-starts-typing
I can put this solution on my application easily because I only need to modify the CSS. But I'm wondering if this behavior should not be implemented by default on JFXtras textfield.

TextProperty of CalendarTextField is not updated

The documentation on the textProperty is a bit light so we don't really know what's intended.

From what I understood, it should reflect the textProperty of the TextField underneath.
Right now, this text is only updated when we parsed the TextField. So if you write a simple test like that :


@Test
    public void textFieldGetText() {
        Assert.assertTrue(find(".text-field").isFocused());

        // Type 0
        type(KeyCode.NUMPAD2);

        //We should have the same value everywhere.
        Assert.assertEquals(((TextField) find(".text-field")).getText(), calendarTextField.getText());
        Assert.assertEquals("2", calendarTextField.getText());
    }

It will currently fail. My suggestion is to simply bind these two property like that :
textField.textProperty().bindBidirectional(getSkinnable().textProperty());

The only thing that bothers me is that there were a listener before of this TextProperty on Calendar side. When the user would modify this property, a call to "parse" would be done in the skin in order to verify the input.
If we go towards this bidirectional binding, this cannot stay. Because as soon as the user will input something, the parse method will be triggered, the value will not be accepted, and the TextField will be erased (current behavior).

I've modified the code by removing that listener and applying the bidirectional binding and no test is failing. Let me know what you think of all that.

setTitleBarStyleClass does not work for me

When using setTitleBarStyleClass to "custom-window-titlebar" I will get "custom-window-titlebar" returned through getTitleBarStyleClass however the values I set in the class "custom-window-titlebar" are not being applied. There is a real possibility that I am doing something incorrectly however I am having trouble finding examples using this online.

Window wTest = new Window("Insert title here!");
wTest.setTitleBarStyleClass("custom-window-titlebar");
apAnchor.getChildren().add(wTest );

/* Trying to make things different, red */
.custom-window-titlebar {
-fx-glass-color: rgba(255, 0, 0, 0.4);
-fx-alignment: center;
-fx-background-color: linear-gradient(to bottom, derive(-fx-glass-color, 30%), -fx-glass-color);
-fx-border-color: derive(-fx-glass-color, -60%);
-fx-border-width: 2;
-fx-background-insets: 1;
-fx-border-radius: 3;
-fx-background-radius: 3;
-fx-stroke: rgba(255,0,0,50);
-fx-fill: rgba(255,0,0,50);
}

Thanks,
Drew

ActionsCallback not called when setAllowDragging is false

I want to create a calendar just to display some information, which shouldn't be modificable by the user. So I disabled the resize and the drag features. I find no way to trigger the ActionsCallback when double-clicking an event.

agenda.setAllowDragging(false);
agenda.setActionCallback((Agenda.Appointment myAppointment) -> {
    System.err.println("This is never shown");
    return null;
});

Focus issue

Hi guys,

I have an issue with the requestFocus method applied on a LocalDateTextField.

Currently, we have a very nice thing in CalendarTextFieldSkin which detects when the focus is given to the CalendarTextField and it gives it to the TextField :

`/**
	 * When the control is focus, forward the focus to the textfield
	 */
    private void initFocusSimulation() 
    {
    	getSkinnable().focusedProperty().addListener( (observableValue, wasFocused, isFocused) -> {
			if (isFocused) {
            	Platform.runLater( () -> {
					textField.requestFocus();
				});
			}
		});
    }`

(Question aside, why the Platform.runLater ?)

But if you use a LocaleDateTextField which is another Control, there is no binding on this focus. Therefore calling "requestFocus" on a LocaleDateTextField will give the focus, but the actual TextField will not have it.

My quick solution is to add in LocalDateTextFieldSkin, where all the bindings are done, a listener like that :

getSkinnable().focusedProperty().addListener((observableValue, wasFocused, isFocused) -> {
                if (isFocused) {
                    calendarTextField.requestFocus();
                }
            });

It works. But I find it a bit heavy. I have the focus, so I give it to the CalendarTextField which gives it to the TextField itself..
But maybe it's the only solution.

CalendarTimePicker sliders do not always update the underlying calendar

Hi,

If you click on a slider to select the time instead of sliding the thumb to the desired value on the hours/minutes/seconds sliders in a CalendarTimePicker, the calendarProperty does not get updated.

This all seems to stem from the fact that the Slider's valueChangingProperty does not fire if you don't grab the thumb (probably a bug in JavaFX: RT-17276, RT-17277, RT-23058). In turn, this causes the following code:

hourScrollSlider.valueChangingProperty().addListener( (observable, oldValue, newValue) ->  {
    if (refreshingAtomicInteger.get() > 0) {
        return;
    }
    acceptChangingCalendar();
});

to never get called and thus, the changingCalendar does not get accepted into the calendarProperty.

There is probably a way to change the code a little bit as to not rely on the valueChangingProperty. This bug can be easily missed by users, as the controls in the popup do reflect the selected time if you open it up again, but anything bound to the calendarProperty is not updated!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.