Search in sources :

Example 1 with CustomJspDir

use of com.liferay.ide.hook.core.model.CustomJspDir in project liferay-ide by liferay.

the class HookXmlEditor method _copyCustomJspsToProject.

private void _copyCustomJspsToProject(IPath portalDir, ElementList<CustomJsp> customJsps) {
    try {
        Hook hook = getModelElement().nearest(Hook.class);
        ElementHandle<CustomJspDir> element = hook.getCustomJspDir();
        CustomJspDir customJspDirElement = element.content();
        if ((customJspDirElement != null) && customJspDirElement.validation().ok()) {
            Path customJspDir = customJspDirElement.getValue().content();
            IWebProject webproject = LiferayCore.create(IWebProject.class, getProject());
            if (webproject != null) {
                IFolder defaultDocroot = webproject.getDefaultDocrootFolder();
                IFolder customJspFolder = defaultDocroot.getFolder(customJspDir.toPortableString());
                for (CustomJsp customJsp : customJsps) {
                    String content = customJsp.getValue().content();
                    if (!empty(content)) {
                        IFile customJspFile = customJspFolder.getFile(content);
                        if (!customJspFile.exists()) {
                            IPath portalJsp = portalDir.append(content);
                            try {
                                CoreUtil.makeFolders((IFolder) customJspFile.getParent());
                                if (portalJsp.toFile().exists()) {
                                    customJspFile.create(Files.newInputStream(portalJsp.toFile().toPath()), true, null);
                                } else {
                                    CoreUtil.createEmptyFile(customJspFile);
                                }
                            } catch (Exception e) {
                                HookUI.logError(e);
                            }
                        }
                    }
                }
            }
        }
    } catch (Exception e) {
        HookUI.logError(e);
    }
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.sapphire.modeling.Path) Hook(com.liferay.ide.hook.core.model.Hook) IFile(org.eclipse.core.resources.IFile) IPath(org.eclipse.core.runtime.IPath) IWebProject(com.liferay.ide.core.IWebProject) CustomJsp(com.liferay.ide.hook.core.model.CustomJsp) CustomJspDir(com.liferay.ide.hook.core.model.CustomJspDir) CoreException(org.eclipse.core.runtime.CoreException) PartInitException(org.eclipse.ui.PartInitException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) IFolder(org.eclipse.core.resources.IFolder)

Example 2 with CustomJspDir

use of com.liferay.ide.hook.core.model.CustomJspDir in project liferay-ide by liferay.

the class HookXmlEditor method doSave.

@Override
public void doSave(IProgressMonitor monitor) {
    if (customModelDirty) {
        Hook hook = getModelElement().nearest(Hook.class);
        ElementList<CustomJsp> customJsps = hook.getCustomJsps();
        ILiferayProject liferayProject = LiferayCore.create(getProject());
        ILiferayPortal portal = liferayProject.adapt(ILiferayPortal.class);
        if (portal != null) {
            IPath portalDir = portal.getAppServerPortalDir();
            if (portalDir != null) {
                _copyCustomJspsToProject(portalDir, customJsps);
            }
        }
        customModelDirty = false;
        super.doSave(monitor);
        firePropertyChange(IEditorPart.PROP_DIRTY);
        ElementHandle<CustomJspDir> customJspDir = hook.getCustomJspDir();
        if ((customJspDir != null) && !customJspDir.empty()) {
            Value<Path> customJspPath = customJspDir.content().getValue();
            Path path = customJspPath.content().makeRelative();
            String customeJspValue = path.toPortableString();
            _configureCustomJspValidation(getProject(), customeJspValue);
        }
    } else {
        super.doSave(monitor);
    }
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.sapphire.modeling.Path) Hook(com.liferay.ide.hook.core.model.Hook) IPath(org.eclipse.core.runtime.IPath) CustomJsp(com.liferay.ide.hook.core.model.CustomJsp) ILiferayProject(com.liferay.ide.core.ILiferayProject) CustomJspDir(com.liferay.ide.hook.core.model.CustomJspDir) ILiferayPortal(com.liferay.ide.core.ILiferayPortal)

Example 3 with CustomJspDir

use of com.liferay.ide.hook.core.model.CustomJspDir in project liferay-ide by liferay.

the class CustomJspsEnablementService method compute.

@Override
protected Boolean compute() {
    boolean enablement = true;
    ElementHandle<CustomJspDir> elementHandle = _hook().getCustomJspDir();
    CustomJspDir customJspDir = elementHandle.content();
    if (customJspDir != null) {
        IProject project = _hook().adapt(IProject.class);
        Path customJspDirPath = customJspDir.getValue().content(true);
        if ((project != null) && (customJspDirPath != null)) {
            IWebProject lrproject = LiferayCore.create(IWebProject.class, project);
            if (lrproject != null) {
                IFolder defaultWebappDir = lrproject.getDefaultDocrootFolder();
                if (FileUtil.exists(defaultWebappDir)) {
                    IFolder customJspFolder = defaultWebappDir.getFolder(PathBridge.create(customJspDirPath));
                    enablement = FileUtil.exists(customJspFolder);
                }
            }
        }
    }
    return enablement;
}
Also used : Path(org.eclipse.sapphire.modeling.Path) IWebProject(com.liferay.ide.core.IWebProject) CustomJspDir(com.liferay.ide.hook.core.model.CustomJspDir) IProject(org.eclipse.core.resources.IProject) IFolder(org.eclipse.core.resources.IFolder)

Example 4 with CustomJspDir

use of com.liferay.ide.hook.core.model.CustomJspDir in project liferay-ide by liferay.

the class CustomJspDirListener method handleTypedEvent.

@Override
protected void handleTypedEvent(PropertyContentEvent event) {
    Property prop = event.property();
    Hook hook = prop.element().nearest(Hook.class);
    if (hook != null) {
        if (CustomJspDir.PROP_VALUE.equals(prop.definition())) {
            // IDE-1132, Listen the change of Property CustomJspDir, and refresh the
            // Property CustomJsps.
            hook.property(Hook.PROP_CUSTOM_JSPS).refresh();
        } else if (Hook.PROP_CUSTOM_JSP_DIR.equals(prop.definition())) {
            // IDE-1251 listen for changes to custom_jsp_dir and if it is empty initialize
            // initial content @InitialValue
            CustomJspDir customJspDir = hook.getCustomJspDir().content(false);
            if (customJspDir != null) {
                Value<Path> value = customJspDir.getValue();
                if (value != null) {
                    Path path = value.content(false);
                    if (path == null) {
                        customJspDir.initialize();
                    }
                }
            }
        }
    }
}
Also used : Path(org.eclipse.sapphire.modeling.Path) Hook(com.liferay.ide.hook.core.model.Hook) Value(org.eclipse.sapphire.Value) CustomJspDir(com.liferay.ide.hook.core.model.CustomJspDir) Property(org.eclipse.sapphire.Property)

Example 5 with CustomJspDir

use of com.liferay.ide.hook.core.model.CustomJspDir in project liferay-ide by liferay.

the class CreateDirectoryActionHandler method run.

@Override
protected Object run(Presentation context) {
    try {
        Element element = getModelElement();
        IProject project = element.adapt(IProject.class);
        CustomJspDir customJspDir = (CustomJspDir) element;
        Path customJspDirValue = customJspDir.getValue().content(false);
        if (customJspDirValue == null) {
            customJspDirValue = customJspDir.getValue().content(true);
            customJspDir.setValue(customJspDirValue);
        }
        customJspDir.setValue(customJspDirValue);
        RelativePathService service = property().service(RelativePathService.class);
        Path absolutePath = service.convertToAbsolute(customJspDirValue);
        if (FileUtil.notExists(absolutePath)) {
            IWebProject webproject = LiferayCore.create(IWebProject.class, project);
            if ((webproject != null) && (webproject.getDefaultDocrootFolder() != null)) {
                IFolder defaultDocroot = webproject.getDefaultDocrootFolder();
                IFolder customJspFolder = defaultDocroot.getFolder(new org.eclipse.core.runtime.Path(customJspDirValue.toPortableString()));
                CoreUtil.makeFolders(customJspFolder);
                // force a refresh of validation
                customJspDir.setValue((Path) null);
                customJspDir.setValue(customJspDirValue);
                refreshEnablementState();
            }
        }
    } catch (Exception e) {
        HookUI.logError(e);
    }
    return null;
}
Also used : Path(org.eclipse.sapphire.modeling.Path) IWebProject(com.liferay.ide.core.IWebProject) Element(org.eclipse.sapphire.Element) RelativePathService(org.eclipse.sapphire.services.RelativePathService) CustomJspDir(com.liferay.ide.hook.core.model.CustomJspDir) IProject(org.eclipse.core.resources.IProject) IFolder(org.eclipse.core.resources.IFolder)

Aggregations

CustomJspDir (com.liferay.ide.hook.core.model.CustomJspDir)5 Path (org.eclipse.sapphire.modeling.Path)5 IWebProject (com.liferay.ide.core.IWebProject)3 Hook (com.liferay.ide.hook.core.model.Hook)3 IFolder (org.eclipse.core.resources.IFolder)3 CustomJsp (com.liferay.ide.hook.core.model.CustomJsp)2 IProject (org.eclipse.core.resources.IProject)2 IPath (org.eclipse.core.runtime.IPath)2 ILiferayPortal (com.liferay.ide.core.ILiferayPortal)1 ILiferayProject (com.liferay.ide.core.ILiferayProject)1 IOException (java.io.IOException)1 MalformedURLException (java.net.MalformedURLException)1 IFile (org.eclipse.core.resources.IFile)1 CoreException (org.eclipse.core.runtime.CoreException)1 Element (org.eclipse.sapphire.Element)1 Property (org.eclipse.sapphire.Property)1 Value (org.eclipse.sapphire.Value)1 RelativePathService (org.eclipse.sapphire.services.RelativePathService)1 PartInitException (org.eclipse.ui.PartInitException)1