と思ったときにどうすれば良いのか,自動挿入をキャンセルする方法が無いのかな,と思ったけれど,
特にそれらしいオプションが見つからなかったので,適当にキーマップしてみた.
inoremap:call append('.', repeat(' ', indent('.'))) ji
Ctrlを押しながら改行すると,適当なインデント分の空白を入れて次の行から開始できる,という風にしてみた.
inoremap:call append('.', repeat(' ', indent('.'))) ji
<?xml version = "1.0"?>
<?import javafx.scene.Scene?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Slider?>
<Scene width = "640" height = "480" xmlns:fx="http://javafx.com//fxml">
<VBox>
<Slider fx:id = "sliderA" />
<Slider fx:id = "sliderB" value = "${sliderA.value}" />
</VBox>
</Scene>
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Simple extends Application {
public static void main(String [] args){
launch(args);
}
public void start(Stage primaryStage) throws Exception {
Scene scene = FXMLLoader.load(getClass().getResource("Simple.fxml"));
primaryStage.setScene(scene);
primaryStage.show();
}
}
import java.io.File;
import javafx.event.EventHandler;
import javafx.scene.control.TreeItem;
public class FileTreeModificationEventHandler
implements EventHandler<
TreeItem.TreeModificationEvent<File>>
{
public void handle(
TreeItem.TreeModificationEvent<File>
event
)
{
if(event.getEventType() ==
TreeItem.<File>branchExpandedEvent())
{
System.out.println("expanded");
}else if(event.getEventType() ==
TreeItem.<File>branchCollapsedEvent())
{
System.out.println("collapsed");
}
}
}
public FileTreeItem(final File f){
super(f);
// 開くときのイベントを登録
addEventHandler(
TreeItem.<File>branchExpandedEvent(),
new FileTreeModificationEventHandler());
// 閉じるときのイベントを登録
addEventHandler(
TreeItem.<File>branchCollapsedEvent(),
new FileTreeModificationEventHandler());
}
public void handle(
TreeItem.TreeModificationEvent<File>
event
)
{
if(event.getEventType() ==
TreeItem.<File>branchExpandedEvent())
{
System.out.println("expanded");
event.consume();
}else if(event.getEventType() ==
TreeItem.<File>branchCollapsedEvent())
{
System.out.println("collapsed");
event.consume();
}
}
import java.io.File;
import javafx.collections.ObservableList;
import javafx.collections.FXCollections;
import javafx.scene.control.TreeItem;
// ファイルツリーの根や分岐や葉を表すクラス
// 根は値を持たないものとする
public class FileTreeItem extends TreeItem<File> {
public FileTreeItem(){
this(null);
}
public FileTreeItem(final File file){
// 要素の値を設定
super(file);
}
// 木の要素が葉かどうか(末端かどうか)を返す
// 要素が持つ値は根の場合はnullで,
// それ以外では通常のFileオブジェクトになる
@Override
public boolean isLeaf(){
File file = getValue();
return file != null && file.isFile();
}
@Override
public ObservableList<TreeItem<File>> getChildren(){
// 既に一度子要素を作っている場合はそのキャッシュを利用する
ObservableList<TreeItem<File>> children = super.getChildren();
if(!children.isEmpty())
return children;
// 根にファイルを追加する前に通る
File file = getValue();
if(file == null)
return children;
// ファイルの場合
if(!file.isDirectory()){
return FXCollections.emptyObservableList();
}
// ディレクトリの場合
File [] files = file.listFiles();
for(File f : files){
children.add(new FileTreeItem(f));
}
return children;
}
}
import java.io.File;
import javafx.application.Application;
import javafx.scene.control.TreeView;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Simple extends Application {
public static void main(String [] args){
launch(args);
}
public void start(Stage primaryStage){
// ルートファイルのリストを取得
File [] rootFiles = File.listRoots();
FileTreeItem root = new FileTreeItem();
// 根の要素に各ルートファイルを追加していく
for(File f : rootFiles){
root.getChildren().add(new FileTreeItem(f));
}
// 根の要素を渡してファイルツリーのビューを作成
TreeView treeView = new TreeView(root);
// 無駄なnullのルートは表示しないようにする
treeView.setShowRoot(false);
// TreeViewをシーンに追加して表示する
Scene scene = new Scene(treeView);
primaryStage.setWidth(640);
primaryStage.setHeight(480);
primaryStage.setScene(scene);
primaryStage.show();
}
}
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Simple extends Application {
public static void main(String [] args){
launch(args);
}
public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(new Scene(new Group()));
// Macでは幅と高さを指定しておかないとウィンドウが見えない
// primaryStage.setWidth(100);
// primaryStage.setHeight(100);
primaryStage.show();
}
}
Windows Javaのインストールフォルダ\jre\lib\jfxrt.jar Mac `/usr/libexec/java_home`/jre/lib/jfxrt.jar
<?xml version = "1.0"?> <?import javafx.scene.Scene?> <?import javafx.scene.Group?> <Scene width = "100" height = "100"> <Group /> </Scene>
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Simple extends Application {
public static void main(String [] args){
launch(args);
}
public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(
(Scene)FXMLoader.load(
getClass().getResource("Simple.fxml")));
// Macでは幅と高さを指定しておかないとウィンドウが見えない
// primaryStage.setWidth(100);
// primaryStage.setHeight(100);
primaryStage.show();
}
}