Search in sources :

Example 1 with JarWrapper

use of com.kyj.fx.voeditor.visual.loder.JarWrapper 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);
}
Also used : Arrays(java.util.Arrays) StringUtils(org.apache.commons.lang.StringUtils) MultipleSelectionModel(javafx.scene.control.MultipleSelectionModel) ListChangeListener(javafx.collections.ListChangeListener) JavaProjectFileTreeItem(com.kyj.fx.voeditor.visual.component.JavaProjectFileTreeItem) FileUtil(com.kyj.fx.voeditor.visual.util.FileUtil) Path(java.nio.file.Path) SystemUtils(org.apache.commons.lang.SystemUtils) SplitPane(javafx.scene.control.SplitPane) Pair(javafx.util.Pair) Event(javafx.event.Event) KeyEvent(javafx.scene.input.KeyEvent) PluginLoader(com.kyj.fx.voeditor.visual.loder.PluginLoader) Platform(javafx.application.Platform) FxUtil(com.kyj.fx.voeditor.visual.util.FxUtil) ResourceLoader(com.kyj.fx.voeditor.visual.momory.ResourceLoader) XMLTextView(com.kyj.fx.voeditor.visual.component.popup.XMLTextView) ObservableList(javafx.collections.ObservableList) BorderPane(javafx.scene.layout.BorderPane) CodeAnalysisJavaTextArea(com.kyj.fx.voeditor.visual.component.text.CodeAnalysisJavaTextArea) DbExecListener(com.kyj.fx.voeditor.visual.util.DbExecListener) SVNViewer(com.kyj.fx.voeditor.visual.component.scm.SVNViewer) TreeItem(javafx.scene.control.TreeItem) FXCollections(javafx.collections.FXCollections) DialogUtil(com.kyj.fx.voeditor.visual.util.DialogUtil) FilePropertiesComposite(com.kyj.fx.voeditor.visual.component.file.FilePropertiesComposite) FXMLLoader(javafx.fxml.FXMLLoader) SpecResource(com.kyj.fx.voeditor.visual.words.spec.auto.msword.ui.model.SpecResource) UtubeDownloaderComposite(com.kyj.fx.voeditor.visual.component.utube.UtubeDownloaderComposite) Properties(java.util.Properties) ImageViewPane(com.kyj.fx.voeditor.visual.component.ImageViewPane) TitledPane(javafx.scene.control.TitledPane) Node(javafx.scene.Node) IOException(java.io.IOException) FileUtils(org.apache.commons.io.FileUtils) RuntimeClassUtil(com.kyj.fx.voeditor.visual.util.RuntimeClassUtil) File(java.io.File) ReadOnlySingletonConsole(com.kyj.fx.voeditor.visual.component.console.ReadOnlySingletonConsole) GoogleTrendComposite(com.kyj.fx.voeditor.visual.component.google.trend.GoogleTrendComposite) Menu(javafx.scene.control.Menu) ContextMenuEvent(javafx.scene.input.ContextMenuEvent) KeyCodeCombination(javafx.scene.input.KeyCodeCombination) NrchRealtimeSrchFlowComposite(com.kyj.fx.voeditor.visual.component.nrch.realtime.NrchRealtimeSrchFlowComposite) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) Tab(javafx.scene.control.Tab) ImageView(javafx.scene.image.ImageView) ResultDialog(com.kyj.fx.voeditor.visual.component.ResultDialog) SkinManager(com.kyj.fx.voeditor.visual.momory.SkinManager) Image(javafx.scene.image.Image) EventHandler(javafx.event.EventHandler) Button(javafx.scene.control.Button) DbUtil(com.kyj.fx.voeditor.visual.util.DbUtil) LoggerFactory(org.slf4j.LoggerFactory) NullExpresion(com.kyj.fx.voeditor.visual.util.NullExpresion) JavaSVNManager(com.kyj.scm.manager.svn.java.JavaSVNManager) SVNWcDbClient(com.kyj.scm.manager.svn.java.SVNWcDbClient) PDFImageBasePane(com.kyj.fx.voeditor.visual.component.PDFImageBasePane) VBox(javafx.scene.layout.VBox) SelectWorkspaceView(com.kyj.fx.voeditor.visual.component.popup.SelectWorkspaceView) PMDCheckedListComposite(com.kyj.fx.voeditor.visual.component.pmd.PMDCheckedListComposite) Parent(javafx.scene.Parent) JavaProjectMemberFileTreeItem(com.kyj.fx.voeditor.visual.component.JavaProjectMemberFileTreeItem) ContextMenu(javafx.scene.control.ContextMenu) GargoyleExtensionFilters(com.kyj.fx.voeditor.visual.util.GargoyleExtensionFilters) CommonsSqllPan(com.kyj.fx.voeditor.visual.component.sql.view.CommonsSqllPan) WindowEvent(javafx.stage.WindowEvent) FXMLTextView(com.kyj.fx.voeditor.visual.component.popup.FXMLTextView) GagoyleWorkspaceOpenResourceView(com.kyj.fx.voeditor.visual.component.popup.GagoyleWorkspaceOpenResourceView) TextField(javafx.scene.control.TextField) Main(com.kyj.fx.voeditor.visual.main.Main) MenuItem(javafx.scene.control.MenuItem) PMDUtil(com.kyj.fx.voeditor.visual.util.PMDUtil) SimpleTextView(com.kyj.fx.voeditor.visual.component.text.SimpleTextView) ConfigResourceLoader(com.kyj.fx.voeditor.visual.momory.ConfigResourceLoader) DockTab(com.kyj.fx.voeditor.visual.component.dock.tab.DockTab) TreeView(javafx.scene.control.TreeView) JarWrapper(com.kyj.fx.voeditor.visual.loder.JarWrapper) FXML(javafx.fxml.FXML) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) Priority(javafx.scene.layout.Priority) List(java.util.List) GagoyleParentBeforeLoad(com.kyj.fx.voeditor.visual.framework.GagoyleParentBeforeLoad) SpecTabPane(com.kyj.fx.voeditor.visual.words.spec.auto.msword.ui.tabs.SpecTabPane) GagoyleParentOnLoaded(com.kyj.fx.voeditor.visual.framework.GagoyleParentOnLoaded) Optional(java.util.Optional) LogViewComposite(com.kyj.fx.voeditor.visual.component.text.LogViewComposite) DateUtil(com.kyj.fx.voeditor.visual.util.DateUtil) ReadOnlyConsole(com.kyj.fx.voeditor.visual.component.console.ReadOnlyConsole) Scene(javafx.scene.Scene) DockTabPane(com.kyj.fx.voeditor.visual.component.dock.tab.DockTabPane) DesignerFxComposite(com.kyj.fx.voeditor.visual.component.pmd.DesignerFxComposite) BigTextView(com.kyj.fx.voeditor.visual.component.popup.BigTextView) JavaProcessMonitor(com.kyj.fx.voeditor.visual.component.bci.view.JavaProcessMonitor) MouseEvent(javafx.scene.input.MouseEvent) WebViewConsole(com.kyj.fx.voeditor.visual.component.console.WebViewConsole) FileWrapper(com.kyj.fx.voeditor.visual.component.FileWrapper) ProgramSpecUtil(com.kyj.fx.voeditor.visual.words.spec.auto.msword.util.ProgramSpecUtil) JavaTextView(com.kyj.fx.voeditor.visual.component.popup.JavaTextView) Tooltip(javafx.scene.control.Tooltip) GargoyleException(com.kyj.fx.voeditor.visual.exceptions.GargoyleException) KeyCode(javafx.scene.input.KeyCode) WebView(javafx.scene.web.WebView) ObjectProperty(javafx.beans.property.ObjectProperty) Logger(org.slf4j.Logger) CaptureScreenComposite(com.kyj.fx.voeditor.visual.component.capture.CaptureScreenComposite) ProxyServerComposite(com.kyj.fx.voeditor.visual.component.proxy.ProxyServerComposite) ValueUtil(com.kyj.fx.voeditor.visual.util.ValueUtil) FileInputStream(java.io.FileInputStream) ProjectFileTreeItemCreator(com.kyj.fx.voeditor.visual.component.ProjectFileTreeItemCreator) ActionEvent(javafx.event.ActionEvent) SystemConsole(com.kyj.fx.voeditor.visual.component.console.SystemConsole) Stage(javafx.stage.Stage) Closeable(java.io.Closeable) ExtensionFilter(javafx.stage.FileChooser.ExtensionFilter) InputStream(java.io.InputStream) SharedMemory(com.kyj.fx.voeditor.visual.momory.SharedMemory) Parent(javafx.scene.Parent) Image(javafx.scene.image.Image) FXMLLoader(javafx.fxml.FXMLLoader) JarWrapper(com.kyj.fx.voeditor.visual.loder.JarWrapper) ObservableList(javafx.collections.ObservableList) List(java.util.List) ImageView(javafx.scene.image.ImageView) TitledPane(javafx.scene.control.TitledPane) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) MenuItem(javafx.scene.control.MenuItem) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) IOException(java.io.IOException) IOException(java.io.IOException) GargoyleException(com.kyj.fx.voeditor.visual.exceptions.GargoyleException) DockTab(com.kyj.fx.voeditor.visual.component.dock.tab.DockTab) File(java.io.File) WebViewConsole(com.kyj.fx.voeditor.visual.component.console.WebViewConsole) FXML(javafx.fxml.FXML)

Example 2 with JarWrapper

use of com.kyj.fx.voeditor.visual.loder.JarWrapper in project Gargoyle by callakrsos.

the class PluginLoaderTest method loadTest.

/**
	 * 프로젝트 plugins 디렉토리안에 jar파일이 존재하는경우 로드된 jar에 대한 정보를 리턴함.
	 *
	 * @작성자 : KYJ
	 * @작성일 : 2015. 12. 22.
	 */
@Test
public void loadTest() {
    List<JarWrapper> load = PluginLoader.getInstance().load();
    load.forEach(jar -> {
        String menuPath = jar.getMenuPath();
        String displayMenuName = jar.getDisplayMenuName();
        Properties prop = jar.getProp();
        LOGGER.debug(String.format("menu name \"%s\" \n menu path %s \n menu property %s", displayMenuName, menuPath, prop.toString()));
    });
    Assert.assertNotNull(load);
}
Also used : JarWrapper(com.kyj.fx.voeditor.visual.loder.JarWrapper) Properties(java.util.Properties) Test(org.junit.Test)

Aggregations

JarWrapper (com.kyj.fx.voeditor.visual.loder.JarWrapper)2 FileWrapper (com.kyj.fx.voeditor.visual.component.FileWrapper)1 ImageViewPane (com.kyj.fx.voeditor.visual.component.ImageViewPane)1 JavaProjectFileTreeItem (com.kyj.fx.voeditor.visual.component.JavaProjectFileTreeItem)1 JavaProjectMemberFileTreeItem (com.kyj.fx.voeditor.visual.component.JavaProjectMemberFileTreeItem)1 PDFImageBasePane (com.kyj.fx.voeditor.visual.component.PDFImageBasePane)1 ProjectFileTreeItemCreator (com.kyj.fx.voeditor.visual.component.ProjectFileTreeItemCreator)1 ResultDialog (com.kyj.fx.voeditor.visual.component.ResultDialog)1 JavaProcessMonitor (com.kyj.fx.voeditor.visual.component.bci.view.JavaProcessMonitor)1 CaptureScreenComposite (com.kyj.fx.voeditor.visual.component.capture.CaptureScreenComposite)1 ReadOnlyConsole (com.kyj.fx.voeditor.visual.component.console.ReadOnlyConsole)1 ReadOnlySingletonConsole (com.kyj.fx.voeditor.visual.component.console.ReadOnlySingletonConsole)1 SystemConsole (com.kyj.fx.voeditor.visual.component.console.SystemConsole)1 WebViewConsole (com.kyj.fx.voeditor.visual.component.console.WebViewConsole)1 DockTab (com.kyj.fx.voeditor.visual.component.dock.tab.DockTab)1 DockTabPane (com.kyj.fx.voeditor.visual.component.dock.tab.DockTabPane)1 FilePropertiesComposite (com.kyj.fx.voeditor.visual.component.file.FilePropertiesComposite)1 GoogleTrendComposite (com.kyj.fx.voeditor.visual.component.google.trend.GoogleTrendComposite)1 NrchRealtimeSrchFlowComposite (com.kyj.fx.voeditor.visual.component.nrch.realtime.NrchRealtimeSrchFlowComposite)1 DesignerFxComposite (com.kyj.fx.voeditor.visual.component.pmd.DesignerFxComposite)1