`
phantom
  • 浏览: 162453 次
社区版块
存档分类
最新评论

php168主页、专题页模板制作工具

阅读更多

javaVMEditor功能

在以php168模板模型的系统上制作专题、主页模板时可以快速切割页面代码,并生成相应文件入库。一旦自动入库的数据和要制作的页面的模板对应好,就可在cms上主页、专题管理中不用录入任何数据就可以预览到页面的全貌。

javaVMEditor使用方法

 1 添加要制作的页面 ,记住ID
 2 把要制作的页面的代码贴入javaVMEditor
 3 在编辑工具中删除不需要的头尾代码
 4 区分并选中要制成块的代码段,点工具的红、绿、蓝块中的一个
 5 当把所有要制作的块选择制作完成后,点设置中的数据库设置,录入好数据库信息和页面ID
 6 点文件保存
 7 把生成好的文件打开,查看代码,把代码内容作为模板内容填写到模板管理系统中
 8 设置要制作页面的模板为刚刚制作的模板
 9. 预览页面完成制作
 

工具下载

java 写道
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package com.jh.app.texteditor;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;

import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.FontDialog;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;

/**
*/
public class JavaVMEditor {
private Image createStockImage(Display display, String path) {
InputStream stream = JavaVMEditor.class.getResourceAsStream(path);
ImageData imageData = new ImageData(stream);
ImageData mask = imageData.getTransparencyMask();
Image result = new Image(display, imageData, mask);
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}

public static void main(String[] args) {
Display display = new Display();
JavaVMEditor example = new JavaVMEditor();
Shell shell = example.open(display);

while (!shell.isDisposed())
if (!display.readAndDispatch())
display.sleep();
display.dispose();
}

private Color BLUE = null;

private FileDialog fileDialog;
private Font font = null;
private Color GREEN = null;

private Images images = new Images();
private JavaLineStyler lineStyler = new JavaLineStyler();

private Color RED = null;
private Shell shell;
private StyledText text;
private ToolBar toolBar;
private SaveAction action = null;
static private void setActionMethod(final Object obj, Menu menu,
String actionName, final String mname ){
setActionMethod(obj, menu, actionName, mname,new Object[] {});
}

static private void setActionMethod(final Object obj, Menu menu,
String actionName, final String mname,final Object[] args) {
try {
MenuItem item = new MenuItem(menu, SWT.PUSH);
item.setText(actionName);
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {

try {
Util.privateMethodRun(obj.getClass(), mname, obj, args);
} catch (Exception e1) {
e1.printStackTrace();
}
}
});

} catch (Exception e) {

e.printStackTrace();
}
}

private Menu createSetMenu() {
Menu bar = shell.getMenuBar();
Menu menu = new Menu(bar);
setActionMethod(action, menu, "数据库设置", "initSet");
setActionMethod(this, menu, "设置字体", "setFont");

return menu;
}

private Menu createFileMenu() {
Menu bar = shell.getMenuBar();
Menu menu = new Menu(bar);
setActionMethod(this, menu, "打开文件", "openFile");

setActionMethod(this, menu, "退出", "menuFileExit");
return menu;
}

private void createMenuBar() {
Menu bar = new Menu(shell, SWT.BAR);
shell.setMenuBar(bar);
MenuItem fileItem2 = new MenuItem(bar, SWT.CASCADE);
fileItem2.setText("文件");
fileItem2.setMenu(createFileMenu());
MenuItem editItem2 = new MenuItem(bar, SWT.CASCADE);
editItem2.setText("设置");
editItem2.setMenu(createSetMenu());
createHelpMenu(bar);
}

private void createHelpMenu(Menu parent) {
Menu menu = new Menu(parent);
MenuItem header = new MenuItem(parent, SWT.CASCADE);
header.setText("帮助");
header.setMenu(menu);

MenuItem item = new MenuItem(menu, SWT.PUSH);
item.setText("关于");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION
| SWT.OK);
box.setText("模板代码生成器");
box.setMessage("欢迎使用代码生成器V0.5");
box.open();
}
});
}

private void createShell(Display display) {
shell = new Shell(display);
shell.setText("Cms v9 模板制作工具 V0.5");
images.loadAll(display);

shell.setImage(createStockImage(display, "generic_example.gif"));
GridLayout layout = new GridLayout();
layout.numColumns = 1;
shell.setLayout(layout);
shell.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
if (font != null)
font.dispose();
images.freeAll();
RED.dispose();
GREEN.dispose();
BLUE.dispose();
}
});
}

void createToolBar() {
toolBar = new ToolBar(shell, SWT.NONE);
new ToolItem(toolBar, SWT.SEPARATOR);

String menu[] = {
"切块",
"标题",
"作者",
"责编",
"时间",
"来源",
"URL",
"栏目",
"内容",
"分页",
"上一篇",
"下一篇"
};
String menuAction[] = {
null,
"$rsdb[title]",
"$rsdb[author]",
"$rsdb[username]",
"$rsdb[posttime]",
"$rsdb[copyfrom]",
"$rsdb[copyfromurl]",
"<a href='list.php?fid={$rsdb[fid]}'>{$rsdb[fname]}</a>",
"$rsdb[content]",
"$showpage",
"[<a href=\"bencandy.php?fid=$backdb[fid]&id=$backdb[aid]\" onclick=\"$backdb[click]\">上一篇</a>]\n<a href=\"bencandy.php?fid=$backdb[fid]&id=$backdb[aid]\" onclick=\"$backdb[click]\" title=\"$backdb[title]\">$backdb[subject]</a>\n",
"[<a href=\"bencandy.php?fid=$nextdb[fid]&id=$nextdb[aid]\" onclick=\"$nextdb[click]\">下一篇</a>]\n<a href=\"bencandy.php?fid=$nextdb[fid]&id=$nextdb[aid]\" onclick=\"$nextdb[click]\" title=\"$nextdb[title]\">$nextdb[subject]</a>\n" };
for (int i = 0; i < menu.length; i++) {
cutBlockButton(toolBar, menu[i], menuAction[i]);
}
setActionMethod(action, toolBar, "生成专题页模板", "save");
setActionMethod(action, toolBar, "生成最终页模板", "savelastpage");

}

private void setActionMethod(final Object obj, ToolBar toolBar,
String actionName, final String mname) {
try {
ToolItem item = new ToolItem(toolBar, SWT.SEPARATOR);
item = new ToolItem(toolBar, SWT.PUSH);
item.setText(actionName);
item.setToolTipText(actionName);
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {

try {
Util.privateMethodRun(obj.getClass(), mname, obj,
new Object[] {});
} catch (Exception e1) {
e1.printStackTrace();
}
}
});

} catch (Exception e) {

e.printStackTrace();
}

}

void cutBlockButton(ToolBar toolBar, String btName) {
cutBlockButton(toolBar, btName, null);
}

void cutBlockButton(ToolBar toolBar, String btName, final String txt) {
ToolItem item = new ToolItem(toolBar, SWT.SEPARATOR);
item = new ToolItem(toolBar, SWT.PUSH);
item.setText(btName);
item.setToolTipText(btName);
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
if (txt == null) {
cutblock(RED, null);
} else {
cutblock(BLUE, txt);
}
}
});
}

boolean flag = false;

private void cutblock(Color fg, String info) {
text.removeLineStyleListener(lineStyler);

try {
Point sel = text.getSelectionRange();
String txt = text.getSelectionText();
if (txt == null || txt.indexOf("#@start") > -1
|| txt.indexOf("#@end") > -1) {
msgbox("此处代码不适合切块!");
return;
}
Event eventz = new Event();
Point selection = text.getSelection();
eventz.start = selection.x;
eventz.end = selection.y;
if (info == null) {
eventz.text = "#@start@#" + txt + "#@end@#";
} else {
eventz.text = "#@start@#" + txt + "@var@" + info + "#@end@#";
}
try {
Util.privateMethodRun(StyledText.class, "sendKeyEvent", text,
new Object[] { eventz });
} catch (Exception e) {
e.printStackTrace();
}

if ((sel == null) || (sel.y == 0))
return;
text.setStyleRange(new StyleRange(sel.x, eventz.text.length(), fg,
null, SWT.NORMAL));
} catch (Exception e) {
}

}

private void initializeColors() {
Display display = Display.getDefault();
RED = new Color(display, new RGB(255, 0, 0));
BLUE = new Color(display, new RGB(0, 0, 255));
GREEN = new Color(display, new RGB(0, 128, 0));
}

void menuFileExit() {
shell.close();
}

private void msgbox(String msg) {
MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK);
box.setMessage(msg);
box.open();
}

private void createStyledText() {
initializeColors();
text = new StyledText(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL
| SWT.H_SCROLL);

GridData spec = new GridData();
spec.horizontalAlignment = GridData.FILL;
spec.grabExcessHorizontalSpace = true;
spec.verticalAlignment = GridData.FILL;
spec.grabExcessVerticalSpace = true;
text.setLayoutData(spec);
text.addLineStyleListener(lineStyler);

}

private Shell open(Display display) {
createShell(display);
action = new SaveAction(shell);
createMenuBar();
createToolBar();
createStyledText();
action.setText(text);
shell.setSize(850, 650);
shell.open();
return shell;
}

private void openFile(final StyledText text, String name) {
final String textString;
if ((name == null) || (name.length() == 0))
return;
File file = new File(name);

try {

textString = Util.readFile(file);
} catch (IOException e) {
String message = "文件" + file.getName() + "读写错误";
msgbox(message);
return;

} catch (Exception e) {
String message = "文件" + file.getName() + "不存在";
msgbox(message);
return;
}
// Guard against superfluous mouse move events -- defer action until
// later
Display display = text.getDisplay();
display.asyncExec(new Runnable() {
public void run() {
text.setText(textString);
}
});

}

void openFile() {
if (fileDialog == null) {
fileDialog = new FileDialog(shell, SWT.OPEN);
}
fileDialog.setFilterExtensions(new String[] { "*.vm", "*.htm",
"*.html", "*.*" });
String name = fileDialog.open();
openFile(text, name);
}

void setFont() {
FontDialog fontDialog = new FontDialog(shell);
fontDialog.setFontList((text.getFont()).getFontData());
FontData fontData = fontDialog.open();
if (fontData != null) {
Font newFont = new Font(shell.getDisplay(), fontData);
text.setFont(newFont);
if (font != null)
font.dispose();
font = newFont;
}
}

}
全部代码见附件

 

分享到:
评论

相关推荐

    漂亮的php168模板

    【标题】"漂亮的php168模板"是一个针对PHP168内容管理系统设计的美观且功能丰富的网站模板。PHP168是一个广泛使用的开源CMS(内容管理系统),它为开发者和网站管理员提供了构建动态网站的强大工具。 【描述】提到...

    php168模板下载

    **PHP168模板下载详解** PHP168是一个基于PHP和MySQL的开源网站系统,其特点是功能强大、易于扩展,适用于快速构建各种类型的网站。模板在PHP168系统中扮演着至关重要的角色,它们决定了网站的外观和用户体验。...

    PHP168 健康频道模板

    总的来说,PHP168健康频道模板是构建专业健康网站的高效工具,它结合了美观的设计和强大的功能性,旨在为用户提供优质的健康信息服务平台。通过深入理解和熟练运用这个模板,开发者可以快速创建一个既满足用户需求又...

    PHP168 绿色公司企业模板

    在技术层面上,PHP168模板可能基于Bootstrap框架,这是一款流行的前端开发工具,它提供了栅格系统、组件和JavaScript插件,使得构建响应式和移动优先的网站变得简单。同时,模板可能还集成了MySQL数据库,用于存储和...

    PHP168 yoka风格模板

    PHP168是一款基于PHP语言开发的开源网站内容管理系统,它为开发者提供了强大的网站构建工具和丰富的模板选择。这款框架以其高效、灵活和易用性而受到许多中小企业的青睐,尤其适合快速搭建企业级网站。PHP168的核心...

    PHP168校园风格模板.rar

    【PHP168校园风格模板】是一个专为教育机构或校园网站设计的模板资源,它基于PHP168框架构建,旨在提供一个易于定制、功能丰富的网页设计基础。该模板适用于展示学校信息、课程安排、新闻公告、学生活动等多种校园...

    PHP网站模板,网站源码,带PHP后台:涂漆色彩专题页面模板是一款CSS模板,适合做专题页面网站模板.zip

    涂漆色彩专题页面模板是一款专为PHP网站设计的CSS模板,它包含了丰富的设计元素和功能,使得构建专题页面变得更为简单高效。这款模板以其独特的涂漆色彩风格吸引眼球,能够帮助网站在视觉上脱颖而出,为用户提供更加...

    PHP168 佰网门户模板

    PHP168 佰网门户模板

    我整理的比较经典的PHP168模板

    【PHP168模板】是基于PHP编程语言和MySQL数据库设计的一种网站模板系统,它为开发者和非开发者提供了一种快速构建网站的解决方案。PHP168以其易用性、可扩展性和灵活性著称,尤其适合初学者和中小企业。在这个“我...

    php168全新模板

    描述中提到的"仿php168首页模板"表明,这个新模板可能借鉴了PHP168官方网站的首页设计,但进行了创新和个性化调整,以满足不同用户的需求。通常,首页模板是网站的第一印象,因此它的设计至关重要,需要吸引用户并...

    php168全站模板

    ** 风格制作:超音速 QQ:47684500 ** 演示网址:http://www.ycmoban.com/zzxt004/ ****************************************************************************** 相关说明: 一、风格安装包结构: - images...

    php168 v6模板开发详细介绍

    PHP168 v6提供了模板调试工具,可以帮助开发者检查模板语法错误、变量引用问题等。同时,通过缓存机制、模板压缩等技术手段,可以显著提升模板渲染速度,优化用户体验。 总之,PHP168 v6的模板开发不仅涵盖了基础的...

    齐博CMS(原PHP168)模板制作助手

    模板制作助手是为配合齐博CMS系统,帮助用户更高效地进行网站界面设计和定制的专业工具。V7版的发布意味着该助手在原有基础上进行了升级优化,提供了更多实用的功能和改进,以满足用户不断提升的需求。 首先,我们...

    齐博CMS(原PHP168)模板制作助手--V7版.rar

    总结来说,齐博CMS(原PHP168)模板制作助手V7版是一款强大的工具,它简化了网站模板设计的过程,使得非专业程序员也能轻松创建出专业的网站外观。结合齐博CMS系统的其他功能,用户可以构建出高效、美观且易于管理的...

    PHP168 庄子御风模板

    【PHP168庄子御风模板】是针对PHP168内容管理系统设计的一款网站模板,主要用于提升网站的视觉效果和用户体验。PHP168是一个流行的开源CMS(内容管理系统),它提供了一套全面的工具来构建和管理动态网站,包括新闻...

    PHP168 图片系统模板

    【PHP168 图片系统模板】是一款专为图片展示和管理设计的网页模板,它提供了丰富的布局选项和自定义功能,旨在帮助开发者快速构建出美观且高效的图片展示平台。这款模板基于PHP语言开发,结合了高效能和易用性,使得...

    PHP168 金光灿烂系列模板

    PHP168的模板系统通常包含多个页面布局,例如首页、列表页、内容页等,以满足不同类型的网站需求。金光灿烂系列可能提供了多样化的页面样式,以适应新闻、博客、产品展示等多种内容展示形式。这些模板通常包括CSS...

    65company_php168(后台模板)

    "65company_php168"是一个专门为PHP开发的后台管理模板,主要服务于网站的后端界面设计。这个模板提供了一套完整的用户界面框架,帮助开发者快速构建功能丰富的后台管理系统。下面将详细介绍这个模板的核心特点、...

Global site tag (gtag.js) - Google Analytics