use of com.kyj.fx.voeditor.visual.component.dock.tab.DockTab in project Gargoyle by callakrsos.
the class SystemLayoutViewController method initialize.
@FXML
public void initialize() {
// 쿼리 리스너를 등록
DbUtil.registQuertyListener(this);
try {
FXMLLoader loader = FxUtil.createNewFxmlLoader();
loader.setLocation(SystemLayoutViewController.class.getResource("DAOLoaderView.fxml"));
TitledPane titledPane = loader.load();
VBox.setVgrow(titledPane, Priority.ALWAYS);
accordionItems.getChildren().add(titledPane);
DAOLoaderController controller = loader.getController();
controller.setSystemLayoutViewController(this);
} catch (IOException e1) {
e1.printStackTrace();
}
SharedMemory.setSystemLayoutView(this);
SharedMemory.setWorkspaceTab(tabPanWorkspace);
// tab key에 대한 이벤트 처리 등록....
SharedMemory.getPrimaryStage().addEventHandler(KeyEvent.ANY, event -> {
boolean isCloseALLtabKeyCode = event.isControlDown() && event.isShiftDown() && KeyCode.W == event.getCode();
boolean isTabMoveCode = event.isControlDown() && isNumberCode(event.getCode());
ObservableList<DockTab> tabs = tabPanWorkspace.getTabs();
if (isCloseALLtabKeyCode) {
LOGGER.debug("CLOSE ALL TABS...");
for (int i = tabs.size() - 1; i > 0; i--) {
tabs.remove(i);
}
} else if (isTabMoveCode) {
int tabIndex = Integer.parseInt(event.getCode().getName());
if (tabIndex > 0 && tabs.size() < tabIndex)
return;
LOGGER.debug("MOVE TAB" + event.getCode().getName());
tabPanWorkspace.getSelectionModel().select(tabIndex - 1);
}
});
String baseDir = ResourceLoader.getInstance().get(ResourceLoader.BASE_DIR);
selectDirFile = new File(baseDir);
createNewTreeViewMenuItems();
webvWelcome.getEngine().setJavaScriptEnabled(true);
webvWelcome.getEngine().load(HOME_URL);
txtUrl.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
if (KeyCode.ENTER == event.getCode()) {
webvWelcome.getEngine().load(txtUrl.getText());
}
});
btnUrlSearch.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
if (event.getClickCount() >= 1) {
webvWelcome.getEngine().load(txtUrl.getText());
}
});
webvWelcome.setOnKeyPressed(key -> {
if (key.getCode() == KeyCode.F12) {
FxUtil.createStageAndShow("Simple Web Console", new WebViewConsole(webvWelcome));
}
});
treeProjectFile.setRoot(createNewTree(selectDirFile));
treeProjectFile.setShowRoot(false);
// 트리 컨테스트 요청 이벤트
treeProjectFile.setOnContextMenuRequested(this::treeProjectFileOnContextMenuRequested);
// 트리 마우스 이벤트
treeProjectFile.setOnMouseClicked(this::treeProjectFileOnMouseClick);
// 트리 키 이벤트
treeProjectFile.addEventHandler(KeyEvent.KEY_PRESSED, this::treeProjectFileOnKeyPressed);
/** 플러그인들을 로드함. **/
Platform.runLater(new Runnable() {
@Override
public void run() {
List<JarWrapper> load = PluginLoader.getInstance().load();
load.stream().forEach(jarWrapper -> {
try {
String displayMenuName = jarWrapper.getDisplayMenuName();
MenuItem pluginMenu = new MenuItem(displayMenuName);
pluginMenu.setUserData(jarWrapper);
pluginMenu.setOnAction(event -> {
JarWrapper jar = (JarWrapper) pluginMenu.getUserData();
try {
Class<?> nodeClass = jar.getNodeClass();
Object newInstance = jar.loader.loadClass(nodeClass.getName()).newInstance();
if (newInstance instanceof CloseableParent<?>) {
loadNewSystemTab(jar.getDisplayMenuName(), (CloseableParent<?>) newInstance);
} else {
loadNewSystemTab(jar.getDisplayMenuName(), (Parent) newInstance, SkinManager.getInstance().getJavafxDefaultSkin());
}
} catch (Exception e) {
LOGGER.error("regist fail plugin.");
LOGGER.error(ValueUtil.toString(e));
}
});
try {
Class<GagoyleParentBeforeLoad> setBeforeParentLoadListenerClass = jarWrapper.getSetOnParentBeforeLoadedListenerClass();
if (setBeforeParentLoadListenerClass != null)
setOnbeforeParentLoad(setBeforeParentLoadListenerClass.newInstance());
} catch (Exception e) {
LOGGER.error("regist fail 'GagoyleParentBeforeLoad' listener.");
}
try {
Class<GagoyleParentOnLoaded> addOnParentLoadedListenerClass = jarWrapper.getAddOnParentLoadedListenerClass();
if (addOnParentLoadedListenerClass != null)
addOnParentLoadedListener(addOnParentLoadedListenerClass.newInstance());
} catch (Exception e) {
LOGGER.error("regist fail 'GagoyleParentOnLoaded' listener.");
}
menuPlugins.getItems().add(pluginMenu);
} catch (Exception e) {
LOGGER.debug(ValueUtil.toString(e));
}
});
}
});
//tab image 아이콘 처리
try (InputStream is = getClass().getResourceAsStream("/META-INF/images/eclipse/eview16/packages.gif")) {
tabPackageExplorer.setGraphic(new ImageView(new Image(is)));
} catch (IOException e) {
e.printStackTrace();
}
tabPanWorkspace.getTabs().addListener(dockTabCloseListener);
}
use of com.kyj.fx.voeditor.visual.component.dock.tab.DockTab in project Gargoyle by callakrsos.
the class SystemLayoutViewController method loadNewSystemTab.
/**
* 탭에 대해 로드함.
*
* @작성자 : KYJ
* @작성일 : 2015. 11. 4.
* @param tableName
* @param fxmlName
*/
public void loadNewSystemTab(String tableName, Parent parent, String skin) {
Platform.runLater(() -> {
try {
if (beforeParentLoad != null && beforeParentLoad.filter(parent)) {
beforeParentLoad.beforeLoad(parent);
if (beforeParentLoad.isUnloadParent()) {
return;
}
}
DockTab tab = new DockTab(tableName, parent);
// 툴팁 처리 (클래스위치)
tab.setTooltip(new Tooltip(parent.getClass().getName()));
addTabItem(tab);
if (skin != null) {
parent.getStylesheets().clear();
// parent.getStylesheets().add(skin);
// tab.getstyle.add(skin);
}
tabPanWorkspace.getSelectionModel().select(tab);
// 리스너 호출.
onParentloaded.forEach(v -> v.onLoad(parent));
// _parent.getStylesheets().clear();
} catch (Exception e1) {
DialogUtil.showExceptionDailog(e1);
}
});
}
use of com.kyj.fx.voeditor.visual.component.dock.tab.DockTab in project Gargoyle by callakrsos.
the class DockTabPaneExam method start.
/* (non-Javadoc)
* @see javafx.application.Application#start(javafx.stage.Stage)
*/
@Override
public void start(Stage primaryStage) throws Exception {
DockTabPane dockTabPane = new DockTabPane();
dockTabPane.setSide(Side.LEFT);
{
DockTab e = new DockTab("Hello1");
e.setContent(new Label("Hello world!1"));
dockTabPane.getTabs().add(e);
}
{
DockTab e = new DockTab("Hello2");
e.setContent(new Label("Hello world!2"));
dockTabPane.getTabs().add(e);
}
{
DockTab e = new DockTab("Hello3");
e.setContent(new Label("Hello world!3"));
dockTabPane.getTabs().add(e);
}
DockPane.initializeDefaultUserAgentStylesheet();
primaryStage.setScene(new Scene(dockTabPane));
primaryStage.show();
}
use of com.kyj.fx.voeditor.visual.component.dock.tab.DockTab in project Gargoyle by callakrsos.
the class SystemLayoutViewController method closeContextMenu.
/**
* 탭 닫기 메뉴
*
* @작성자 : KYJ
* @작성일 : 2015. 10. 8.
* @return
*/
public ContextMenu closeContextMenu() {
MenuItem closeMenuItem = new MenuItem("Close");
closeMenuItem.setOnAction(hander -> {
DockTab tab = tabPanWorkspace.getSelectionModel().getSelectedItem();
closeTab(tab);
});
MenuItem closeAllMenuItem = new MenuItem("Close All CTRL + SHIFT + W");
closeAllMenuItem.setOnAction(handler -> {
for (int i = tabPanWorkspace.getTabs().size() - 1; i >= 1; i--) {
DockTab tab = tabPanWorkspace.getTabs().get(i);
closeTab(tab);
}
});
MenuItem closeOtherMenuItem = new MenuItem("Close Others");
closeOtherMenuItem.setOnAction(hander -> {
DockTab tab = tabPanWorkspace.getSelectionModel().getSelectedItem();
for (int i = tabPanWorkspace.getTabs().size() - 1; i >= 1; i--) {
DockTab otherTab = tabPanWorkspace.getTabs().get(i);
if (tab != otherTab)
closeTab(otherTab);
}
});
MenuItem closeRightMenuItem = new MenuItem("Close Tab to the Right");
closeRightMenuItem.setOnAction(hander -> {
ObservableList<DockTab> tabs = tabPanWorkspace.getTabs();
int tabSize = tabs.size();
int selectedIndex = tabPanWorkspace.getSelectionModel().getSelectedIndex();
if (selectedIndex == -1)
return;
for (int i = tabSize - 1; i > selectedIndex; i--) {
DockTab otherTab = tabs.get(i);
closeTab(otherTab);
}
});
MenuItem closeLeftMenuItem = new MenuItem("Close Tab to the Left");
closeLeftMenuItem.setOnAction(hander -> {
DockTab selectedItem = tabPanWorkspace.getSelectionModel().getSelectedItem();
if (selectedItem == null)
return;
ObservableList<DockTab> tabs = null;
while (true) {
tabs = tabPanWorkspace.getTabs();
if (tabs.size() == 1)
break;
DockTab dockTab = tabs.get(1);
if (selectedItem == dockTab)
break;
if (dockTab != null)
closeTab(dockTab);
}
});
ContextMenu contextMenu = new ContextMenu(closeMenuItem, closeOtherMenuItem, closeAllMenuItem, closeRightMenuItem, closeLeftMenuItem);
return contextMenu;
}
use of com.kyj.fx.voeditor.visual.component.dock.tab.DockTab in project Gargoyle by callakrsos.
the class SystemLayoutViewController method loadNewSystemTab.
/**
* 탭에 대해 로드함.
*
* @작성자 : KYJ
* @작성일 : 2015. 11. 4.
* @param tabName
* @param fxmlName
*/
@Override
public void loadNewSystemTab(String tabName, String fxmlName) {
Platform.runLater(() -> {
try {
FXMLLoader loader = FxUtil.createNewFxmlLoader();
loader.setLocation(getClass().getResource(fxmlName));
Parent parent = loader.load();
if (beforeParentLoad != null && beforeParentLoad.filter(parent)) {
beforeParentLoad.beforeLoad(parent);
if (beforeParentLoad.isUnloadParent()) {
return;
}
}
DockTab tab = new DockTab(tabName, parent);
// 툴팁 처리 (클래스위치)
tab.setTooltip(new Tooltip(loader.getController().getClass().getName()));
addTabItem(tab);
tab.getTabPane().getSelectionModel().select(tab);
// 리스너 호출.
onParentloaded.forEach(v -> {
v.onLoad(parent);
});
} catch (IOException e1) {
DialogUtil.showExceptionDailog(e1);
}
});
}
Aggregations