当前位置: 首页 > news >正文

一个虚拟空间可以做两个网站吗wordpress 简约论坛

一个虚拟空间可以做两个网站吗,wordpress 简约论坛,永久云服务器,安顺seo2019独角兽企业重金招聘Python工程师标准 IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE#xff0c;它本身的功能已经非常强大了#xff0c;但是每个人的需求不一样#xff0c;有些需求 IDEA 本身无法满足#xff0c;于是我们就需要自己开发插件来解决。工欲善… 2019独角兽企业重金招聘Python工程师标准 IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE它本身的功能已经非常强大了但是每个人的需求不一样有些需求 IDEA 本身无法满足于是我们就需要自己开发插件来解决。工欲善其事必先利其器想要提高开发效率我们可以借助 IDEA 提供的插件功能来满足我们的需求。如果没有我需要的功能怎么办很简单我们自己造一个 插件能做什么 IDEA 的插件几乎可以做任何事情因为它把 IDE 本身的能力都封装好开放出来了。主要的插件功能包含以下四种 自定义语言支持如果有 IDEA 暂时不支持的语言你可以自己写一个插件来支持例如 Go 语言原来的支持就是通过插件做的后来单独做了一个 Goland。官方有自定义语言插件支持的教程。框架支持例如Struts 2 的框架支持工具集成可以给 IDEA 的自带功能进行增强例如对 Git 的操作增加 CodeReview 的功能。参考Gerrit用户界面自定义的插件改变用户界面。参考BackgroundImage我为了减少重复代码的编写写了一个代码生成的插件IDEA代码生成插件CodeMaker支持自定义代码生成的模板。 Hello world 插件 依照惯例我们从 Hello world 开始。 新建一个 Gradle 的插件工程 有些教程推荐用 IDEA 默认的插件工程来开始但是我比较推荐用 Gradle 来管理整个插件工程后面的依赖管理会很方便否则都得靠手动管理。 点击新建工程选择 Gradle 接下来填写项目属性 配置 Gradle用默认配置就行 新建完工程之后IDEA 会自动开始解析项目依赖因为它要下载一个几百兆的 SDK 依赖包所以会比较久打开科学上网能快一点。 Gradle 依赖解析完成之后项目结构如下图其中 plugin.xml 是插件的配置build.gradle 是项目依赖的配置类比 pom.xml。 下面就是默认生成的 plugin.xml idea-plugin!--插件id--idcom.xiaokai.test.demo/id!--插件名称--nameDemo/name!--开发者信息--vendor emailsupportyourcompany.com urlhttp://www.yourcompany.comYourCompany/vendor!--插件说明--description![CDATA[Enter short description for your plugin here.bremmost HTML tags may be used/em]]/description!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.htmlon how to target different products --!-- uncomment to enable plugin in all productsdependscom.intellij.modules.lang/depends--!--依赖的其他插件能力--extensions defaultExtensionNscom.intellij!-- Add your extensions here --/extensions!--插件动作--actions!-- Add your actions here --/actions /idea-plugin 创建一个 Action Action 是 IDEA 中对事件响应的处理器它的 actionPerformed 就像是 JS 中的 onClick 方法。可以看出来插件的开发本质上跟 web、Android 的开发没有什么不同因为都是事件驱动的编程。 我们可以直接使用 IDEA 提供的 Action 生成器 点击 OK 之后会在 src 生成类文件 package com.xiaokai.test;import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent;public class HelloWorldAction extends AnAction {Overridepublic void actionPerformed(AnActionEvent e) {// TODO: insert action logic here} }同时动作的信息也会注册到 plugin.xml 中 !--插件动作--actions!-- Add your actions here --action iddemo.hello.world classcom.xiaokai.test.HelloWorldAction textHelloWorlddescriptionSay Hello Worldadd-to-group group-idGenerateGroup anchorlast//action/actions 弹出对话框 创建完 Action 之后我们就要开始往里面写逻辑了既然是 Hello World 教学那我们就来试一下最简单的弹出对话框。 Overridepublic void actionPerformed(AnActionEvent e) {//获取当前在操作的工程上下文Project project e.getData(PlatformDataKeys.PROJECT);//获取当前操作的类文件PsiFile psiFile e.getData(CommonDataKeys.PSI_FILE);//获取当前类文件的路径String classPath psiFile.getVirtualFile().getPath();String title Hello World!;//显示对话框Messages.showMessageDialog(project, classPath, title, Messages.getInformationIcon());} 代码写完之后打开 Gradle 的界面点击 runIde 就会启动一个安装了插件的 IDEA然后就可以进行测试。你还可以右键启动 Debug 模式这样还能进行断点。 运行的效果如下图 可以看到我们右键打开 Generate 菜单之后里面最后一项就是我们添加的 Action 进阶的教程 如果想学习更多的原理和设计理念可以看IntelliJ Platform SDK的官方文档。不过老实说它的文档写的挺差的基本上就是简单讲了一下概念和原理没有深入的分析。所以如果要深入研究还得靠自己。最靠谱的学习方式就是看别人写的插件举个例子你想知道怎么样实现自动生成代码你就去找支持这个功能的插件看他的源码是怎么写的。 我当时写CodeMaker的时候也是靠自己啃源码之后写出来的。下面我简单介绍一下我用过的一些 API这些 API 基本都没有文档说明全靠代码相传。 判断当前光标选择的元素是什么 //获取当前事件触发时光标所在的元素PsiElement psiElement anActionEvent.getData(LangDataKeys.PSI_ELEMENT);//如果光标选择的不是类弹出对话框提醒if (psiElement null || !(psiElement instanceof PsiClass)) {Messages.showMessageDialog(project, Please focus on a class, Generate Failed, null);return;} 获取当前类文件的所有类对象 一个类文件中可能会有内部类所以读取的时候返回的是一个列表 public static ListPsiClass getClasses(PsiElement element) {ListPsiClass elements Lists.newArrayList();ListPsiClass classElements PsiTreeUtil.getChildrenOfTypeAsList(element, PsiClass.class);elements.addAll(classElements);for (PsiClass classElement : classElements) {//这里用了递归的方式获取内部类elements.addAll(getClasses(classElement));}return elements;} 格式化代码 public static void reformatJavaFile(PsiElement theElement) {CodeStyleManager codeStyleManager CodeStyleManager.getInstance(theElement.getProject());try {codeStyleManager.reformat(theElement);} catch (Exception e) {LOGGER.error(reformat code failed, e);}} 使用粘贴板 CopyPasteManager.getInstance().setContents(new SimpleTransferable(table.toString(), DataFlavor.allHtmlFlavor)); 原文链接 转载于:https://my.oschina.net/u/1464083/blog/3014373
http://www.sadfv.cn/news/220422/

相关文章:

  • 做网站软件下载找人做方案的网站
  • ppt的网站导航栏怎么做怎么做电玩网站
  • 备案域名指向一个网站设计的网站都有哪些功能
  • 网站建设公司合肥wordpress更改后台
  • 网站建设开发哪家质量好模板网站官网
  • 上海网站开发与微信开放平台创建小程序
  • 福州做网站改版哪里比较好北京做百度网站建设
  • 网站分析seo情况网站文章来源seo
  • 企业网站推广方案的策划福永网站建设
  • 网站建设 的类型有哪些方面网站导航栏怎么做
  • 建设网站需求如何写好网站建设方案
  • 网络技术网站是做什么的域名查ip
  • 大型资讯门户网站怎么做排名济南网站建设 济南货梯
  • 企业网站备案好不好禹城市网站建设
  • 网站建设 北京餐饮品牌策划
  • 备案名称和网站logo不一致商业网站设计
  • 网站开发设置用户企业网络营销推广方案策划范文
  • 如何查看网站的服务器位置达建网站
  • 企业做网站的泉州模板做网站
  • 网站开发系统的可行性研究报告4399全部网页游戏大全
  • 手机设计房子的软件天津网站建设优化企业
  • 网站首页是动态的视频怎么做二手交易网站开发系统
  • 网站宣传的传统方式有哪些网站开发项目报告
  • 建设银行造价咨询中心网站创建一个网站的创业计划书
  • 自己电脑做网站主机网站制作文章标签
  • 怎么查网站的关键词排名熊掌号网站怎么做
  • 电子商务网站建设中应注意哪些问题做哪类视频网站需要视频牌照
  • 公司建设网站的费用吗网站建设书案例
  • 更适合企业网站建设的cms系统网站建设的完整流程图
  • 网站开发与应用课程讨论qq互联网站备案号