- 
    Bug 
- 
    Resolution: Incomplete
- 
     P4 P4
- 
    7u13
- 
    jdk1.7.0_11 fx2.2.5b08, plugin, Linux 
                    1. Run app in a browser. Click on the text area;
2. Click ctrl + tab. Text area wil be focused.
But it is expected that the focuse will move to another control.
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaFXApplication12 extends Application {
    
SimpleStringProperty promptText;
    
@Override
public void start(Stage primaryStage) {
        
promptText = new SimpleStringProperty();
        
final TextArea textArea = new TextArea();
        
ToggleButton bindUnidir = new ToggleButton("UNIDIRECTIONAL");
bindUnidir.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(
ObservableValue<? extends Boolean> ov,
Boolean t, Boolean t1) {
                
if (t1) {
textArea.promptTextProperty().bind(promptText);
} else {
textArea.promptTextProperty().unbind();
textArea.setPromptText(String.valueOf(""));
}
}
});
        
ToggleButton bindBidir = new ToggleButton("BIDIRECTIONAL");
bindBidir.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(
ObservableValue<? extends Boolean> ov,
Boolean t, Boolean t1) {
                
if (t1) {
textArea.promptTextProperty().bindBidirectional(promptText);
} else {
textArea.promptTextProperty().unbindBidirectional(promptText);
textArea.setPromptText(String.valueOf(""));
}
                
}
});
        
TextField text = new TextField("PROMPT TEXT");
promptText.bind(text.textProperty());
        
VBox root = new VBox(10.0);
        
root.getChildren().addAll(
textArea, bindBidir,
bindUnidir, text);
        
Scene scene = new Scene(root, 600, 400);
        
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
2. Click ctrl + tab. Text area wil be focused.
But it is expected that the focuse will move to another control.
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaFXApplication12 extends Application {
SimpleStringProperty promptText;
@Override
public void start(Stage primaryStage) {
promptText = new SimpleStringProperty();
final TextArea textArea = new TextArea();
ToggleButton bindUnidir = new ToggleButton("UNIDIRECTIONAL");
bindUnidir.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(
ObservableValue<? extends Boolean> ov,
Boolean t, Boolean t1) {
if (t1) {
textArea.promptTextProperty().bind(promptText);
} else {
textArea.promptTextProperty().unbind();
textArea.setPromptText(String.valueOf(""));
}
}
});
ToggleButton bindBidir = new ToggleButton("BIDIRECTIONAL");
bindBidir.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(
ObservableValue<? extends Boolean> ov,
Boolean t, Boolean t1) {
if (t1) {
textArea.promptTextProperty().bindBidirectional(promptText);
} else {
textArea.promptTextProperty().unbindBidirectional(promptText);
textArea.setPromptText(String.valueOf(""));
}
}
});
TextField text = new TextField("PROMPT TEXT");
promptText.bind(text.textProperty());
VBox root = new VBox(10.0);
root.getChildren().addAll(
textArea, bindBidir,
bindUnidir, text);
Scene scene = new Scene(root, 600, 400);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}