first commit

This commit is contained in:
Terry Chang
2018-08-31 17:02:59 +09:00
commit 4d239e430d
100 changed files with 25852 additions and 0 deletions

87
.gitignore vendored Normal file
View File

@@ -0,0 +1,87 @@
# Created by https://www.gitignore.io/api/maven,eclipse,java-web
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Eclipse Patch ###
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Annotation Processing
.apt_generated
### Java-Web ###
## ignoring target file
target/
### Maven ###
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
# End of https://www.gitignore.io/api/maven,eclipse,java-web

1
lombok.config Normal file
View File

@@ -0,0 +1 @@
lombok.log.fieldName = logger

244
pom.xml Normal file
View File

@@ -0,0 +1,244 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.terry</groupId>
<artifactId>xplatform</artifactId>
<name>xplatform</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.8</java-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Web -->
<jsp.version>2.2</jsp.version>
<jstl.version>1.2</jstl.version>
<servlet.version>2.5</servlet.version>
<!-- Spring -->
<spring-framework.version>4.3.18.RELEASE</spring-framework.version>
<!-- AspectJ -->
<aspectj.version>1.8.13</aspectj.version>
<!-- 데이터베이스 버전 -->
<h2db.version>1.4.197</h2db.version>
<oracle.version>11.2.0</oracle.version>
<!-- Mybatis -->
<mybatis.version>3.4.6</mybatis.version>
<mybatis-spring.version>1.3.2</mybatis-spring.version>
<!-- Logging -->
<logback.version>1.2.3</logback.version>
<slf4j.version>1.7.25</slf4j.version>
<log4jdbc.version>1.16</log4jdbc.version>
<!-- Jackson Json Version -->
<jackson.version>2.5.1</jackson.version>
<!-- jackson.version>1.9.13</jackson.version -->
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-framework.version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Spring Transactions -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- Spring Transactions -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<!-- Logging with SLF4J & LogBack -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>runtime</scope>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2db.version}</version>
<scope>compile</scope>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>${log4jdbc.version}</version>
</dependency>
<!-- jackson json -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.12.Final</version>
</dependency>
<dependency>
<groupId>com.tobesoft</groupId>
<artifactId>xplatform</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/xplatform-xapi-1.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.tobesoft</groupId>
<artifactId>miplatform</artifactId>
<version>3.2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/miplatform-3.2.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>

146
readme.txt Normal file
View File

@@ -0,0 +1,146 @@
살펴봐야 할 내용을 정리한겁니다..
여기 문서에 적힌 대로 셋팅해보시고 테스트 꼭 진행하세요..
크게는 2가지 내용에 대해 설명할껍니다..
먼저 첫번째로 Mapper 인터페이스로 DAO를 대체하는 방법은..
1. 먼저 mybatis mapper 파일을 보세요..
제가 드린 소스를 기준으로 설명드리면 src/main/resources/com/terry/xplatform/resources/mybatis/mapper 디렉토리에 있는 sample.xml 입니다..
그 파일을 열어보세요..
그 파일을 보면 <mapper namespace="com.terry.xplatform.dao.SampleDAO"> 요렇게 있을겁니다..
즉 이 파일은 com.terry.xplatform.dao 패키지에 있는 SampleDAO 인터페이스와 매핑되는거에요..
그리고 현재 열어놓은 xml 파일을 보시면 insert, update 태그들이 보이실겁니다..이때 보셔야 할 것이 id 부분이에요..
왜냐면 이 아이디와 동일한 이름의 메소드를 만들어야 합니다..
일단 이렇게만 기억해두시고 com.terry.xplatform.dao 패키지에 있는 SampleDAO 인터페이스 파일을 열어보세요..
인터페이스이기 때문에 구체적으로 코딩된 내용은 없고 메소드의 정의만 있습니다..
@Mapper
public interface SampleDAO {
public void insertSample(SampleVO sampleVO);
public void updateSample(SampleVO sampleVO);
public void deleteSample(@Param("id") int id);
public SampleVO selectSample(@Param("id") int id);
public List<SampleVO> selectSampleList(SampleDefaultVO sampleDefaultVO);
public long selectSampleListTotCnt(SampleDefaultVO sampleDefaultVO);
public Map<String, String> dataType();
}
여기서 보셔야 할 것은 @Mapper 인터페이스에요..이걸 적어줘야 합니다..
그리고 메소드 이름들을 보세요..위에서 언급했던 sample.xml 에 있는 각 태그들의 id와 일치되죠?
즉 해당 태그의 id에 대한 부분을 같은 이름의 메소드가 처리한다고 보시면 됩니다..
query 가 있는 xml을 저는 VO로 하기 때문에 메소드의 파라미터들을 VO로 받았지만 SQL 작업을 하면 VO로 받지 않고 int 값 같은 단일 타입으로 받아야 할 때도 있습니다..
그때 사용되는게 @Param 어노테이션입니다..
public void deleteSample(@Param("id") int id); 이걸 기준으로 설명드리면 얘와 매핑되는 것은
<delete id="deleteSample" parameterType="int">
<![CDATA[
DELETE FROM SAMPLE
WHERE ID=#{id}
]]>
</delete>
이것과 매핑되겠죠? 여기서 보시면 parameterType 속성을 vo의 alias가 아닌 int 타입으로 줬습니다..
그렇기땜에 #{id}는 특정 VO의 id란 이름의 멤버변수가 아니에요..
이럴때 사용되는게 @Param 어노테이션입니다..
@Param("id")로 해서 query 문에서 사용되는 변수명을 적어주는거에요..
그러면 그게 해당 query문의 변수와 매핑이 됩니다..
그러면 이렇게 만든 Mapper 인터페이스를 어떻게 사용하냐면..
src/main/java/com/terry/xplatform/service/impl 패키지에 있는 SampleServiceImpl 클래스를 열어보세요..
그러면 다음과 같은 부분이 있을 겁니다..
@Autowired
private SqlSession sqlSession;
SampleDAO sampleDAO;
@PostConstruct
public void init() {
sampleDAO = sqlSession.getMapper(SampleDAO.class);
}
이렇게 SqlSession 타입 멤버변수를 하나 설정하고
@PostConstruct 어노테이션을 통해 SampleServiceImpl이 초기화될때 sampleDAO 변수를 sqlSession.getMapper 메소드를 통해 설정해주는거에요..
여기서 SampleDAO는 위에서 언급했던 @Mapper 어노테이션이 붙은 SampleDAO 인터페이스입니다..
그 다음엔 Service에서 우리가 DAO 사용하듯 그냥 하시면 되요..
기존에 SqlSession.select 메소드나 insert 메소드를 DAO 클래스에서 일일이 작성할 필요가 없습니다..
이렇게 크게 2가지 설명한다는 내용중 하나 설명했고 또 하나는 VO 클래스의 alias 등록하는 방법이에요..
일전에 저랑 스터디 카페에서 이 부분에 대해 얘기할때 일일이 mubatis config 파일에 등록한다고 했는데..
좀더 찾아보니 스캔해서 등록해주는 기능이 있더군요..
/src/main/resources/com/terry/xplatform/resources/mybatis/config 에 가시면 mybatis-config.xml 파일이 있습니다..
그 내용도 얼마 안되니 여기다가 쓸께요..
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="false" />
</settings>
<typeAliases>
<package name="com.terry.xplatform.vo" />
</typeAliases>
</configuration>
여기서 봐야 할것은 <typeAliases> 태그의 하위 태그로 있는 <package> 태그 입니다..
여기에 VO가 들어있는 패키지를 써주는거에요..그러나 패키지를 써준다고 끝나는게 아닙니다..
왜냐면 패키지 안에 있는것들중 mybatis vo로 등록할 것도 있고 그렇지 않은 것도 있기 때문에..
VO에 별도 기술해줘야 할 것이 있어요..
com.terry.xplatform.vo 패키지에 있는 SampleVO 클래스를 열어보세요..
소스도 얼마안되니 여기다가 바로 써드릴께요..
@Data
@AllArgsConstructor
@Alias("SampleVO")
public class SampleVO extends XplatformVO {
/**
*
*/
private static final long serialVersionUID = -4891478433457788136L;
/** 아이디 */
private String id;
/** 이름 */
private String name;
/** 내용 */
private String description;
/** 사용여부 */
private String useYn;
/** 등록자 */
private String regUser;
}
여기서 봐야 할 부분중 @Alias가 있습니다..
@Alias 어노테이션에 mybatis 에서 사용할 VO의 이름을 써주는거에요..
그러면 위에서 <package> 태그에 설정되어 있는 패키지 안의 클래스들에서 @Alias 어노테이션이 있는 것만 Mybatis의 VO로 등록해서 사용하게 됩니다..
@Alias("SampleVO") 로 했기 때문에 query 문이 있는 sample.xml 문에서 다음과 같이 이 클래스를 사용할 수 있는거에요..
<insert id="insertSample" parameterType="SampleVo">
<![CDATA[
INSERT INTO SAMPLE
( ID
, NAME
, DESCRIPTION
, USE_YN
, REG_USER )
VALUES ( #{id}
, #{name}
, #{description}
, #{useYn}
, #{regUser} )
]]>
</insert>
parameterType 속성에 있는 SampleVO를 @Alias 어노테이션에 붙인 이름으로 찾아서 매핑하는거죠..
그리고 제가 보내드린 query xml 파일을 보시면 거기에 동적 sql 하는 부분이 있습니다..
그 부분이 ibatis하고는 다른 부분이 있으니까 꼭 보세요..
문서 보시고 모르는 부분은 전화주세요..

View File

@@ -0,0 +1,28 @@
package com.terry.xplatform.config.handler;
import org.springframework.dao.DataAccessException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value={DataAccessException.class})
public ModelAndView processDataAccessException(DataAccessException ex){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("ErrorCode", "-1");
modelAndView.addObject("ErrorMsg", ex.getMessage());
modelAndView.setViewName("errorView");
return modelAndView;
}
@ExceptionHandler(value={Exception.class})
public ModelAndView processException(Exception ex){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("ErrorCode", "-1");
modelAndView.addObject("ErrorMsg", ex.getMessage());
modelAndView.setViewName("errorView");
return modelAndView;
}
}

View File

@@ -0,0 +1,386 @@
package com.terry.xplatform.config.utils;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.core.MethodParameter;
import org.springframework.util.ReflectionUtils;
import com.tobesoft.xplatform.data.ColumnHeader;
import com.tobesoft.xplatform.data.DataSet;
import com.tobesoft.xplatform.data.DataTypes;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class XplatformReflectionUtils {
/**
* Xplatform의 DataSet에 있는 특정 컬럼의 값을 VO와 매핑하는 메소드
* @param field
* @param columnHeader
* @param obj
* @param columnValue
*/
public static void setField(Field field, ColumnHeader columnHeader, Object obj, String columnValue) {
ReflectionUtils.makeAccessible(field); //Field가 private 등의 접근할 수 없는 상황일때도 접근할 수 있게 한다
Class<?> fieldType = field.getType();
if(fieldType == String.class) {
ReflectionUtils.setField(field, obj, columnValue);
} else if(fieldType == char.class || fieldType == Character.class) {
ReflectionUtils.setField(field, obj, columnValue.charAt(0));
} else if(fieldType == short.class || fieldType == Short.class) {
ReflectionUtils.setField(field, obj, Short.parseShort(columnValue, 10));
} else if(fieldType == int.class || fieldType == Integer.class) {
ReflectionUtils.setField(field, obj, Integer.parseInt(columnValue, 10));
} else if(fieldType == long.class || fieldType == Long.class) {
ReflectionUtils.setField(field, obj, Long.parseLong(columnValue, 10));
} else if(fieldType == float.class || fieldType == Float.class) {
ReflectionUtils.setField(field, obj, Float.parseFloat(columnValue));
} else if(fieldType == double.class || fieldType == Double.class) {
ReflectionUtils.setField(field, obj, Double.parseDouble(columnValue));
} else if(fieldType == Date.class) {
int dataType = columnHeader.getDataType();
Calendar calendar = Calendar.getInstance();
if(dataType == DataTypes.DATE) {
if(columnValue.length() == 8) { // yyyyMMdd
String year = columnValue.substring(0, 4);
String month = columnValue.substring(4, 6);
String day = columnValue.substring(6, 8);
calendar.set(Calendar.YEAR, Integer.parseInt(year, 10));
calendar.set(Calendar.MONTH, Integer.parseInt(month, 10) - 1);
calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day, 10));
} else { // DataTypes.DATE 타입에 8자리 숫자가 들어와야 하는데 그러지 않은 것이므로 예외처리 대상이다
}
} else if(dataType == DataTypes.TIME) {
if(columnValue.length() > 6) {
String hour = columnValue.substring(0, 2);
String minute = columnValue.substring(2, 4);
String second = columnValue.substring(4, 6);
String milisecond = columnValue.substring(6, 9);
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour, 10));
calendar.set(Calendar.MINUTE, Integer.parseInt(minute, 10));
calendar.set(Calendar.SECOND, Integer.parseInt(second, 10));
calendar.set(Calendar.MILLISECOND, Integer.parseInt(milisecond, 10));
} else { // DataTypes.DATE 타입에 6자리 이상의 숫자가 들어와야 하는데 그러지 않은 것이므로 예외처리 대상이다
}
} else if(dataType == DataTypes.DATE_TIME) {
if(columnValue.length() == 17) {
String year = columnValue.substring(0, 4);
String month = columnValue.substring(4, 6);
String day = columnValue.substring(6, 8);
String hour = columnValue.substring(8, 10);
String minute = columnValue.substring(10, 12);
String second = columnValue.substring(12, 14);
String milisecond = columnValue.substring(14);
calendar.set(Calendar.YEAR, Integer.parseInt(year, 10));
calendar.set(Calendar.MONTH, Integer.parseInt(month, 10) - 1);
calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day, 10));
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour, 10));
calendar.set(Calendar.MINUTE, Integer.parseInt(minute, 10));
calendar.set(Calendar.SECOND, Integer.parseInt(second, 10));
calendar.set(Calendar.MILLISECOND, Integer.parseInt(milisecond, 10));
} else { // DataTypes.DATE 타입에 14자리 이상의 숫자가 들어와야 하는데 그러지 않은 것이므로 예외처리 대상이다
}
}
ReflectionUtils.setField(field, obj, calendar.getTime());
}
}
/*
public static <T> Collection<T> getCollection(Class clazz) {
Collection<T> result = null;
if(clazz == ArrayList.class) {
result = new ArrayList<T>();
} else if(clazz == HashSet.class) {
result = new HashSet<T>();
}
return result;
}
*/
/**
* Java Reflection에서 Field 객체를 가져올때 해당 객체의 Super 클래스들에 대한 Field를 같이 가져오는 것이 없어서 별도로 제작했다
* @param t
* @return 해당 객체가 가지고 있는 Field 객체들 및 해당 객체의 Super 클래스들이 가지고 있는 Field 객체들이 들어있는 List 객체
*/
public static <T> List<Field> getFields(T t) {
List<Field> fields = new ArrayList<>();
Class<?> clazz = t.getClass();
while (clazz != Object.class) {
fields.addAll(Arrays.asList(clazz.getDeclaredFields()));
clazz = clazz.getSuperclass();
}
return fields;
}
/**
* DataSet 클래스 객체를 Collection 인터페이스 계열의 클래스 객체로 변환하는 메소드
* @param dataSet 변환대상이 되는 DataSet
* @param collectionType 변환되는 Collection 계열 인터페이스 및 클래스 타입
* @param genericClass 변환되는 Collection 계열 인터페이스 및 클래스의 내부에 들어사는 클래스 타입
* @return
* @throws InstantiationException
* @throws IllegalAccessException
*/
public static Object convertDataSetToCollection(DataSet dataSet, Class<?> collectionType, Class<?> genericClass) throws InstantiationException, IllegalAccessException {
Object result = null;
int insertUpdateRowCount = dataSet.getRowCount();
int removeRowCount = dataSet.getRemovedRowCount();
int columnCount = dataSet.getColumnCount(); // 데이터셋에서 삭제된 데이터행(DataRow)는 별도 공간에 저장되기 때문에 이에 대한 처리를 위해 별도 변수를 잡고 이에 대한 작업을 진행한다
if(collectionType.isInterface()) { // Colleciton 계열 인터페이스로 선언한 경우
if(collectionType.equals(List.class)) { // List 타입으로 받을 경우(ArrayList를 생성해서 return 해준다)
List<Object> listResult = new ArrayList<Object>();
// 저장(insert, update)되어야 할 DataSet의 row들에 대한 처리
for(int i=0; i < insertUpdateRowCount; i++) {
if(Map.class.isAssignableFrom(genericClass)) {
Map<String, Object> obj = makeDataAsMap(genericClass, dataSet, columnCount, i);
listResult.add(obj);
} else {
Object obj = makeDataAsObject(genericClass, dataSet, columnCount, i);
listResult.add(obj);
}
}
// 삭제(delete)되어야 할 DataSet의 row들에 대한 처리
for(int i = 0; i < removeRowCount; i++) {
if(Map.class.isAssignableFrom(genericClass)) {
Map<String, Object> obj = makeRemovedDataAsMap(genericClass, dataSet, columnCount, i);
listResult.add(obj);
} else {
Object obj = makeRemovedDataAsObject(genericClass, dataSet, columnCount, i);
listResult.add(obj);
}
}
result = listResult;
} else if(collectionType.equals(Set.class)) { // Set 타입으로 받을 경우(HashSet을 생성해서 return 해준다)
Set<Object> setResult = new HashSet<Object>();
// 저장(insert, update)되어야 할 DataSet의 row들에 대한 처리
for(int i=0; i < insertUpdateRowCount; i++) {
if(Map.class.isAssignableFrom(genericClass)) {
Map<String, Object> obj = makeDataAsMap(genericClass, dataSet, columnCount, i);
setResult.add(obj);
} else {
Object obj = makeDataAsObject(genericClass, dataSet, columnCount, i);
setResult.add(obj);
}
}
// 삭제(delete)되어야 할 DataSet의 row들에 대한 처리
for(int i = 0; i < removeRowCount; i++) {
if(Map.class.isAssignableFrom(genericClass)) {
Map<String, Object> obj = makeRemovedDataAsMap(genericClass, dataSet, columnCount, i);
setResult.add(obj);
} else {
Object obj = makeRemovedDataAsObject(genericClass, dataSet, columnCount, i);
setResult.add(obj);
}
}
result = setResult;
}
} else { // List, Set 같은 인터페이스가 아니라 ArrayList, HashSet 같은 Collection 인터페이스 구현 클래스로 받은 경우
Object checkObject = collectionType.newInstance();
Class<?> checkType = checkObject.getClass();
if(Collection.class.isAssignableFrom(checkType)) {
// 저장(insert, update)되어야 할 DataSet의 row들에 대한 처리
for(int i=0; i < insertUpdateRowCount; i++) {
if(Map.class.isAssignableFrom(genericClass)) {
Map<String, Object> obj = makeDataAsMap(genericClass, dataSet, columnCount, i);
((Collection)(checkObject)).add(obj);
} else {
Object obj = makeDataAsObject(genericClass, dataSet, columnCount, i);
((Collection)(checkObject)).add(obj);
}
}
// 삭제(delete)되어야 할 DataSet의 row들에 대한 처리
for(int i = 0; i < removeRowCount; i++) {
if(Map.class.isAssignableFrom(genericClass)) {
Map<String, Object> obj = makeRemovedDataAsMap(genericClass, dataSet, columnCount, i);
((Collection)(checkObject)).add(obj);
} else {
Object obj = makeRemovedDataAsObject(genericClass, dataSet, columnCount, i);
((Collection)(checkObject)).add(obj);
}
}
}
result = checkObject;
}
return result;
}
/**
* DataSet 객체에서 특정 row에 해당되는 객체를 Map<String, Object> 형태로 변환한다
* 변환된 Map에서 key는 해당 DataSet의 column 이름이다.
* @param dataSet DataSet 객체
* @param colCount DataSet 객체의 컬럼 갯수
* @param rowIdx DataSet 객체에서 읽고자 하는 row의 인덱스
* @return
* @throws IllegalAccessException
* @throws InstantiationException
*/
private static Map<String, Object> makeDataAsMap(Class<?> mapType, DataSet dataSet, int colCount, int rowIdx) throws InstantiationException, IllegalAccessException {
Map<String, Object> result = null;
if(mapType.isInterface()) {
result = new HashMap<String, Object>();
} else {
result = (Map<String, Object>) mapType.newInstance();
}
result.put("rowType", dataSet.getRowType(rowIdx));
result.put("storeDataChanges", dataSet.isStoreDataChanges());
for(int j=0; j < colCount; j++) {
Object columnValue = dataSet.getObject(rowIdx, j); // 데이터셋에서 해당 row에 대한 column 값을 Object로 가져온다
ColumnHeader columnHeader = dataSet.getColumn(j);
String columnName = columnHeader.getName();
result.put(columnName, columnValue);
}
return result;
}
/**
* DataSet 객체에 저장되어 있는 삭제된 데이터에서 특정 row에 해당되는 객체를 Map<String, Object> 형태로 변환한다
* 변환된 Map에서 key는 해당 DataSet의 column 이름이다.
* @param dataSet DataSet 객체
* @param colCount DataSet 객체의 컬럼 갯수
* @param rowIdx DataSet 객체에서 읽고자 하는 row의 인덱스
* @return
* @throws IllegalAccessException
* @throws InstantiationException
*/
private static Map<String, Object> makeRemovedDataAsMap(Class<?> mapType, DataSet dataSet, int colCount, int rowIdx) throws InstantiationException, IllegalAccessException {
Map<String, Object> result = null;
if(mapType.isInterface()) {
result = new HashMap<String, Object>();
} else {
result = (Map<String, Object>) mapType.newInstance();
}
result.put("rowType", DataSet.ROW_TYPE_DELETED);
result.put("storeDataChanges", dataSet.isStoreDataChanges());
for(int j=0; j < colCount; j++) {
Object columnValue = dataSet.getRemovedData(rowIdx, j); // 데이터셋에서 해당 row에 대한 column 값을 Object로 가져온다
ColumnHeader columnHeader = dataSet.getColumn(j);
String columnName = columnHeader.getName();
result.put(columnName, columnValue);
}
return result;
}
/**
* DataSet 객체에서 특정 row에 해당되는 객체를 특정 클래스의 객체로 변환한다
* @param innerClass 특정 클래스타입
* @param dataSet DataSet 객체
* @param colCount DataSet 객체의 컬럼 갯수
* @param rowIdx DataSet 객체에서 읽고자 하는 row의 인덱스
* @return
* @throws InstantiationException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
private static Object makeDataAsObject(Class<?> innerClass, DataSet dataSet, int colCount, int rowIdx) throws InstantiationException, IllegalArgumentException, IllegalAccessException {
Object obj = innerClass.newInstance();
Field rowTypeField = ReflectionUtils.findField(innerClass, "rowType");
Field storeDataChangesField = ReflectionUtils.findField(innerClass, "storeDataChanges");
ReflectionUtils.makeAccessible(rowTypeField);
ReflectionUtils.makeAccessible(storeDataChangesField);
rowTypeField.setInt(obj, dataSet.getRowType(rowIdx));
storeDataChangesField.setBoolean(obj, dataSet.isStoreDataChanges());
for(int j=0; j < colCount; j++) {
String columnValue = dataSet.getString(rowIdx, j); // 데이터셋에서 해당 row에 대한 column 값을 String으로 가져온다
ColumnHeader columnHeader = dataSet.getColumn(j);
String columnName = columnHeader.getName();
Field field = ReflectionUtils.findField(innerClass, columnName);
if(field == null) { // 컬럼이름으로 된 멤버변수를 찾지 못한 경우
continue;
} else {
XplatformReflectionUtils.setField(field, columnHeader, obj, columnValue);
}
}
return obj;
}
/**
* DataSet 객체에서 특정 row에 해당되는 객체를 특정 클래스의 객체로 변환한다
* @param innerClass 특정 클래스타입
* @param dataSet DataSet 객체
* @param colCount DataSet 객체의 컬럼 갯수
* @param rowIdx DataSet 객체에서 읽고자 하는 row의 인덱스
* @return
* @throws InstantiationException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
private static Object makeRemovedDataAsObject(Class<?> innerClass, DataSet dataSet, int colCount, int rowIdx) throws InstantiationException, IllegalArgumentException, IllegalAccessException {
Object obj = innerClass.newInstance();
Field rowTypeField = ReflectionUtils.findField(innerClass, "rowType");
Field storeDataChangesField = ReflectionUtils.findField(innerClass, "storeDataChanges");
ReflectionUtils.makeAccessible(rowTypeField);
ReflectionUtils.makeAccessible(storeDataChangesField);
// 삭제된 행의 rowType을 읽어오는 메소드는 없기 때문에(DataSet 클래스의 getRowType 메소드는 저장이나 변경된 데이터셋에 대한 rowType 을 읽어오는 것이지 삭제된 행에 대한 rowType을 읽는 것이 아니다)
// 이렇게 된 원인은 삭제된 행을 별도로 저장하는 상황때문에 그리 된거지만 어차피 삭제된 행은 rowType이 DataSet.ROW_TYPE_DELETED로 설정되기 때문에 이것으로 강제 설정을 해준다
rowTypeField.setInt(obj, DataSet.ROW_TYPE_DELETED);
storeDataChangesField.setBoolean(obj, dataSet.isStoreDataChanges());
for(int j=0; j < colCount; j++) {
String columnValue = dataSet.getRemovedStringData(rowIdx, j); // 삭제된 데이터의 해당 row에 대한 column 값을 String으로 가져온다
ColumnHeader columnHeader = dataSet.getColumn(j);
String columnName = columnHeader.getName();
Field field = ReflectionUtils.findField(innerClass, columnName);
if(field == null) { // 컬럼이름으로 된 멤버변수를 찾지 못한 경우
continue;
} else {
XplatformReflectionUtils.setField(field, columnHeader, obj, columnValue);
}
}
return obj;
}
}

View File

@@ -0,0 +1,7 @@
package com.terry.xplatform.config.xplatform;
import com.tobesoft.xplatform.tx.PlatformType;
public class XplatformConstants implements PlatformType {
public static final String CONTENT_TYPE_CSV = "csv";
}

View File

@@ -0,0 +1,13 @@
package com.terry.xplatform.config.xplatform.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequestDataSet {
String name() default ""; // 읽고자하는 데이터셋 이름을 받아들이는 부분
}

View File

@@ -0,0 +1,13 @@
package com.terry.xplatform.config.xplatform.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequestDataSetList {
String name() default ""; // 읽고자하는 데이터셋 리스트 이름을 받아들이는 부분
}

View File

@@ -0,0 +1,13 @@
package com.terry.xplatform.config.xplatform.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequestVariable {
String name() default ""; // 읽고자하는 변수명 이름을 받아들이는 부분
}

View File

@@ -0,0 +1,20 @@
package com.terry.xplatform.config.xplatform.data;
import com.terry.xplatform.vo.SampleDefaultVO;
import lombok.Getter;
import lombok.Setter;
/**
* XPlatform의 DataSet에서 변환되는 VO는 이 클래스를 반드시 상속받아야 한다
* @author Terry Chang
*
*/
@Getter
@Setter
public abstract class XplatformVO extends SampleDefaultVO {
private int rowType;
private boolean storeDataChanges;
}

View File

@@ -0,0 +1,49 @@
package com.terry.xplatform.config.xplatform.support;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.springframework.util.StreamUtils;
public class HttpRequestWrapper extends HttpServletRequestWrapper {
private byte[] bodyData;
public HttpRequestWrapper(HttpServletRequest request) throws IOException {
super(request);
// TODO Auto-generated constructor stub
InputStream is = request.getInputStream();
bodyData = StreamUtils.copyToByteArray(is);
}
@Override
public ServletInputStream getInputStream() throws IOException {
// TODO Auto-generated method stub
final ByteArrayInputStream bis = new ByteArrayInputStream(bodyData);
return new ServletImpl(bis);
}
}
class ServletImpl extends ServletInputStream {
private InputStream is;
public ServletImpl(InputStream bis) {
is = bis;
}
@Override
public int read() throws IOException {
return is.read();
}
@Override
public int read(byte[] b) throws IOException {
return is.read(b);
}
}

View File

@@ -0,0 +1,54 @@
package com.terry.xplatform.config.xplatform.support;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;
/**
* HttpServletRequest 객체를 한번 감싸주어서 request로 전달해주는 Filter이다.
* 일반적으로 HttpServletRequest 객체의 request body를 읽었을 경우 Stream으로 읽어나가기 때문에
* 한번 읽게 되면 다시 읽을수가 없는 상황이 된다.
* 그래서 HttpServletRequest 객체를 한번 감싸는 Wrapper 클래스를 만든뒤에 그 클래스에 원래 request의 InputStream을 배열로 보관한뒤
* 이 Wrapper 클래스 객체를 전달함으로써 이걸 이용하는 클래스는 Wrapper 클래스 객체의 배열을 읽게 함으로써 여러번 읽을수 있게끔 해준다
*
* 이 클래스를 Spring Bean으로 등록할땐 Servlet Context가 아닌 Root Context에 등록해야 한다
* 그래야 web.xml에서 Spring의 DelegatingFilterProxy 클래스를 통해 이 Filter 클래스를 사용할 수 있다(Spring의 Bean Injection 기능 사용이 가능)
* Spring Security에서 설정 xml이 Root Context에 등록되는 것과 같은 의미이다
*
* @author Terry Chang
*
*/
@Service
public class HttpServletRequestWrapperFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
HttpRequestWrapper httpRequestWrapper = new HttpRequestWrapper(httpServletRequest);
chain.doFilter(httpRequestWrapper, response);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,264 @@
package com.terry.xplatform.config.xplatform.support;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.springframework.core.MethodParameter;
import org.springframework.util.ReflectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.support.WebArgumentResolver;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import com.terry.xplatform.config.utils.XplatformReflectionUtils;
import com.terry.xplatform.config.xplatform.annotation.RequestDataSet;
import com.terry.xplatform.config.xplatform.annotation.RequestDataSetList;
import com.terry.xplatform.config.xplatform.annotation.RequestVariable;
import com.tobesoft.xplatform.data.DataSet;
import com.tobesoft.xplatform.data.DataSetList;
import com.tobesoft.xplatform.data.PlatformData;
import com.tobesoft.xplatform.data.Variable;
import com.tobesoft.xplatform.data.VariableList;
import com.tobesoft.xplatform.tx.HttpPlatformRequest;
import com.tobesoft.xplatform.tx.PlatformRequest;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class XplatformArgumentResolver implements HandlerMethodArgumentResolver {
/**
* DataSetList 객체를 HttpServletRequest의 setAttribute 메소드를 이용해서 저장할 때 사용되는 이름
*/
private final String DATASETLIST_NAME;
/**
* VariableList 객체를 HttpServletRequest의 setAttribute 메소드를 이용해서 저장할 때 사용되는 이름
*/
private final String VARIABLELIST_NAME;
public XplatformArgumentResolver() {
this.DATASETLIST_NAME = "dataSetList";
this.VARIABLELIST_NAME = "variableList";
}
public XplatformArgumentResolver(String dataSetListName, String variableListName) {
this.DATASETLIST_NAME = dataSetListName;
this.VARIABLELIST_NAME = variableListName;
}
@Override
public boolean supportsParameter(MethodParameter parameter) {
// TODO Auto-generated method stub
boolean result = false;
if(parameter.hasParameterAnnotation(RequestDataSet.class)){
result = true;
}else if(parameter.hasParameterAnnotation(RequestVariable.class)){
result = true;
}
return result;
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
// TODO Auto-generated method stub
Class<?> type = parameter.getParameterType();
Annotation[] annotations = parameter.getParameterAnnotations();
HttpServletRequest request = (HttpServletRequest)webRequest.getNativeRequest();
// HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
// PlatformRequest platformRequest = new HttpPlatformRequest(request, "utf-8");
DataSetList dataSetList = null;
VariableList variableList = null;
// 관련 처리를 할때마다 매번 Request의 Body에 있는 DataSetList와 VariableList를 만들면 오버헤드 소지가 있어서
// 처음에 한번만 읽고 DataSetList와 VariableList를 HttpServletRequest에 setAttribute를 통해 저장을 한 뒤에
// 다시 읽을때는 Request의 Body를 읽는게 아니라 저장되어 있는 것을 다시 읽어서 재활용한다
if(request.getAttribute(DATASETLIST_NAME) == null || request.getAttribute(VARIABLELIST_NAME) == null) {
PlatformRequest platformRequest = new HttpPlatformRequest(request.getInputStream());
platformRequest.receiveData();
PlatformData platformData = platformRequest.getData();
dataSetList = platformData.getDataSetList();
variableList = platformData.getVariableList();
request.setAttribute(DATASETLIST_NAME, dataSetList);
request.setAttribute(VARIABLELIST_NAME, variableList);
} else {
dataSetList = (DataSetList)request.getAttribute(DATASETLIST_NAME);
variableList = (VariableList)request.getAttribute(VARIABLELIST_NAME);
}
Object result = null;
for(Annotation annotation : annotations){
Class<? extends Annotation> annotationClass = annotation.annotationType();
if(annotationClass.equals(RequestDataSetList.class)){ // @RequestDataSetList 어노테이션에 대한 처리(이 어노테이션은 DataSetList 클래스객체만 파라미터 타입으로 받을 수 있다)
if(type.equals(DataSetList.class)) {
result = dataSetList;
}else{
result = WebArgumentResolver.UNRESOLVED;
}
} else if(annotationClass.equals(RequestDataSet.class)){ // @RequestDataSet 어노테이션에 대한 처리
RequestDataSet requestDataSet = (RequestDataSet)annotation;
String dataSetName = requestDataSet.name();
if(!StringUtils.hasText(dataSetName)) { // DataSet 이름이 빠진것이므로 이거는 예외처리 진행하자
result = WebArgumentResolver.UNRESOLVED;
} else {
DataSet dataSet = dataSetList.get(dataSetName);
if(type.equals(DataSet.class)) { // DataSet 파라미터 타입으로 받을 경우는 해당 이름으로 DataSet을 찾아서 이를 return 해주면 된다
result = dataSet;
} else { // DataSet 클래스 객체는 Collection 인터페이스 계열 클래스들만 변환이 가능하기 때문에 이에 대한 체크
if(Collection.class.isAssignableFrom(type)) {
// Type[] typeArray = ((ParameterizedType)parameter.getGenericParameterType()).getActualTypeArguments();
// Class<?> genericClassType = (Class<?>) ((ParameterizedType)parameter.getGenericParameterType()).getActualTypeArguments()[0];
Type genericType = ((ParameterizedType)parameter.getGenericParameterType()).getActualTypeArguments()[0];
Class<?> genericClass = null;
if(genericType instanceof Class) {
genericClass = (Class<?>)genericType;
} else {
Type rawType = ((ParameterizedType)genericType).getRawType();
genericClass = (Class<?>)rawType;
}
result = XplatformReflectionUtils.convertDataSetToCollection(dataSet, type, genericClass);
} else {
result = WebArgumentResolver.UNRESOLVED;
}
}
}
// XplatformReflectionUtils.convertDataSetToCollection 메소드로 변환할 수 없는 타입일 경우 null이 return 되기 때문에 이에 대한 처리
if(result == null) {
result = WebArgumentResolver.UNRESOLVED;
}
} else if(annotationClass.equals(RequestVariable.class)) { // @RequestVariable 어노테이션에 대한 처리
RequestVariable requestVariable = (RequestVariable)annotation;
String variableName = requestVariable.name();
Variable variable = variableList.get(variableName);
if(StringUtils.hasText(variableName)) { // 특정 변수 이름이 있기 때문에 해당 이름에 대한 값을 낸다
if(type.equals(int.class)) {
result = variable.getInt();
} else if(type.equals(Integer.class)) {
result = new Integer(variable.getInt());
} else if(type.equals(long.class)) {
result = variable.getLong();
} else if(type.equals(Long.class)) {
result = new Long(variable.getLong());
} else if(type.equals(float.class)) {
result = variable.getFloat();
} else if(type.equals(Float.class)) {
result = new Float(variable.getFloat());
} else if(type.equals(double.class)) {
result = variable.getDouble();
} else if(type.equals(Double.class)) {
result = new Double(variable.getDouble());
} else if(type.equals(Date.class)) {
result = variable.getDateTime();
} else if(type.equals(String.class)) {
result = variable.getString();
} else {
result = variable.getObject();
}
} else { // 특정 변수 이름이 없으면 VO로 매핑하는 것이기 때문에 오히려 이런 경우 자바의 데이터타입과는 매핑을 할 수 없다
List<String> keyList = variableList.keyList();
if(Collection.class.isAssignableFrom(type)) {
Collection collectionResult = null;
if(type.isInterface()) {
if(type == List.class) {
collectionResult = new ArrayList<Object>();
} else if(type == Set.class) {
collectionResult = new HashSet<Object>();
}
} else {
collectionResult = (Collection)type.newInstance();
}
for(String key : keyList) {
collectionResult.add(variableList.getObject(key));
}
result = collectionResult;
} else if(Map.class.isAssignableFrom(type)) {
Map<String, Object> mapResult = null;
if(type.isInterface()) {
mapResult = new HashMap<String, Object>();
} else {
mapResult = (Map<String, Object>)type.newInstance();
}
for(String key : keyList) {
mapResult.put(key, variableList.getObject(key));
}
result = mapResult;
} else {
// 객체로 변환하는 과정에서 예외가 발생하면 지원하지 않는 타입이기 때문에 그에 대한 처리를 한다
try {
Object obj = type.newInstance();
for(String key : keyList) {
Field keyField = ReflectionUtils.findField(type, key);
ReflectionUtils.makeAccessible(keyField);
Class<?> keyFieldType = keyField.getType();
if(keyFieldType == int.class) {
keyField.setInt(obj, variableList.getInt(key));
} else if(keyFieldType == Integer.class) {
keyField.set(obj, new Integer(variableList.getInt(key)));
} else if(keyFieldType == long.class) {
keyField.setLong(obj, variableList.getLong(key));
} else if(keyFieldType == Long.class) {
keyField.set(obj, new Long(variableList.getLong(key)));
} else if(keyFieldType == float.class) {
keyField.setFloat(obj, variableList.getFloat(key));
} else if(keyFieldType == Float.class) {
keyField.set(obj, new Float(variableList.getFloat(key)));
} else if(keyFieldType == double.class) {
keyField.setDouble(obj, variableList.getDouble(key));
} else if(keyFieldType == Double.class) {
keyField.set(obj, new Double(variableList.getFloat(key)));
} else if(keyFieldType == Date.class) {
keyField.set(obj, variableList.getDateTime(key));
} else if(keyFieldType == String.class) {
keyField.set(obj, variableList.getString(key));
} else {
keyField.set(obj, variableList.getObject(key));
}
}
result = obj;
} catch(Exception e) {
result = WebArgumentResolver.UNRESOLVED;
}
}
}
}
}
return result;
}
}

View File

@@ -0,0 +1,317 @@
package com.terry.xplatform.config.xplatform.web;
import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.StringUtils;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.web.servlet.support.RequestContext;
import org.springframework.web.servlet.view.AbstractTemplateView;
import com.terry.xplatform.config.utils.XplatformReflectionUtils;
import com.terry.xplatform.config.xplatform.XplatformConstants;
import com.tobesoft.xplatform.data.DataSet;
import com.tobesoft.xplatform.data.DataSetList;
import com.tobesoft.xplatform.data.DataTypes;
import com.tobesoft.xplatform.data.PlatformData;
import com.tobesoft.xplatform.data.Variable;
import com.tobesoft.xplatform.data.VariableList;
import com.tobesoft.xplatform.data.datatype.PlatformDataType;
import com.tobesoft.xplatform.tx.HttpPlatformResponse;
public class XplatformView extends AbstractTemplateView {
/**
* Xplatform의 작업결과가 성공적이었을때의 ErrorCode 값을 설정한다
*/
private final String ERROR_CODE_VALUE;
/**
* Xplatform의 작업결과가 성공적이었을때의 ErrorMsg 값을 설정한다
*/
private final String ERROR_MSG_VALUE;
public XplatformView() {
this.ERROR_CODE_VALUE = "0";
this.ERROR_MSG_VALUE = "";
}
public XplatformView(String errorCodeValue, String errorMsgValue) {
this.ERROR_CODE_VALUE = errorCodeValue;
this.ERROR_MSG_VALUE = errorMsgValue;
}
@Override
protected void renderMergedTemplateModel(Map<String, Object> model, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
// TODO Auto-generated method stub
String contentType = StringUtils.hasText((String)model.get("contentType")) ? (String)model.get("contentType") : XplatformConstants.CONTENT_TYPE_XML;
model.remove("contentType");
if(contentType == XplatformConstants.CONTENT_TYPE_XML) {
VariableList variableList = new VariableList();
DataSetList dataSetList = new DataSetList();
HttpPlatformResponse httpPlatformResponse = new HttpPlatformResponse(httpServletResponse, XplatformConstants.CONTENT_TYPE_XML);
for(Entry<String, Object> entry : model.entrySet()) {
String key = entry.getKey();
Object object = entry.getValue();
if(object instanceof Collection) {
@SuppressWarnings("unchecked")
DataSet dataSet = makeDataSet(key, (Collection<Object>)object);
dataSetList.add(dataSet);
} else {
Variable variable = null;
if(object instanceof Integer) {
variable = new Variable(key, PlatformDataType.INT, (Integer)object);
} else if(object instanceof Long) {
variable = new Variable(key, PlatformDataType.LONG, (Long)object);
} else if(object instanceof Float) {
variable = new Variable(key, PlatformDataType.FLOAT, (Float)object);
} else if(object instanceof Double) {
variable = new Variable(key, PlatformDataType.DOUBLE, (Double)object);
} else if(object instanceof Date) {
variable = new Variable(key, PlatformDataType.DATE, (Date)object);
} else if(object instanceof String){
variable = new Variable(key, PlatformDataType.STRING, (String)object);
} else if(object instanceof Variable) {
variable = (Variable)object;
} else {
// model에 들어있는 클래스 객체중에 DataSet으로 변환할 수 없는 클래스 객체가 들어있는것은 bypass 하게끔 한다
if(skipDataSet(object)) {
continue;
}
// 객체의 멤버변수들 값을 읽어서 한 행짜리 데이터셋으로 return 하는 방법을 고민해보자
DataSet dataSet = makeDataSet(key, object);
dataSetList.add(dataSet);
}
if(variable != null) {
variableList.add(variable);
}
}
}
// XplatformView를 만든다는 것은 그 이전단계까지는 예외없이 진행되었다는 뜻이기 때문에 Xplatform에서 읽어들일변수인 ErrorCode 와 ErrorMsg 변수에 작업이 성공했다는 내용을 설정한다
// Controller에서 ErrorCode와 ErrorMsg를 설정한 것이 없으면 XplatformView에서 설정하도록 한다
if(!model.containsKey("ErrorCode")) {
variableList.add("ErrorCode", ERROR_CODE_VALUE);
}
if(!model.containsKey("ErrorMsg")) {
variableList.add("ErrorMsg", ERROR_MSG_VALUE);
}
PlatformData platformData = new PlatformData();
platformData.setVariableList(variableList);
platformData.setDataSetList(dataSetList);
httpPlatformResponse.setData(platformData);
httpPlatformResponse.sendData();
} else if(contentType == XplatformConstants.CONTENT_TYPE_CSV) {
}
}
/**
* Collection 객체와 DataSet 이름을 파라미터로 받아 해당 객체가 들어있는 DataSet을 return 한다
* @param dataSetName
* @param collection
* @return
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
private DataSet makeDataSet(String dataSetName, Collection<Object> collection) throws IllegalArgumentException, IllegalAccessException {
DataSet dataSet = new DataSet(dataSetName);
Object objColumn = null;
if(collection != null && collection.size() != 0) {
objColumn = collection.iterator().next();
setColumnHeader(dataSet, objColumn);
addCollectionToDataSet(dataSet, collection);
}
return dataSet;
}
/**
* Object 객체와 DataSet 이름을 파라미터로 받아 해당 객체가 들어있는 DataSet을 return 한다
* @param dataSetName
* @param object
* @return
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
private DataSet makeDataSet(String dataSetName, Object object) throws IllegalArgumentException, IllegalAccessException {
DataSet dataSet = new DataSet(dataSetName);
setColumnHeader(dataSet, object);
addObjectToDataSet(dataSet, object);
return dataSet;
}
/**
* DataSet 객체와 DataSet에 들어갈 객체를 파라미터로 받아 DataSet 객체에 ColumnHeader 정보를 설정한다
* @param dataSet
* @param object
*/
private void setColumnHeader(DataSet dataSet, Object object) {
if(object instanceof Map) {
@SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>) object;
for(Map.Entry<String, Object> entry : map.entrySet()) {
Object value = entry.getValue();
if(value instanceof Integer) {
dataSet.addColumn(entry.getKey(), DataTypes.INT);
} else if(value instanceof Long) {
dataSet.addColumn(entry.getKey(), DataTypes.LONG);
} else if(value instanceof Float) {
dataSet.addColumn(entry.getKey(), DataTypes.FLOAT);
} else if(value instanceof Double) {
dataSet.addColumn(entry.getKey(), DataTypes.DOUBLE);
} else if(value instanceof Date) {
dataSet.addColumn(entry.getKey(), DataTypes.DATE);
} else {
dataSet.addColumn(entry.getKey(), DataTypes.STRING);
}
}
} else {
List<Field> fieldList = XplatformReflectionUtils.getFields(object);
for(Field field : fieldList) {
field.setAccessible(true);
String fieldName = field.getName();
Class<?> classType = field.getType();
if(classType == int.class || classType == Integer.class) {
dataSet.addColumn(fieldName, DataTypes.INT);
} else if(classType == long.class || classType == Long.class) {
dataSet.addColumn(fieldName, DataTypes.LONG);
} else if(classType == float.class || classType == Float.class) {
dataSet.addColumn(fieldName, DataTypes.FLOAT);
} else if(classType == double.class || classType == Double.class) {
dataSet.addColumn(fieldName, DataTypes.DOUBLE);
} else if(classType == Date.class) {
dataSet.addColumn(fieldName, DataTypes.DATE);
} else {
dataSet.addColumn(fieldName, DataTypes.STRING);
}
}
}
}
/**
* Collection 객체를 받아 Collection 객체 안에 있는 객체들을 묶어서 하나의 DataSet으로 만들어서 추가한다
* @param dataSet
* @param collection
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
private void addCollectionToDataSet(DataSet dataSet, Collection<Object> collection) throws IllegalArgumentException, IllegalAccessException {
Iterator<Object> iterator = collection.iterator();
// Object value = collection.iterator().next();
while(iterator.hasNext()) {
Object value = iterator.next();
addObjectToDataSet(dataSet, value);
}
}
/**
* Object 객체를 받아 DataSet에 추가한다
* @param dataSet 대상이 되는 DataSet
* @param object 추가되는 Object 객체
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
private void addObjectToDataSet(DataSet dataSet, Object object) throws IllegalArgumentException, IllegalAccessException {
int rowIdx = dataSet.newRow();
if(object instanceof Map) {
@SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>)object;
for(Map.Entry<String, Object> entry : map.entrySet()) {
String columnName = entry.getKey();
Object mapValue = entry.getValue();
if(mapValue instanceof Integer) {
dataSet.set(rowIdx, columnName, (int)mapValue);
} else if(mapValue instanceof Long) {
dataSet.set(rowIdx, columnName, (long)mapValue);
} else if(mapValue instanceof Float) {
dataSet.set(rowIdx, columnName, (float)mapValue);
} else if(mapValue instanceof Double) {
dataSet.set(rowIdx, columnName, (double)mapValue);
} else if(mapValue instanceof Date) {
dataSet.set(rowIdx, columnName, (Date)mapValue);
} else if(mapValue instanceof Boolean) { // boolean 계열은 String의 valueOf 메소드로 값을 설정한다
dataSet.set(rowIdx, columnName, String.valueOf((Boolean)mapValue));
} else {
dataSet.set(rowIdx, columnName, (String)mapValue);
}
}
} else {
List<Field> fieldList = XplatformReflectionUtils.getFields(object);
for(Field field : fieldList) {
field.setAccessible(true);
String columnName = field.getName();
Class<?> classType = field.getType();
if(classType == int.class ) {
dataSet.set(rowIdx, columnName, field.getInt(object));
} else if(classType == Integer.class) {
dataSet.set(rowIdx, columnName, field.get(object) == null ? null : ((Integer)field.get(object)).intValue());
} else if(classType == long.class) {
dataSet.set(rowIdx, columnName, field.getLong(object));
} else if(classType == Long.class) {
dataSet.set(rowIdx, columnName, field.get(object) == null ? null : ((Long)field.get(object)).longValue());
} else if(classType == float.class) {
dataSet.set(rowIdx, columnName, field.getFloat(object));
} else if(classType == Float.class) {
dataSet.set(rowIdx, columnName, field.get(object) == null ? null : ((Float)field.get(object)).floatValue());
} else if(classType == double.class) {
dataSet.set(rowIdx, columnName, field.getDouble(object));
} else if(classType == Double.class) {
dataSet.set(rowIdx, columnName, field.get(object) == null ? null : ((Double)field.get(object)).doubleValue());
} else if(classType == Date.class) {
dataSet.set(rowIdx, columnName, (Date)(field.get(object)));
} else if(classType == boolean.class || classType == Boolean.class) { // boolean 계열은 String의 valueOf 메소드로 값을 설정한다
dataSet.set(rowIdx, columnName, String.valueOf((field.get(object))));
} else {
dataSet.set(rowIdx, columnName, (String)(field.get(object)));
}
}
}
}
/**
* renderMergedTemplateModel 메소드의 model 파라미터에 있는 객체들 중에 DataSet으로 표현할 수 없는 클래스들이 있다(주로 Spring이 자체적으로 넣어놓은 property bind 등의 클래스)
* model에 있는 객체중 이런 클래스 객체는 DataSet으로의 변환을 제외시킬 목적으로 만든 메소드이며 개발하는 도중에 이런 성격의 클래스가 있으면 classArray 배열에 클래스를 객체에 있는 것중ㅇ
* @param object
* @return
*/
private boolean skipDataSet(Object object) {
Class<?> [] classArray = new Class<?>[] {BeanPropertyBindingResult.class, RequestContext.class};
boolean result = false;
Class<?> objectClass = object.getClass();
for(Class<?> clazz : classArray) {
if(clazz == objectClass) {
result = true;
break;
}
}
return result;
}
}

View File

@@ -0,0 +1,23 @@
package com.terry.xplatform.config.xplatform.web;
import org.springframework.web.servlet.view.AbstractTemplateViewResolver;
import org.springframework.web.servlet.view.AbstractUrlBasedView;
public class XplatformViewResolver extends AbstractTemplateViewResolver {
@Override
protected Class getViewClass() {
// TODO Auto-generated method stub
return XplatformView.class;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
// TODO Auto-generated method stub
XplatformView view = (XplatformView)super.buildView(viewName);
return view;
}
}

View File

@@ -0,0 +1,23 @@
package com.terry.xplatform.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.terry.xplatform.vo.SampleDefaultVO;
import com.terry.xplatform.vo.SampleVO;
@Mapper
public interface SampleDAO {
public void insertSample(SampleVO sampleVO);
public void updateSample(SampleVO sampleVO);
public void deleteSample(@Param("id") int id);
public SampleVO selectSample(@Param("id") int id);
public List<SampleVO> selectSampleList(SampleDefaultVO sampleDefaultVO);
public long selectSampleListTotCnt(SampleDefaultVO sampleDefaultVO);
public Map<String, String> dataType();
}

View File

@@ -0,0 +1,14 @@
package com.terry.xplatform.service;
import java.util.List;
import org.springframework.dao.DataAccessException;
import com.terry.xplatform.vo.SampleDefaultVO;
import com.terry.xplatform.vo.SampleVO;
public interface SampleService {
public void modify(List<SampleVO> dataSet) throws DataAccessException;
public List<SampleVO> list(SampleDefaultVO sampleDefaultVO) throws DataAccessException;
}

View File

@@ -0,0 +1,73 @@
package com.terry.xplatform.service.impl;
import java.util.List;
import javax.annotation.PostConstruct;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import com.terry.xplatform.dao.SampleDAO;
import com.terry.xplatform.service.SampleService;
import com.terry.xplatform.vo.SampleDefaultVO;
import com.terry.xplatform.vo.SampleVO;
import com.tobesoft.xplatform.data.DataSet;
@Service
public class SampleServiceImpl implements SampleService {
@Autowired
private SqlSession sqlSession;
SampleDAO sampleDAO;
@PostConstruct
public void init() {
sampleDAO = sqlSession.getMapper(SampleDAO.class);
}
@Override
public List<SampleVO> list(SampleDefaultVO sampleDefaultVO) throws DataAccessException {
// TODO Auto-generated method stub
List<SampleVO> result = sampleDAO.selectSampleList(sampleDefaultVO);
return result;
}
@Override
public void modify(List<SampleVO> dataSet) throws DataAccessException {
// TODO Auto-generated method stub
for(SampleVO sampleVO : dataSet) {
if(sampleVO.isStoreDataChanges()) {
int rowType = sampleVO.getRowType();
switch(rowType) {
case DataSet.ROW_TYPE_INSERTED :
sampleDAO.insertSample(sampleVO);
break;
case DataSet.ROW_TYPE_UPDATED :
sampleDAO.updateSample(sampleVO);
break;
case DataSet.ROW_TYPE_DELETED :
sampleDAO.deleteSample(sampleVO.getId());
break;
}
} else {
int rowType = sampleVO.getRowType();
switch(rowType) {
case DataSet.ROW_TYPE_NORMAL : // ROW_TYPE_NORMAL로 받을 경우 현재 행이 insert 상태인지 update 상태인지를 알 수 없기 때문에 delete, insert 작업을 통해서 두 가지 상황을 모두 만족시키도록 한다
sampleDAO.deleteSample(sampleVO.getId());
sampleDAO.insertSample(sampleVO);
break;
case DataSet.ROW_TYPE_DELETED :
sampleDAO.deleteSample(sampleVO.getId());
break;
}
}
}
}
}

View File

@@ -0,0 +1,39 @@
package com.terry.xplatform.vo;
import java.io.Serializable;
import org.apache.ibatis.type.Alias;
import lombok.Data;
@Data
@Alias("SampleDefaultVO")
public class SampleDefaultVO implements Serializable {
/** 검색조건 */
private String searchCondition = "";
/** 검색Keyword */
private String searchKeyword = "";
/** 검색사용여부 */
private String searchUseYn = "";
/** 현재페이지 */
private int pageIndex = 1;
/** 페이지갯수 */
private int pageUnit = 10;
/** 페이지사이즈 */
private int pageSize = 10;
/** firstIndex */
private int firstIndex = 1;
/** lastIndex */
private int lastIndex = 1;
/** recordCountPerPage */
private int recordCountPerPage = 10;
}

View File

@@ -0,0 +1,36 @@
package com.terry.xplatform.vo;
import org.apache.ibatis.type.Alias;
import com.terry.xplatform.config.xplatform.data.XplatformVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Alias("SampleVO")
public class SampleVO extends XplatformVO {
/**
*
*/
private static final long serialVersionUID = -4891478433457788136L;
/** 아이디 */
private Integer id;
/** 이름 */
private String name;
/** 내용 */
private String description;
/** 사용여부 */
private String useYn;
/** 등록자 */
private String regUser;
}

View File

@@ -0,0 +1,57 @@
package com.terry.xplatform.web;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.terry.xplatform.config.xplatform.annotation.RequestDataSet;
import com.terry.xplatform.config.xplatform.annotation.RequestVariable;
import com.terry.xplatform.service.SampleService;
import com.terry.xplatform.vo.SampleVO;
import lombok.extern.slf4j.Slf4j;
@Controller
@Slf4j
public class SampleController {
@Autowired
SampleService sampleService;
@RequestMapping("/egovSampleSelect")
public void list(Model model
, SampleVO sampleVO
, @RequestVariable SampleVO requestVariableSampleVO
, @RequestVariable Map<String, Object> requestVariableMap
, @RequestVariable(name="firstIndex") int firstIndex
, @RequestVariable(name="recordCountPerPage") String recordCountPerPage
, HttpServletRequest httpServletRequest) {
// public void list(Model model, SampleVO sampleVO, @RequestVariable SampleVO requestVariableSampleVO) {
List<SampleVO> sampleList = sampleService.list(sampleVO);
model.addAttribute("ds_output", sampleList);
}
/*
@RequestMapping("/egovSampleSelect")
public void list(HttpServletRequest httpServletRequest) {
String firstIndex = httpServletRequest.getParameter("firstIndex");
String recordCountPerPage = httpServletRequest.getParameter("recordCountPerPage");
}
*/
@RequestMapping("/egovSampleModify")
public void modify(@RequestDataSet(name="ds_input")ArrayList<SampleVO> dataSet
, @RequestDataSet(name="ds_input")List<Map<String, Object>> dataSetMap
, @RequestDataSet(name="ds_input")Set<SampleVO> dataHashSet) {
sampleService.modify(dataSet);
}
}

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<license version="1.0">
<product>
<name>XPLATFORM</name>
<version>9</version>
<function>Runtime,&#32;Widget,&#32;AJAX</function>
</product>
<customer>
<name>TOBESOFT</name>
<coreCount>0</coreCount>
<ipAddress>0.0.0.0</ipAddress>
<targetPlatform>Windows,CE,Linux</targetPlatform>
</customer>
<date>
<activation>2018-08-01</activation>
<term unit="month">2</term>
</date>
<key>RDUTZJQZYZVS42PMV7NP4WGXE53J4VWM9</key>
</license>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="false" />
<setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 컬럼에 대한 필드 매핑시 camelcase에 대한 처리를 지정(컬렴명 USE_YN, 필드명 useYn) -->
</settings>
<typeAliases>
<package name="com.terry.xplatform.vo" />
</typeAliases>
</configuration>

View File

@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.terry.xplatform.dao.SampleDAO">
<insert id="insertSample" parameterType="SampleVO">
<![CDATA[
INSERT INTO SAMPLE
( ID
, NAME
, DESCRIPTION
, USE_YN
, REG_USER )
VALUES ( #{id}
, #{name}
, #{description}
, #{useYn}
, #{regUser} )
]]>
</insert>
<update id="updateSample" parameterType="SampleVO">
<![CDATA[
UPDATE SAMPLE
SET ID=#{id}
, NAME=#{name}
, DESCRIPTION=#{description}
, USE_YN=#{useYn}
WHERE ID=#{id}
]]>
</update>
<delete id="deleteSample" parameterType="int">
<![CDATA[
DELETE FROM SAMPLE
WHERE ID=#{id}
]]>
</delete>
<select id="selectSample" parameterType="int" resultType="SampleVO">
<![CDATA[
SELECT
ID, NAME, DESCRIPTION, USE_YN, REG_USER
FROM SAMPLE
WHERE ID=#{id}
]]>
</select>
<select id="selectSampleList" parameterType="SampleDefaultVO" resultType="SampleVO">
SELECT
ID, NAME, DESCRIPTION, USE_YN, REG_USER
FROM SAMPLE
<where>
<if test="!searchCondition.equals('')">
<if test="searchCondition == 0">
ID = #{searchKeyword}
</if>
<if test="searchCondition == 1">
NAME LIKE '%' || #{searchKeyword} || '%'
</if>
</if>
</where>
ORDER BY ID DESC
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<select id="selectSampleListTotCnt" parameterType="SampleDefaultVO" resultType="long">
SELECT COUNT(*) totcnt
FROM SAMPLE
<where>
<if test="searchCondition == 0">
ID = #{searchKeyword}
</if>
<if test="searchCondition == 1">
NAME LIKE '%' || #{searchKeyword} || '%'
</if>
</where>
</select>
<!--
<resultMap type="Employee" id="Employee_Result">
<id property="employee_no" column="employee_no" />
<result property="employee_name" column="employee_name" />
<association property="dept" resultMap="Dept_Result" />
<collection property='job_list' ofType='Job' resultMap='Job_Result' />
</resultMap>
<resultMap type="Dept" id="Dept_Result">
<id property="dept_no" column="dept_no" />
<result property="dept_name" column="dept_name" />
</resultMap>
<resultMap type="Job" id="Job_Result">
<id property="job_no" column="job_no" />
<result property="job_name" column="job_name" />
</resultMap>
<select id="employee_dept" resultMap="Employee_Result">
SELECT A.EMPLOYEE_NO AS EMPLOYEE_NO, A.EMPLOYEE_NAME AS EMPLOYEE_NAME, C.DEPT_NAME AS DEPT_NAME
FROM MYBATIS_EMPLOYEE A, MYBATIS_EMPLOYEE_DEPT B, MYBATIS_DEPT C
WHERE A.EMPLOYEE_NO = B.EMPLOYEE_NO
AND B.DEPT_NO = C.DEPT_NO
</select>
<select id="employee_dept_job" resultMap="Employee_Result">
SELECT A.EMPLOYEE_NO AS EMPLOYEE_NO, A.EMPLOYEE_NAME AS EMPLOYEE_NAME, C.DEPT_NO AS DEPT_NO, C.DEPT_NAME AS DEPT_NAME, E.JOB_NAME AS JOB_NAME
FROM MYBATIS_EMPLOYEE A, MYBATIS_EMPLOYEE_DEPT B, MYBATIS_DEPT C, MYBATIS_EMPLOYEE_JOB D, MYBATIS_JOB E
WHERE A.EMPLOYEE_NO = B.EMPLOYEE_NO
AND B.DEPT_NO = C.DEPT_NO
AND A.EMPLOYEE_NO = D.EMPLOYEE_NO
AND D.JOB_NO = E.JOB_NO
</select>
-->
</mapper>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
</beans>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com.terry.xplatform">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
</context:component-scan>
</beans>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
">
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="classpath:schema.sql" encoding="UTF-8" />
<jdbc:script location="classpath:createdata.sql" encoding="UTF-8" />
</jdbc:embedded-database>
</beans>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!-- mybatis 연동과 관련하여 연동 환경 정의 및 SQL Query Map 파일 정의 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:com/terry/xplatform/resources/mybatis/config/mybatis-config.xml" /> <!-- mybatis 연동 환경 정의 -->
<property name="mapperLocations"> <!-- mybatis 쿼리 맵들이 있는 경로 -->
<list>
<value>classpath:com/terry/xplatform/resources/mybatis/mapper/*.xml</value>
</list>
</property>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<qualifier value="sqlSession" />
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="sqlBatchSession" class="org.mybatis.spring.SqlSessionTemplate">
<qualifier value="sqlBatchSession" />
<constructor-arg index="0" ref="sqlSessionFactory" />
<constructor-arg index="1" value="BATCH" />
</bean>
</beans>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx"
expression="execution(* com.terry.xplatform..impl.*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="requiredTx" />
</aop:config>
</beans>

View File

@@ -0,0 +1,4 @@
INSERT INTO SAMPLE(ID, NAME, DESCRIPTION, USE_YN, REG_USER) VALUES('1','카테고리명1','설명1','1','등록자1');
INSERT INTO SAMPLE(ID, NAME, DESCRIPTION, USE_YN, REG_USER) VALUES('2','카테고리명2','설명2','2','등록자2');
INSERT INTO SAMPLE(ID, NAME, DESCRIPTION, USE_YN, REG_USER) VALUES('3','카테고리명3','설명3','1','등록자3');
INSERT INTO IDS VALUES('SAMPLE',175);

View File

@@ -0,0 +1,3 @@
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
# log4jdbc.spylogdelegator.name=com.terry.springboard.common.log.CustomSlf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- configuration file for LogBack (slf4J implementation)
See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing-through-the-java-loggers/ -->
<configuration scan="true" scanPeriod="30 seconds">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<!-- To enable JMX Management -->
<jmxConfigurator/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.terry.xplatform" level="debug" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="org.hibernate" level="info" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="org.springframework.security" level="debug" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="org.springframework" level="info" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="javax.sql" level="info" additivity="false">
<appender-ref ref="console" />
</logger>
<!-- log4jdbc setting(turn on : info or debug, turn off : fatal -->
<logger name="jdbc.sqlonly" level="off" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="jdbc.sqltiming" level="info" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="jdbc.audit" level="off" additivity="false" />
<logger name="jdbc.resultset" level="off" additivity="false" />
<logger name="jdbc.resultsettable" level="off" additivity="false" />
<logger name="jdbc.connection" level="off" additivity="false" />
<root level="info">
<appender-ref ref="console" />
</root>
</configuration>

View File

@@ -0,0 +1,13 @@
CREATE TABLE SAMPLE (
ID VARCHAR(16) NOT NULL PRIMARY KEY,
NAME VARCHAR(50),
DESCRIPTION VARCHAR(100),
USE_YN CHAR(1),
REG_USER VARCHAR(10),
REG_DATE DATE NOT NULL DEFAULT CURRENT_DATE()
);
CREATE TABLE IDS (
TABLE_NAME VARCHAR(16) NOT NULL PRIMARY KEY
,NEXT_ID DECIMAL(30) NOT NULL
);

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
">
<mvc:annotation-driven>
<mvc:argument-resolvers>
<bean id="xplatformArgumentResolver" class="com.terry.xplatform.config.xplatform.support.XplatformArgumentResolver">
<constructor-arg name="dataSetListName" value="dataSetList" />
<constructor-arg name="variableListName" value="variableList" />
</bean>
</mvc:argument-resolvers>
</mvc:annotation-driven>
<context:component-scan base-package="com.terry.xplatform">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
<bean id="xplatformViewResolver" class="com.terry.xplatform.config.xplatform.web.XplatformViewResolver">
<property name="order" value="1" />
</bean>
</beans>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,14 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> The time on the server is ${serverTime}. </P>
</body>
</html>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- param-value>/WEB-INF/spring/root-context.xml</param-value -->
<param-value>classpath*:com/terry/xplatform/resources/spring/context-*.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value -->
<param-value>/WEB-INF/config/spring/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<filter>
<filter-name>httpServletRequestWrapperFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>httpServletRequestWrapperFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
</web-app>

View File

@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<ADL version="1.0">
<TypeDefinition url="default_typedef.xml"/>
<GlobalVariables url="globalvars.xml"/>
<Application id="DefautTheme" codepage="utf-8" language="Korean" loginformurl="" loginformstyle="" windowopeneffect="" windowcloseeffect="" version="" tracemode="" themeid="DefaultTheme.xtheme" onload="application_onload" licenseurl="http://localhost:8080/template-xplatform/xui/license/XPLATFORM_Client_License.xml" httpretry="0" httptimeout="0">
<Layout>
<MainFrame id="mainFrame" title="maintitle" defaultfont="" resizable="true" showtitlebar="true" showstatusbar="true" position="absolute 0 0 1024 738" style="showzoomcombo:true;" showcascadetitletext="true" statustext="1" text="2" titletext="3" visible="false">
<VFrameSet id="VFrameSet" separatesize="37,*,0">
<Frames>
<ChildFrame id="topFrame" formurl="frame::topFrame.xfdl" showtitlebar="false" dragmovetype="none"/>
<HFrameSet id="HFrameSet" separatesize="30,165,*">
<Frames>
<ChildFrame id="myFrame" showtitlebar="false" formurl="frame::myFrame.xfdl"/>
<ChildFrame id="leftFrame" formurl="frame::leftFrame.xfdl" showtitlebar="false"/>
<VFrameSet id="VFrameSet2" separatesize="29,*">
<Frames>
<ChildFrame id="tabFrame" formurl="frame::tabFrame.xfdl" showtitlebar="false" dragmovetype="none"/>
<FrameSet id="workFrameSet">
<Frames/>
</FrameSet>
</Frames>
</VFrameSet>
</Frames>
</HFrameSet>
<ChildFrame id="commFrame" formurl="frame::commFrame.xfdl"/>
</Frames>
</VFrameSet>
</MainFrame>
</Layout>
</Application>
<Script type="xscript4.0"><![CDATA[// UI 프레임셋 alias 정의
var gv_topFrame; //상단메뉴 Frame
var gv_myFrame; //마이메뉴 Frame
var gv_leftFrame; //좌측메뉴 Frame
var gv_HFrameSet; //좌측메뉴, 업무영역 FrameSet
var gv_workFrame; //업무영역 Frame
var gv_tabFrame; //Tab메뉴 Frame
// Application에서 Global하게 사용하는 변수
var gv_activeWinId; // Active화면 Id
var gv_initWidth = 1024; //업무화면 초기 width
var gv_initHeight = 738; //업무화면 초기 height
var gv_menuHideWidth = 30;
var gv_menuShowWidth = 30;
var gv_menuHideHeight = 8;
var gv_menuShowHeight;
// Application 최초 실행시 발생하는 이벤트
function application_onload(obj:Object, e:LoadEventInfo)
{
trace("1111111111111111111111111111111111111111111");
application.mainFrame.titletext = "Default Template";
//각각의 Frame alias 정의
gv_topFrame = application.mainFrame.VFrameSet.topFrame;
gv_tabFrame = application.mainFrame.VFrameSet.HFrameSet.VFrameSet2.tabFrame;
gv_myFrame = application.mainFrame.VFrameSet.HFrameSet.myFrame;
gv_leftFrame = application.mainFrame.VFrameSet.HFrameSet.leftFrame;
gv_HFrameSet = application.mainFrame.VFrameSet.HFrameSet;
gv_VFrameSet = application.mainFrame.VFrameSet.HFrameSet.VFrameSet2;
gv_workFrame = application.mainFrame.VFrameSet.HFrameSet.VFrameSet2.workFrameSet;
var rtn = "OK";
//로그인 페이지 호출
rtn = afn_loginProcess();
if(rtn=="OK")
{
application.mainframe.visible = true;
application.mainframe.activate();
}else if(rtn=="CLOSE")
{
exit();
}
}
function afn_loginProcess()
{
var nMoniterIndex;
var nScreenLeft;
var nScreenTop;
var nScreenRight;
var nScreenBottom;
var nScreenWidth;
var nScreenHeight;
var arrScreenSize;
nMoniterIndex = system.getMonitorIndex(system.cursorx, system.cursory); //모니터번호
objScreenSize = system.getScreenRect(nMoniterIndex);
nScreenLeft = objScreenSize.left;
nScreenTop = objScreenSize.top;
nScreenRight = objScreenSize.right;
nScreenBottom = objScreenSize.bottom;
nScreenWidth = nScreenRight - nScreenLeft;
nScreenHeight = nScreenBottom - nScreenTop;
//로그인 화면 기동
application.mainframe.visible = false;
var objFrame = new ChildFrame("Login", nScreenLeft+(nScreenWidth/2)-235, nScreenTop+(nScreenHeight/2)-130, nScreenLeft+(nScreenWidth/2)+235, nScreenTop+(nScreenHeight/2)+130);
objFrame.showtitlebar = false;
objFrame.layered = true;
objFrame.style.background = "transparent";
objFrame.formurl = "frame::login.xfdl";
var rtn = objFrame.showModal("Login");
return rtn;
}
// tabFrame에 메뉴클릭시 페이지 활성화
// function workArea_onactivate(obj:ChildFrame, e:ActivateEventInfo)
// {
// obj.openstatus = "maximize";
// }
]]></Script>
</ADL>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<Project active_adl="DefautTheme" version="1.1">
<TypeDefinition url="default_typedef.xml"/>
<GlobalVariables url="globalvars.xml"/>
<ADL id="110425_XP_Template_T1" url="DefaultTheme.xadl"/>
<Services>
<Service id="CSS" file_ext="" include_subdir="false"/>
<Service id="IMG" file_ext="" include_subdir="false"/>
<Service id="css" file_ext="" include_subdir="false"/>
<Service id="img" file_ext="" include_subdir="false"/>
</Services>
<Themes>
<RecentlyUsed>
<Theme url="DefaultTheme.xtheme"/>
</RecentlyUsed>
</Themes>
<ComponentInfoGroup>
<ComponentInfo name="grd_basic" defaultwidth="" defaultheight="" image="18"/>
</ComponentInfoGroup>
</Project>

Binary file not shown.

View File

@@ -0,0 +1,98 @@
<HTML>
<HEAD>
<TITLE>XPlatform Run Page</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<SCRIPT type="text/javascript" src="./install/checkBrowser.js" ></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" src="./install/launch_etc_Browser.js"></SCRIPT> <!-- launch_etc_Browser JavaScript include -->
<script language="javascript">
var Server_Path = window.location.href;
Server_Path = Server_Path.substring(0, Server_Path.lastIndexOf("/")) + "/";
//v_xadl : 알맞은 xadl값을 설정하십시오. (url로 입력)
//현재 연결된 프로젝트는 url로 설정시 오류가 있어 로컬경로로 설정함
var v_xadl = Server_Path + "DefaultTheme.xadl";
function fn_start()
{
/** 웹브라우저에서 실행 **/
if ( checkBrowser.browser == "Explorer"){
fn_load_ie();
}else{ // 익스플로러가 아닐 경우
/** launch_etc_Browser.js의 fn_load_crom를 호출함 **/
fn_load_crom();
}
}
/** IE Embed 형태 구동 **/
function fn_load_ie()
{
XPlatformAXCtrl.xadl = v_xadl; //xadl
XPlatformAXCtrl.autosize = false; //autosize
XPlatformAXCtrl.key = "EgovXPLATFORM"; //key
XPlatformAXCtrl.retry = 2; //retry
XPlatformAXCtrl.timeout = 30; //timeout
XPlatformAXCtrl.run();
}
</script>
<!------------------------------------------
X P l a t f o r m A X C t r l E v e n t
-------------------------------------------->
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="loadtypedefinition(strurl)">
//alert("loadtypedefinition : "+strurl);
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="load()">
//alert("load completed !!");
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="loadingglobalvariables(strurl)">
//alert("loadingglobalvariables : "+strurl);
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="beforeexit(close, handled)">
//alert("beforeexit");
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="exit()">
//alert("exit");
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="communication(bstart)">
//alert("communication:"+bstart);
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="usernotify(nNotifyID, strMsg)">
//alert("nNotifyID:"+nNotifyID +" strMsg:"+strMsg);
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="error(nerror, strerrmsg)">
//alert("err:"+strerrmsg);
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=XPlatformAXCtrl EVENT="addlog(strMsg)">
//alert("strMsg:"+strMsg);
</SCRIPT>
<!------------------------------------------
X P l a t f o r m A X C t r l E v e n t (End)
-------------------------------------------->
<HEAD>
<BODY border="0" cellpadding="0" cellspacing="0" onload="fn_start()">
<script language="javascript">
document.write("<OBJECT ID=\"XPlatformAXCtrl\" CLASSID=\"CLSID:43C5FE00-DD32-4792-83DB-19AE4F88F2A6\" " );
document.write(" CodeBase=\""+Server_Path+"Engine/XPLATFORM9.2_SetupEngine.cab#VERSION=2012,8,21,1\"" );
document.write(" width=\"100%\" height=\"100%\">" );
document.write("<embed " );
document.write(" id=\"plugin1\"" );
document.write(" type=\"Application/XPlatform9.2-PlugIn\" " );
document.write(" load=\"p1_onload\"" );
document.write(" width=100%" );
document.write(" height=100%" );
document.write(" loadtypedefinition=\"my_loadtypedefinition\"" );
document.write(" load=\"my_load\"" );
document.write(" loadingglobalvariables=\"my_loadingglobalvariables\"" );
document.write(" beforeexit=\"my_beforeexit\"" );
document.write(" exit=\"my_exit\"" );
document.write(" communication=\"my_communication\"" );
document.write(" usernotify=\"my_usernotify\" " );
document.write(" error=\"my_error\" " );
document.write(" addlog=\"my_addlog\"" );
document.write(" />" );
document.write("</OBJECT>" );
</script>
</BODY>
</HTML>

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<TypeDefinition>
<Components>
<Component type="Bin" id="Div" classname="Div" module="XComCmp" version="1000"/>
<Component type="Bin" id="Button" classname="Button" module="XComCmp" version="1000"/>
<Component type="Bin" id="PopupDiv" classname="PopupDiv" module="XComCmp" version="1000"/>
<Component type="Bin" id="Combo" classname="Combo" module="XComCmp" version="1000"/>
<Component type="Bin" id="CheckBox" classname="CheckBox" module="XComCmp" version="1000"/>
<Component type="Bin" id="ListBox" classname="ListBox" module="XComCmp" version="1000"/>
<Component type="Bin" id="Edit" classname="Edit" module="XComCmp" version="1000"/>
<Component type="Bin" id="MaskEdit" classname="MaskEdit" module="XComCmp" version="1000"/>
<Component type="Bin" id="TextArea" classname="TextArea" module="XComCmp" version="1000"/>
<Component type="Bin" id="Menu" classname="Menu" module="XComCmp" version="1000"/>
<Component type="Bin" id="Tab" classname="Tab" module="XComCmp" version="1000"/>
<Component type="Bin" id="ImageViewer" classname="ImageViewer" module="XComCmp" version="1000"/>
<Component type="Bin" id="Radio" classname="Radio" module="XComCmp" version="1000"/>
<Component type="Bin" id="Shape" classname="Shape" module="XComCmp" version="1000"/>
<Component type="Bin" id="Calendar" classname="Calendar" module="XComCmp" version="1000"/>
<Component type="Bin" id="Static" classname="Static" module="XComCmp" version="1000"/>
<Component type="Bin" id="Grid" classname="Grid" module="XGridCmp" version="1000"/>
<Component type="Bin" id="Spin" classname="Spin" module="XComCmp" version="1000"/>
<Component type="Bin" id="PopupMenu" classname="PopupMenu" module="XComCmp" version="1000"/>
<Component type="Bin" id="Splitter" classname="Splitter" module="XComCmp" version="1000"/>
<Component type="Bin" id="GroupBox" classname="GroupBox" module="XComCmp" version="1000"/>
<Component type="Bin" id="ProgressBar" classname="ProgressBar" module="XComCmp" version="1000"/>
<Component type="Bin" id="ActiveX" classname="ActiveX" module="XAxCmp" version="1000"/>
<Component type="Bin" id="PropertyAnimation" classname="PropertyAnimation" module="XPlatformLib" version="1000"/>
<Component type="Bin" id="TransitionAnimation" classname="TransitionAnimation" module="XPlatformLib" version="1000"/>
<Component type="Bin" id="MoveAnimation" classname="MoveAnimation" module="XPlatformLib" version="1000"/>
<Component type="Bin" id="CompositeAnimation" classname="CompositeAnimation" module="XPlatformLib" version="1000"/>
<Component type="Bin" id="Dataset" classname="Dataset" module="XPlatformLib" version="1000"/>
<Component type="Bin" id="FilteredDataset" classname="FilteredDataset" module="XClassLib" version="1000"/>
<Component type="Bin" id="FileDialog" classname="FileDialog" module="XComCmp" version="1000"/>
<Component type="Bin" id="GraphicPath" classname="GraphicPath" module="XComCmp" version="1000"/>
<Component type="Bin" id="VirtualFile" classname="VirtualFile" module="XComCmp" version="1000"/>
<Component type="Script" id="grd_basic" classname="grd_basic" module="frame_userobject::grd_basic.xjs" version="1000"/>
</Components>
<Services>
<Service prefixid="css" type="file" url="./css/" version="0" communicationversion="0"/>
<Service prefixid="img" type="file" url="./images/" version="0" communicationversion="0"/>
<Service prefixid="frame" type="form" url="./frame/" version="0" communicationversion="0"/>
<Service prefixid="lib" type="js" url="./lib/" version="0" communicationversion="0"/>
<Service prefixid="work" type="form" url="./work/" version="0" communicationversion="0"/>
<Service prefixid="compguide" type="form" url="./ui/" version="0" communicationversion="0"/>
<Service prefixid="template" type="form" url="./template/" version="0" communicationversion="0"/>
<Service prefixid="svc" type="JSP" url="http://localhost:8080/xplatform/" cachelevel="none" version="0" communicationversion="0"/>
<Service prefixid="frame_userobject" type="form" url="./frame/userobject/" version="0" communicationversion="0"/>
</Services>
<Update/>
</TypeDefinition>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="commFrame" classname="commFrame" inheritanceid="" position="absolute 0 0 1 1" titletext="New Form" onload="commFrame_onload">
<Layouts>
<Layout/>
</Layouts>
<Script type="xscript4.0"><![CDATA[/*
* 01. 업무구분 : Frame 공통
* 02. 화면명 : commFrame.xfdl
* 03. 화면설명 :
* 04. 작성일 : 2012-08-22
* 05. 작성자 : sian
* 06. 수정이력 :
*********************************************************************
* 수정일 이 름 사유
*********************************************************************
* 2012-08-22 sian 최초 작성
*********************************************************************
*/
include "lib::commLib.xjs";
// Hidden Frame으로 공통 스크립트를 포함하고 있음.
// 업무 또는 공통영역에서 사용할 추가 컴포넌트를 commFrame에서 처리한다.
function commFrame_onload(obj:Form, e:LoadEventInfo)
{
}]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,911 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="leftFrame" classname="Left" inheritanceid="" position="absolute 0 0 165 647" class="frm_LF" scrollbars="none" onload="leftMenu_onload">
<Layouts>
<Layout>
<PopupDiv id="PopLink" onmouseleave="PopLink_onmouseleave" onmouseenter="PopLink_onmouseenter" visible="false" position="absolute 182 40 528 302" style="background:#f0f2f6ff;border:2 solid #235798ff ;bordertype:round 5 5 ;shadow:drop 0,2 3 gray;">
<Layouts>
<Layout width="346" height="262"/>
</Layouts>
</PopupDiv>
<Static id="sta_LF_DivLine" position="absolute 12 28 157 31" class="sta_LF_DivLine" text=""/>
<Static id="sta_LF_GuideShadow" transparenthittest="true" position="absolute -3 0 2 648" style="background:@gradation; gradation:liner 0,0 #33333300 100,0 #33333333; " text="" visible="false"/>
<Div id="divMenu" taborder="1" position="absolute 3 34 161 645" scrollbars="none" anchor="left top bottom">
<Layouts>
<Layout>
<Grid id="grdMenu" class="grd_LF_SubMenu" taborder="0" binddataset="DsMenu" scrollpixel="default" wheelscrollrow="1" useinputpanel="false" selecttype="treecell" autofittype="col" treeuseline="false" treeusecheckbox="false" treeinitstatus="expand,null" position="absolute 0 0 161 467" style="padding:0 0 0 -10;" oncellclick="divMenu_grdMenu_oncellclick">
<Formats>
<Format id="default">
<Columns>
<Column size="165"/>
</Columns>
<Rows>
<Row size="18"/>
</Rows>
<Band id="body">
<Cell displaytype="tree" edittype="tree" style="background:EXPR((Level==2)?&quot;#ffffff00&quot;:&quot;&quot;);background2:EXPR((Level==2)?&quot;#ffffff00&quot;:&quot;&quot;);color:EXPR((Level==2)?&quot;#1c81beff&quot;:&quot;&quot;);color2:EXPR((Level==2)?&quot;#1c81beff&quot;:&quot;&quot;);font:EXPR((Level==2)?&quot;Dotum,9,bold&quot;:&quot;&quot;);selectbackground:EXPR((Level==0)?&quot;#ffffff00&quot;:&quot;&quot;);selectcolor:EXPR((Level==0)?&quot;#1c81beff&quot;:&quot;&quot;);selectfont:EXPR((Level==0)?&quot;Dotum,9,bold&quot;:&quot;&quot;);" text="bind:MENU_NM" treestartlevel="2" treelevel="bind:MENU_LVL" tooltiptype="top,center" tooltiptext="bind:MENU_NM"/>
</Band>
</Format>
</Formats>
</Grid>
</Layout>
</Layouts>
</Div>
<Static id="sta_LF_TopHilight" position="absolute 4 0 165 18" style="background:@gradation; gradation:liner 0,0 #ffffffff 0,100 #ffffff00; " onclick="sta_LF_TopHilight_onclick"/>
<Combo id="Combo00" taborder="1" innerdataset="ds_menu_combo" codecolumn="idx" datacolumn="context" displayrowcount="5" class="cmb_TP_Search" position="absolute 11 2 161 27" anchor="left top right"/>
<Edit id="edt_search" taborder="1" position="absolute 14 4 136 26" style="background:transparent;border:0 none #808080ff ;opacity:100;" ontextchanged="edt_search_ontextchanged" onkeydown="edt_search_onkeydown"/>
<ListBox id="lst_search" taborder="1" innerdataset="fds_Find" codecolumn="text" datacolumn="text" onitemclick="lst_search_onitemclick" onkeydown="lst_search_onkeydown" visible="false" position="absolute 11 31 161 208"/>
<Button id="btn_search" taborder="1" position="absolute 140 4 159 25" style="opacity:0;" onclick="btn_search_onclick"/>
<PopupDiv id="PopFMLink" style="background:#ffffffff;border:2 solid #72cdf4ff ;bordertype:round 3 3 ;" onmouseleave="PopLink_onmouseleave" onmouseenter="PopLink_onmouseenter" visible="false" position="absolute 206 0 1176 630">
<Layouts>
<Layout>
<Static id="Static01" text="전력수요" class="stc_PopupAllmenuTil" position="absolute 30 47 190 75" style="background:antiquewhite;" anchor="default"/>
<Static id="Static00" text="일간" class="stc_Allmenu_default" position="absolute 48 79 192 107" anchor="default"/>
<Static id="Static03" text="주간" class="stc_Allmenu_default" position="absolute 48 103 192 131" anchor="default"/>
<Static id="Static04" text="월간" class="stc_Allmenu_default" position="absolute 48 127 192 155" anchor="default"/>
<Static id="Static05" text="지역별 수요실적" class="stc_Allmenu_default" position="absolute 48 151 192 179" anchor="default"/>
<Static id="Static06" text="전력공급입찰" class="stc_PopupAllmenuTil" position="absolute 214 47 374 75" style="background:antiquewhite;" anchor="default"/>
<Static id="Static07" text="입찰" class="stc_Allmenu_1depth" position="absolute 232 79 376 107" anchor="default"/>
<Static id="Static08" text="초기입찰" class="stc_Allmenu_2depth" position="absolute 232 103 376 131" anchor="default"/>
<Static id="Static09" text="변경입찰" class="stc_Allmenu_2depth" position="absolute 232 127 376 155" anchor="default"/>
<Static id="Static10" text="변경입찰 확인" class="stc_Allmenu_1depth" position="absolute 232 151 376 179" anchor="default"/>
<Static id="Static11" text="시장가격" class="stc_PopupAllmenuTil" position="absolute 398 47 558 75" style="background:antiquewhite;" anchor="default"/>
<Static id="Static12" text="가격결정발전계획" class="stc_Allmenu_default" position="absolute 416 79 560 107" anchor="default"/>
<Static id="Static13" text="가격결정발전기" class="stc_Allmenu_default" position="absolute 416 103 560 131" anchor="default"/>
<Static id="Static14" text="계통한계가격" class="stc_Allmenu_default" position="absolute 416 127 560 155" anchor="default"/>
<Static id="Static15" text="발전가격" class="stc_Allmenu_default" position="absolute 416 151 560 179" anchor="default"/>
<Static id="Static16" text="계통운영" class="stc_PopupAllmenuTil" position="absolute 590 47 750 75" style="background:antiquewhite;" anchor="default"/>
<Static id="Static17" text="급전지시" class="stc_Allmenu_default" position="absolute 608 79 752 107" anchor="default"/>
<Static id="Static18" text="운영발전계획" class="stc_Allmenu_default" position="absolute 608 103 752 131" anchor="default"/>
<Static id="Static19" text="예비력계획" class="stc_Allmenu_default" position="absolute 608 127 752 155" anchor="default"/>
<Static id="Static20" text="휴전계획" class="stc_Allmenu_default" position="absolute 608 151 752 179" anchor="default"/>
<Static id="Static21" text="계량운영" class="stc_PopupAllmenuTil" position="absolute 774 47 934 75" style="background:antiquewhite;" anchor="default"/>
<Static id="Static22" text="발전기별 계량정보" class="stc_Allmenu_default" position="absolute 792 79 936 107" anchor="default"/>
<Static id="Static23" text="시간대별 계량정보" class="stc_Allmenu_default" position="absolute 792 103 936 131" anchor="default"/>
<Static id="Static24" text="미취득 계량정" class="stc_Allmenu_default" position="absolute 792 127 936 155" anchor="default"/>
<Static id="Static26" text="변경입찰 목록조회" class="stc_Allmenu_2depth" position="absolute 232 199 376 227" anchor="default"/>
<Static id="Static27" text="변경입찰 확인" class="stc_Allmenu_2depth" position="absolute 232 175 376 203" anchor="default"/>
<Static id="Static28" text="입찰 결과" class="stc_Allmenu_default" position="absolute 232 223 376 251" anchor="default"/>
<Static id="Static29" text="임시발전가격" class="stc_Allmenu_default" position="absolute 416 175 560 203" anchor="default"/>
<Static id="Static30" text="발전정비계획" class="stc_Allmenu_default" position="absolute 608 175 752 203" anchor="default"/>
<Static id="Static31" text="송전가능용량" class="stc_Allmenu_default" position="absolute 608 199 752 227" anchor="default"/>
<Static id="Static32" text="계통운영정보" class="stc_Allmenu_default" position="absolute 608 223 752 251" anchor="default"/>
<Static id="Static33" text="자체기동발전기" class="stc_Allmenu_default" position="absolute 608 247 752 275" anchor="default"/>
<Static id="Static34" text="전기고장통계" class="stc_Allmenu_default" position="absolute 608 271 752 299" anchor="default"/>
<Static id="Static25" text="전력거래정산" class="stc_PopupAllmenuTil" position="absolute 30 310 190 338" style="background:burlywood;" anchor="default"/>
<Static id="Static35" text="정산금" class="stc_Allmenu_default" position="absolute 48 342 192 370" anchor="default"/>
<Static id="Static36" text="통지서/청구서 접수" class="stc_Allmenu_default" position="absolute 48 366 192 394" anchor="default"/>
<Static id="Static37" text="청구서 발행" class="stc_Allmenu_default" position="absolute 48 390 192 418" anchor="default"/>
<Static id="Static38" text="수정청구서 접수" class="stc_Allmenu_default" position="absolute 48 414 192 442" anchor="default"/>
<Static id="Static39" text="전력공급입찰" class="stc_PopupAllmenuTil" position="absolute 214 310 374 338" style="background:burlywood;" anchor="default"/>
<Static id="Static44" text="시장가격" class="stc_PopupAllmenuTil" position="absolute 398 310 558 338" style="background:burlywood;" anchor="default"/>
<Static id="Static45" text="사용자 조회" class="stc_Allmenu_default" position="absolute 416 342 560 370" anchor="default"/>
<Static id="Static46" text="회원사 관리" class="stc_Allmenu_1depth" position="absolute 416 366 560 394" anchor="default"/>
<Static id="Static47" text="발전회사 등록" class="stc_Allmenu_2depth" position="absolute 416 390 560 418" anchor="default"/>
<Static id="Static48" text="발전소 등록" class="stc_Allmenu_2depth" position="absolute 416 414 560 442" anchor="default"/>
<Static id="Static51" text="시장운영실적" class="stc_Allmenu_default" position="absolute 232 486 376 514" anchor="default"/>
<Static id="Static52" text="발전기 등록" class="stc_Allmenu_2depth" position="absolute 416 438 560 466" anchor="default"/>
<Static id="Static53" text="수정청구서 발행" class="stc_Allmenu_default" position="absolute 48 438 192 466" anchor="default"/>
<Static id="Static54" text="청구서 발행목록" class="stc_Allmenu_default" position="absolute 48 462 192 490" anchor="default"/>
<Static id="Static55" text="정산명세서" class="stc_Allmenu_default" position="absolute 48 486 192 514" anchor="default"/>
<Static id="Static56" text="가정산 집계표" class="stc_Allmenu_default" position="absolute 48 510 192 538" anchor="default"/>
<Static id="Static57" text="세무자료" class="stc_Allmenu_default" position="absolute 48 534 192 562" anchor="default"/>
<Static id="Static58" text="세금계산서" class="stc_Allmenu_default" position="absolute 48 558 192 586" anchor="default"/>
<Static id="Static59" text="위원회" class="stc_Allmenu_1depth" position="absolute 232 510 376 538" anchor="default"/>
<Static id="Static60" text="비용평가위원회" class="stc_Allmenu_2depth" position="absolute 232 534 376 562" anchor="default"/>
<Static id="Static40" text="CP/AS/기준가격 관리" class="stc_Allmenu_default" position="absolute 232 462 376 490" anchor="default"/>
<Static id="Static41" text="용량가격" class="stc_Allmenu_default" position="absolute 232 438 376 466" anchor="default"/>
<Static id="Static42" text="송전손실계수" class="stc_Allmenu_default" position="absolute 232 414 376 442" anchor="default"/>
<Static id="Static43" text="발전비용 평가자료" class="stc_Allmenu_default" position="absolute 232 390 376 418" anchor="default"/>
<Static id="Static49" text="기저한계가격(구)" class="stc_Allmenu_default" position="absolute 232 366 376 394" anchor="default"/>
<Static id="Static50" text="기저상한가격(구)" class="stc_Allmenu_default" position="absolute 232 342 376 370" anchor="default"/>
<Static id="Static61" text="규칙개정위원회" class="stc_Allmenu_2depth" position="absolute 232 558 376 586" anchor="default"/>
<Static id="Static62" text="정보공개위원회" class="stc_Allmenu_2depth" position="absolute 232 582 376 610" anchor="default"/>
<Static id="Static63" text="거래일 관리" class="stc_Allmenu_1depth" position="absolute 416 462 560 490" anchor="default"/>
<Static id="Static64" text="휴일 관리" class="stc_Allmenu_2depth" position="absolute 416 486 560 514" anchor="default"/>
<Static id="Static65" text="예약입찰일 관리" class="stc_Allmenu_2depth" position="absolute 416 510 560 538" anchor="default"/>
<Static id="Static66" text="입잘시간정의 관리" class="stc_Allmenu_1depth" position="absolute 416 534 560 562" anchor="default"/>
<Static id="Static67" text="입잘시간 관리" class="stc_Allmenu_2depth" position="absolute 416 558 560 586" anchor="default"/>
<Static id="Static68" text="계량 수동입력시간 관리" class="stc_Allmenu_2depth" position="absolute 416 582 560 610" anchor="default"/>
<Static id="Static02" text="e-power market 전체 메뉴" position="absolute 0 0 966 29" style="background:darkkhaki;" anchor="default"/>
<Button id="Button00" taborder="1" onclick="btnCancel_onclick" class="btn_tab_close" position="absolute 948 8 961 21" anchor="default"/>
</Layout>
</Layouts>
</PopupDiv>
</Layout>
</Layouts>
<Objects>
<Dataset id="DsMenu">
<ColumnInfo>
<Column id="MENU_LVL" type="STRING" size="256"/>
<Column id="menuId" type="STRING" size="256"/>
<Column id="MENU_NM" type="STRING" size="256"/>
<Column id="menuUrl" type="STRING" size="256"/>
<Column id="lvl1Code" type="STRING" size="256"/>
<Column id="lvl1Name" type="STRING" size="256"/>
<Column id="lvl2Code" type="STRING" size="256"/>
<Column id="lvl2Name" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row/>
</Rows>
</Dataset>
<FilteredDataset id="fds_Find" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" binddataset="@ds_Find" filterstr="text == ''"/>
<Dataset id="ds_Find" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="pseudocode" type="STRING" size="256"/>
<Column id="text" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="pseudocode"/>
<Col id="text">전력수요</Col>
</Row>
<Row>
<Col id="pseudocode"/>
<Col id="text">초기입찰</Col>
</Row>
<Row>
<Col id="pseudocode"/>
<Col id="text">계통한계가격</Col>
</Row>
<Row>
<Col id="pseudocode"/>
<Col id="text">매출보관함</Col>
</Row>
<Row>
<Col id="pseudocode"/>
<Col id="text">발전기계량실적</Col>
</Row>
<Row>
<Col id="pseudocode"/>
<Col id="text">정산금통지서</Col>
</Row>
<Row>
<Col id="pseudocode"/>
<Col id="text">정산금청구서</Col>
</Row>
<Row>
<Col id="pseudocode"/>
<Col id="text">공지사항</Col>
</Row>
<Row>
<Col id="pseudocode"/>
<Col id="text">시장운용속보</Col>
</Row>
</Rows>
</Dataset>
<Dataset id="ds_TmenuLt00">
<ColumnInfo>
<Column id="MENU_LEVEL1_CD" type="STRING" size="255"/>
<Column id="MENU_NM" type="STRING" size="255"/>
<Column id="TREE" type="STRING" size="55"/>
<Column id="PGM_FILE_NM" type="STRING" size="55"/>
<Column id="PGM_PATH_NM" type="STRING" size="55"/>
<Column id="MENU_CD" type="STRING" size="255"/>
<Column id="MENU_LEVEL" type="INT" size="15"/>
<Column id="MYMENU" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE1</Col>
<Col id="TREE">---2</Col>
<Col id="PGM_FILE_NM"/>
<Col id="PGM_PATH_NM"/>
<Col id="MENU_CD">COA</Col>
<Col id="MENU_LEVEL">0</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE2_1</Col>
<Col id="TREE">-------3</Col>
<Col id="PGM_FILE_NM"/>
<Col id="PGM_PATH_NM"/>
<Col id="MENU_CD">COA01</Col>
<Col id="MENU_LEVEL">1</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0100</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0100.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0100</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0200</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0200.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0200</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0210</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0210.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0210</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0300</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0300.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0300</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0310</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0310.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0310</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0320</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0320.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0320</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0330</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0330.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0330</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0400</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0400.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0400</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0500</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0500.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0500</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0600</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0600.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0600</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0700</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0700.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0700</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0800</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0800.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0800</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE0900</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE0900.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE0900</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE1000</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE1000.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE1000</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE1100</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE1100.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE1100</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
<Row>
<Col id="MENU_LEVEL1_CD">M3</Col>
<Col id="MENU_NM">GUIDE1200</Col>
<Col id="TREE">-----------4</Col>
<Col id="PGM_FILE_NM">GUIDE1200.xfdl</Col>
<Col id="PGM_PATH_NM">design</Col>
<Col id="MENU_CD">GUIDE1200</Col>
<Col id="MENU_LEVEL">2</Col>
<Col id="MYMENU">0</Col>
</Row>
</Rows>
</Dataset>
<Dataset id="ds_PuSearchlink" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="SEARCH_MENU" type="STRING" size="256"/>
<Column id="MENU_NM" type="STRING" size="256"/>
<Column id="MENU_CD" type="STRING" size="256"/>
<Column id="MENU_TP" type="STRING" size="256"/>
<Column id="PGM_FILE_NM" type="STRING" size="256"/>
<Column id="PGM_PATH_NM" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="SEARCH_MENU">e-power market (4)</Col>
<Col id="MENU_TP">1</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">기타 &gt; &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;운영자료</Col>
<Col id="MENU_TP">2</Col>
<Col id="MENU_CD">PGM01</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">기타 &gt; &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;통계</Col>
<Col id="MENU_TP">2</Col>
<Col id="MENU_CD">PGM02</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">기타 &gt; 전력&lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;감시위원회</Col>
<Col id="MENU_TP">2</Col>
<Col id="MENU_CD">PGM03</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">기타 &gt; &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;가격</Col>
<Col id="MENU_TP">2</Col>
<Col id="MENU_CD">PGM04</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">정산 (7)</Col>
<Col id="MENU_TP">1</Col>
<Col id="MENU_CD"/>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth 메뉴명</Col>
<Col id="MENU_CD">PGM01</Col>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth 메뉴명</Col>
<Col id="MENU_CD">PGM02</Col>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth 메뉴명</Col>
<Col id="MENU_CD">PGM03</Col>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth 메뉴명</Col>
<Col id="MENU_CD">PGM04</Col>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth 메뉴명</Col>
<Col id="MENU_CD">PGM01</Col>
</Row>
</Rows>
</Dataset>
<Dataset id="ds_PuSearchlink00" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="SEARCH_MENU" type="STRING" size="256"/>
<Column id="MENU_NM" type="STRING" size="256"/>
<Column id="MENU_CD" type="STRING" size="256"/>
<Column id="MENU_TP" type="STRING" size="256"/>
<Column id="PGM_FILE_NM" type="STRING" size="256"/>
<Column id="PGM_PATH_NM" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="SEARCH_MENU">전력수요</Col>
<Col id="MENU_TP">1</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">기타 &gt; &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;운영자료</Col>
<Col id="MENU_TP">2</Col>
<Col id="MENU_CD">PGM01</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">기타 &gt; &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;통계</Col>
<Col id="MENU_TP">2</Col>
<Col id="MENU_CD">PGM02</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">기타 &gt; 전력&lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;감시위원회</Col>
<Col id="MENU_TP">2</Col>
<Col id="MENU_CD">PGM03</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">기타 &gt; &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;가격</Col>
<Col id="MENU_TP">2</Col>
<Col id="MENU_CD">PGM04</Col>
</Row>
<Row>
<Col id="SEARCH_MENU">정보공개</Col>
<Col id="MENU_TP">1</Col>
<Col id="MENU_CD"/>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;</Col>
<Col id="MENU_CD">PGM01</Col>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;</Col>
<Col id="MENU_CD">PGM02</Col>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;</Col>
<Col id="MENU_CD">PGM03</Col>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;</Col>
<Col id="MENU_CD">PGM04</Col>
</Row>
<Row>
<Col id="MENU_TP">2</Col>
<Col id="SEARCH_MENU">2차 depth 메뉴명 &gt; 3차 depth &lt;fc v='#ff4005'&gt;시장&lt;/fc&gt;</Col>
<Col id="MENU_CD">PGM01</Col>
</Row>
</Rows>
</Dataset>
</Objects>
<Script type="xscript4.0"><![CDATA[/*
* 01. 업무구분 : Frame 공통
* 02. 화면명 : leftFrame.xfdl
* 03. 화면설명 :
* 04. 작성일 : 2012-08-22
* 05. 작성자 : sian
* 06. 수정이력 :
*********************************************************************
* 수정일 이 름 사유
*********************************************************************
* 2012-08-22 sian 최초 작성
*********************************************************************
*/
include "lib::commLib.xjs"; //공통함수 호출
var fLoad=0;
function leftMenu_onload(obj:Form, e:LoadEventInfo)
{
//선택된 메뉴 LEVEL2 명 표시
//divMenu.BtnLeftMenu.text = MenuNm;
gds_Menu.filter("MENU_CD.toString().substr(0,4)=='"+("0010000".substr(0,4))+"'&&(MENU_LVL=='3'||MENU_LVL=='4')");
DsMenu.copyData(gds_Menu, true);
DsMenu.keystring = "S:MENU_CD";
gds_Menu.filter("");
// 검색시 사용할 데이타셋
fn_findDataLoad();
}
function fn_loadMenu()
{
gfn_ChkOpenMenu(DsMenu.getColumn(1, "MENU_CD"), DsMenu);
}
///////////////////////////////////////////////////////////////////////////////////////////////
//MDI 탭메뉴 생성
///////////////////////////////////////////////////////////////////////////////////////////////
function divMenu_grdMenu_oncellclick(obj:Grid, e:GridClickEventInfo)
{
var objDs = this[obj.binddataset];
var nSx = 29;
var nEx = 45;
var nRow = e.row;
var nLvl = objDs.getColumn(nRow, "MENU_LVL");
var childRow = obj.getTreeChildRow(objDs.rowposition, 0, true);
if (childRow >= 0) {
var gridRow = obj.getTreeRow(objDs.rowposition);
if (obj.isTreeCollapsedRow(childRow, true)) {
obj.setTreeStatus(gridRow, true);
}
else {
obj.setTreeStatus(gridRow, false);
}
}
if (nLvl=="4"){
if (e.canvasX < nSx || e.canvasX > nEx)
{
gfn_ChkOpenMenu(objDs.getColumn(e.row, "MENU_CD"), objDs);
}
else
{
if(objDs.getColumn(e.row,"MYMENU") == "0")
{
objDs.setColumn(e.row,"MYMENU","1");
var nCKrow = gdsMyMenu.findRow("menu_id",objDs.getColumn(e.row,"MENU_CD"));
if(nCKrow == -1){
var nRow = gdsMyMenu.addRow();
gdsMyMenu.setColumn(nRow,"menu_id",objDs.getColumn(e.row,"MENU_CD"));
gdsMyMenu.setColumn(nRow,"menu_nm",objDs.getColumn(e.row,"MENU_NM"));
}
} else {
objDs.setColumn(e.row,"MYMENU","0");
var nCKrow = gdsMyMenu.findRow("menu_id",objDs.getColumn(e.row,"MENU_CD"));
gdsMyMenu.deleteRow(nCKrow);
}
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
// Left Tree메뉴
///////////////////////////////////////////////////////////////////////////////////////////////
function fn_changeLeftMenu(Level1Code, MenuNm)
{
if(gv_menuType == "1") // 1Depth 메뉴(버튼) 형태
{
//선택된 메뉴 LEVEL2 명 표시
//divMenu.BtnLeftMenu.text = MenuNm;
var strFilter = "MENU_CD.toString().substr(0,2)=='"+Level1Code.toString().substr(0,2)+"'&&(MENU_LVL=='2'||MENU_LVL=='3'||MENU_LVL=='4')";
gds_Menu.filter(strFilter);
DsMenu.copyData(gds_Menu, true);
DsMenu.keystring = "S:MENU_CD";
gds_Menu.filter("");
}
else if(gv_menuType == "2") // 1Depth 메뉴(버튼) + 2Depth메뉴(팝업Div)형태
{
//선택된 메뉴 LEVEL2 명 표시
//divMenu.BtnLeftMenu.text = MenuNm;
var strFilter = "MENU_CD.toString().substr(0,5)=='"+Level1Code.toString().substr(0,5)+"'&&(MENU_LVL=='3'||MENU_LVL=='4')";
gds_Menu.filter(strFilter);
DsMenu.copyData(gds_Menu, true);
DsMenu.keystring = "S:MENU_CD";
gds_Menu.filter("");
}
}
function edt_search_ontextchanged(obj:Edit, e:TextChangedEventInfo)
{
var text = e.posttext;
if(text.length > 0)
{
var etext = GetSpliceTextE(text);
fds_Find.filter("pseudocode.toString().indexOf('"+etext+"') == 0");
if(fds_Find.rowcount == 0){
lst_search.visible = false;
}else{
lst_search.visible = true;
}
}
else
{
fds_Find.filter("pseudocode == 0");
lst_search.visible = false;
}
}
function edt_search_onkeydown(obj:Edit, e:KeyEventInfo)
{
if(e.keycode == "40"){
lst_search.setFocus();
lst_search.index = 0;
}else if(e.keycode == "13"){
lst_search.visible = false;
btn_search_onclick();
}
}
// 한글 자소를 분리하여 리턴한다.
var arrFirst = [12593,12594,12596,12599,12600,12601,12609,12610,12611,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622];
var arrSecond = [12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643];
var arrThird = [0,12593,12594,12595,12596,12597,12598,12599,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12612,12613,12614,12615,12616,12618,12619,12620,12621,12622];
function GetSpliceTextK(strInput)
{
var i;
var strOut = "";
for(i=0;i<strInput.length;i++)
{
var nCode = strInput.charCodeAt(i);
if(nCode>=44032 && nCode <= 55203)
{
var nFirst = Math.floor((nCode - 44032) / 588);
strOut += String.fromCharCode(arrFirst[nFirst]);
var nSecond = Math.floor(((nCode - 44032) % 588) / 28) ;
strOut += String.fromCharCode(arrSecond[nSecond]);
var nThird = Math.floor((nCode - 44032) % 28) ;
if(nThird > 0)
strOut += String.fromCharCode(arrThird[nThird]);
}
else
strOut += String.fromCharCode(nCode);
}
return strOut;
}
// 한글 자소를 분리하고 키보드에 매치되는 영문으로 리턴한다.
var arrFirstE = ["r","R","s","e","E","f","a","q","Q","t","T","d","w","W","c","z","x","v","g"];
var arrSecondE = ["k","o","i","O","j","p","u","P","h","hk","ho","hl","y","n","nj","np","nl","b","m","ml","l"];
var arrThirdE = ["","r","R","rt","s","sw","sg","e","f","fr","fa","fq","ft","fx","fv","fg","a","q","qt","t","T","d","w","c","z","x","v","g"];
var arrAllE = ["r","R","rt","s","sw","sg","e","E","f","fr","fa","fq","ft","fx","fv","fg","a","q","Q","qt","t","T","d","w","W","c","z","x","v","g","k","o","i","O","j","p","u","P","h","hk","ho","hl","y","n","nj","np","nl","b","m","ml","l"];
function GetSpliceTextE(strInput)
{
var i;
var strOutE = "";
for(i=0;i<strInput.length;i++)
{
var nCode = strInput.charCodeAt(i);
if(nCode>=44032 && nCode <= 55203)
{
var nFirst = Math.floor((nCode - 44032) / 588);
strOutE += arrFirstE[nFirst];
var nSecond = Math.floor(((nCode - 44032) % 588) / 28) ;
strOutE += arrSecondE[nSecond];
var nThird = Math.floor((nCode - 44032) % 28) ;
if(nThird > 0)
strOutE += arrThirdE[nThird];
}
else if(nCode>=12593 && nCode <= 12643)
{
strOutE += arrAllE[nCode-12593];
}
else
{
strOutE += String.fromCharCode(nCode);
}
}
return strOutE;
}
function fn_findDataLoad()
{
var count = ds_Find.getRowCount();
var i;
//div_LfMenu.cmb_Tmenu.index = 0;
//div_LfMenu.grd_LF_SubMenu.binddataset= "ds_TmenuLt00";
for(i=0;i<count;i++)
{
var text = ds_Find.getColumn(i,"text");
var code = GetSpliceTextE(text);
ds_Find.setColumn(i,"pseudocode",code);
}
}
function btn_search_onclick(obj:Button, e:ClickEventInfo)
{
if(!gfn_IsNull(edt_search.value))
fn_SerchCallBack("search",1,edt_search.value);
}
function fn_SerchCallBack(svcID, errorCode, errorMsg) {
if(errorCode > -1){
if ( svcID == "search"){
//향후삭제
ds_PuSearchlink.copyData(ds_PuSearchlink00);
for(var i=0; i < ds_PuSearchlink.rowcount; i++){
ds_PuSearchlink.setColumn(i,0,ds_PuSearchlink.getColumn(i,0).replace("시장",edt_search.value));
}
//End
//메뉴생성
fn_setMyMenud();
//PopupListBox viable
lfn_PopupListBox();
}
}
}
function lfn_PopupListBox(){
var nX = system.clientToScreenX(btn_search, 0) - edt_search.position.width - 5;
var nY = system.clientToScreenY(btn_search, 0) + btn_search.position.height + 5;
trace("yyyyyyyyyyyyyyyyyyyyyy=== " + PopLink.isPopup());
if(PopLink.isPopup()==false){
PopLink.trackPopup(nX, nY);
}else{
PopLink.closePopup();
}
}
function lst_search_onitemclick(obj:ListBox, e:ListBoxClickEventInfo)
{
edt_search.value = e.itemtext;
lst_search.visible = false;
}
function lst_search_onkeydown(obj:ListBox, e:KeyEventInfo)
{
if(e.keycode == "13"){
edt_search.value = obj.value;
lst_search.index = -1;
lst_search.visible = false;
edt_search.setFocus();
}
}
function fn_setMyMenud(){
var objStaMn;
var sStaID;
var sStapreFix = "sta_menu";
var menuTitle;
var menuId;
var objTextSize;
var iNowLeft = 5;
var iNowTop = 0;
var iHeight = 24;
var iStaGap = 0;
var iStaSize = 300;
var k=0;
fn_removeMenu();
for(i=0; i < ds_PuSearchlink.rowcount; i++){
menuTitle = ds_PuSearchlink.getColumn(i,"SEARCH_MENU");
menuId = ds_PuSearchlink.getColumn(i,"MENU_CD");
menuType = ds_PuSearchlink.getColumn(i,"MENU_TP");
objStaMn = new Static;
sStaID = sStapreFix + i;
if(menuType == "1"){
if(i == 0){
objStaMn.init(sStaID, iNowLeft, iNowTop+iNowLeft, iStaSize+iNowLeft, iNowTop + iHeight+iNowLeft);
}else{
objStaMn.init(sStaID, iNowLeft, iNowTop+iNowLeft, iStaSize+iNowLeft, iNowTop + iHeight+iNowLeft + 12);
}
}else if(menuType == "2"){
objStaMn.init(sStaID, iNowLeft, iNowTop+iNowLeft, iStaSize+iNowLeft, iNowTop + iHeight+iNowLeft);
}
if(menuType == "1"){
if(i == 0){
iNowTop += (iHeight + iStaGap);
}else{
iNowTop += (iHeight + iStaGap) + 12;
}
}else if(menuType == "2"){
iNowTop += (iHeight + iStaGap);
}
objStaMn.menuId = menuId;
objStaMn.text = menuTitle;
objStaMn.usedecorate = true;
if(menuType == "1"){
if(i == 0){
//objStaMn.class = "stc_popLayerTil";
objStaMn.style.color="#235798";
objStaMn.style.font="#Dotum,9,bold";
}else{
//objStaMn.class = "stc_popLayerTil2";
objStaMn.style.color="#235798";
objStaMn.style.font="#Dotum,9,bold";
}
}else if(menuType == "2"){
//objStaMn.class = "stc_popLayerList";
objStaMn.style.background="transparent";
}
PopLink.addChild(objStaMn.name, objStaMn);
if(menuType == "2"){
objStaMn.onclick.addHandler(Menu_onmouseenter);
}
objStaMn.show();
}
//close btn 생성
var objButton = new Button();
objButton.init("btn_PopLinkClose", 305, 5, 320, 20);
objButton.class = "btn_tab_close";
objButton.text = "";
objButton.onclick.addHandler(popLinkCloseButtonClick);
PopLink.addChild(objButton.name, objButton);
objButton.show();
}
function fn_removeMenu()
{
if(PopLink.components.length>0)
{
while(PopLink.components.length!=0)
{
PopLink.removeChild(PopLink.components[0].name);
}
}
}
function Menu_onmouseenter(obj:Static, e:ClickEventInfo)
{
alert("작업중");
}
function popLinkCloseButtonClick(obj:Button, e:ClickEventInfo){
PopLink.closePopup();
}
// Active Form에 해당하는 메뉴 RowPosition설정
function fn_selectedMenuIndex(sMenuCd)
{
DsMenu.rowposition = DsMenu.findRowExpr("MENU_CD=='"+sMenuCd+"'");
}
]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="login" classname="login" inheritanceid="" position="absolute 0 0 460 200" titletext="New Form" style="background:transparent URL('theme://images/login_bg.png') stretch 50,50;">
<Layouts>
<Layout>
<Edit id="S_USER_ID" taborder="0" value="test" onkeydown="S_USER_ID_onkeydown" position="absolute 128 71 273 90" style="background:#ffffff00; "/>
<Edit id="S_USER_PWD" taborder="1" value="test1234" password="true" onkeydown="S_USER_PWD_onkeydown" position="absolute 128 95 273 114" style="background:#ffffff00; "/>
<Button id="btn_login" taborder="1" onclick="btn_login_onclick" position="absolute 281 71 346 114" style="cursor:hand;" text="login" class="btn_WFSA_Search"/>
<Button id="btn_cancel" taborder="1" text="cancel" onclick="btn_login_onclick" position="absolute 349 71 414 114" style="cursor:hand;" class="btn_WF_crud"/>
<Radio id="rdo_menuType" taborder="1" position="absolute 128 132 282 156" onitemclick="Radio00_onitemclick" innerdataset="@radio" codecolumn="code" datacolumn="text" direction="vertical" index="0" value="1"/>
<Static id="Static00" text="아이디 :" position="absolute 52 72 132 89" style="font:Dotum,10,bold;"/>
<Static id="Static01" text="패스워드 :" position="absolute 52 94 133 111" style="font:Dotum,10,bold;"/>
<Static id="Static02" text="메뉴타입 :" position="absolute 52 133 133 150" style="font:Dotum,10,bold;"/>
<Static id="Static03" text="System Login" position="absolute 21 12 224 29" style="background:transparent URL('theme://images/ico_title.png') left middle;color:#ffffffff;padding:0 0 0 20;font:Dotum,10,bold;"/>
</Layout>
</Layouts>
<Bind>
<BindItem id="item0" compid="S_USER_ID" propid="value" datasetid="ds_in" columnid="USER_ID"/>
<BindItem id="item1" compid="S_USER_PWD" propid="value" datasetid="ds_in" columnid="USER_PWD"/>
</Bind>
<Objects>
<Dataset id="radio" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="code" type="STRING" size="256"/>
<Column id="text" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="code">1</Col>
<Col id="text">1단 메뉴</Col>
</Row>
<Row>
<Col id="code">2</Col>
<Col id="text">2단 메뉴</Col>
</Row>
</Rows>
</Dataset>
</Objects>
<Script type="xscript4.0"><![CDATA[/*
* 01. 업무구분 : 로그인 페이지
* 02. 화면명 : login.xfdl
* 03. 화면설명 :
* 04. 작성일 : 2012-08-28
* 05. 작성자 : sian
* 06. 수정이력 :
*********************************************************************
* 수정일 이 름 사유
*********************************************************************
* 2012-08-28 sian 최초 작성
*********************************************************************
*/
function btn_login_onclick(obj:Button, e:ClickEventInfo)
{
// 메뉴타입 설정(topFrame 영역 메뉴타입 설정)
gv_menuType = rdo_menuType.value;
close("OK");
}
]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,173 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="myFrame" classname="myFrame" inheritanceid="" position="absolute 0 0 30 647" titletext="New Form" scrollbars="none">
<Layouts>
<Layout>
<Static id="sta_LF_GuideShadow" transparenthittest="true" position="absolute 25 0 30 648" style="background:@gradation; gradation:liner 0,0 #33333300 100,0 #33333333; "/>
<Div id="div_LF_QuickMenu" anchor="left top bottom" taborder="1" style="background:#a8a8a2ff; " text="Div00" scrollbars="none" position="absolute 0 32 30 647">
<Layouts>
<Layout>
<Button id="btn_LF_Quick00" taborder="1" text="1" onclick="div_LF_QuickMenu_btn_LF_Quick00_onclick" class="btn_LF_Quick" position="absolute 2 3 26 26"/>
<Button id="btn_LF_Quick01" taborder="1" text="2" class="btn_LF_Quick" position="absolute 2 30 26 53"/>
<Button id="btn_LF_Quick02" taborder="1" text="3" class="btn_LF_Quick" position="absolute 2 57 26 80"/>
<Button id="btn_LF_Quick03" taborder="1" text="4" class="btn_LF_Quick" position="absolute 2 84 26 107"/>
<Button id="btn_LF_Quick04" taborder="1" text="5" class="btn_LF_Quick" position="absolute 2 111 26 134"/>
<Button id="btn_LF_Quick05" taborder="1" text="6" class="btn_LF_Quick" position="absolute 2 138 26 161"/>
<Button id="btn_LF_Quick06" taborder="1" text="7" class="btn_LF_Quick" position="absolute 2 165 26 188"/>
<Button id="btn_LF_Quick07" taborder="1" class="btn_LF_QuickAdd" position="absolute 2 192 26 215"/>
</Layout>
</Layouts>
</Div>
<Button id="btn_Show" taborder="1" onclick="btn_Show_onclick" class="btn_LF_ShowHide" position="absolute 7 7 20 22" style="image:URL('theme://images/img_LF_Show.png'); "/>
<Button id="btn_Hide" taborder="1" onclick="btn_Hide_onclick" class="btn_LF_ShowHide" position="absolute 7 7 20 22" style="image:URL('theme://images/img_LF_Hide.png'); "/>
</Layout>
</Layouts>
<Objects>
<PropertyAnimation id="PropAni" endingmode="to" repeat="1" repeattype="normal" duration="0" starttime="0"/>
</Objects>
<Script type="xscript4.0"><![CDATA[
function btn_ShowHide_onclick(obj:Button, e:ClickEventInfo)
{
btn_Hide.visible = false;
btn_Show.visible = true;
sysf_openMenuFrame("LEFT", true);
}
//좌측 메뉴 보이기
function btn_Show_onclick(obj:Button, e:ClickEventInfo)
{
btn_Hide.visible = true;
btn_Show.visible = false;
sysf_openMenuFrame("LEFT", false);
}
//좌측 메뉴 숨기기
function btn_Hide_onclick(obj:Button, e:ClickEventInfo)
{
btn_Hide.visible = false;
btn_Show.visible = true;
sysf_openMenuFrame("LEFT", true);
}
//Left메뉴 View/Hide처리
function sysf_openMenuFrame(Type, bHide)
{
if(Type=="LEFT")
{
if(bHide == true)
{
sysf_hideLeftMenuFrame();
}
else
{
sysf_showLeftMenuFrame();
}
}
}
/*
* 기능 : LEFT 프레임 접힘 처리
* 인수 : 없슴
* 리턴 : 없슴
*/
function sysf_hideLeftMenuFrame()
{
var PropAni1 = new PropertyAnimation();
var PropAni2 = new PropertyAnimation();
var CompAni = new CompositeAnimation();
gv_menuShowWidth = gv_leftFrame.position.width;
gPropAni.menuType = "LEFT";
gPropAni.hide = true;
gPropAni.duration = 100;
gPropAni.targetcomp = gv_leftFrame;
gPropAni.interpolation = Interpolation.expoOut;
gPropAni.fromvalue = gv_leftFrame.position.x;
gPropAni.tovalue = gv_menuHideWidth - gv_leftFrame.position.width;
gPropAni.targetprop = "position.x";
gPropAni.endingmode = "to";
PropAni1.duration = 100;
PropAni1.targetcomp = gv_VFrameSet;
PropAni1.interpolation = Interpolation.expoOut;
PropAni1.fromvalue = gv_VFrameSet.position.x;
PropAni1.tovalue = gv_menuHideWidth;
PropAni1.targetprop = "position.x";
PropAni1.endingmode = "to";
PropAni2.duration = 100;
PropAni2.targetcomp = gv_VFrameSet;
PropAni2.interpolation = Interpolation.expoOut;
PropAni2.fromvalue = gv_VFrameSet.position.width;
PropAni2.tovalue = gv_VFrameSet.position.width+(gv_VFrameSet.position.x-gv_menuHideWidth);
PropAni2.targetprop = "position.width";
PropAni2.endingmode = "to";
CompAni.addItem(gPropAni);
CompAni.addItem(PropAni1);
CompAni.addItem(PropAni2);
CompAni.run();
}
/*
* 기능 : LEFT 프레임 펼침 처리
* 인수 : 없슴
* 리턴 : 없슴
*/
function sysf_showLeftMenuFrame()
{
var PropAni1 = new PropertyAnimation();
var PropAni2 = new PropertyAnimation();
var CompAni = new CompositeAnimation();
gPropAni.menuType = "LEFT";
gPropAni.hide = false;
gPropAni.duration = 100;
gPropAni.targetcomp = gv_leftFrame;
gPropAni.interpolation = Interpolation.expoOut;
trace("gv_menuShowWidth===>> " + gv_menuShowWidth + " : " + gv_leftFrame.position.x);
gv_HFrameSet.separatesize = "30," + gv_menuShowWidth + ",*";
gPropAni.fromvalue = gv_leftFrame.position.x - gv_menuShowWidth;
gPropAni.tovalue = gv_leftFrame.position.x;
gPropAni.targetprop = "position.x";
gPropAni.endingmode = "to";
PropAni1.duration = 100;
PropAni1.targetcomp = gv_VFrameSet;
PropAni1.interpolation = Interpolation.expoOut;
PropAni1.fromvalue = gv_menuHideWidth;
PropAni1.tovalue = gv_menuShowWidth + 30;
PropAni1.targetprop = "position.x";
PropAni1.endingmode = "to";
PropAni2.duration = 100;
PropAni2.targetcomp = gv_VFrameSet;
PropAni2.interpolation = Interpolation.expoOut;
PropAni2.fromvalue = gv_VFrameSet.position.width+(gv_VFrameSet.position.x-gv_menuHideWidth);
PropAni2.tovalue = gv_VFrameSet.position.width;
PropAni2.targetprop = "position.width";
PropAni2.endingmode = "to";
CompAni.addItem(gPropAni);
CompAni.addItem(PropAni1);
CompAni.addItem(PropAni2);
CompAni.run();
}
]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,354 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="tabMenu" classname="Top" inheritanceid="" position="absolute 0 0 825 29" scrollbars="none" class="frm_WF_MID" oninit="tabMenu_oninit">
<Layouts>
<Layout>
<Button id="btn_FrmList" taborder="1" class="btn_WF_max" enable="false" position="absolute 776 4 824 27" anchor="top right" style="background:@gradation;border:1 solid #999999ff ;bordertype:round 3 3 ;opacity:50; :disabled {border:1 solid #999999ff ;bordertype:round 2 2 ;opacity:100;}" onclick="btn_FrmList_onclick"/>
<Div id="div_Tab" taborder="1" position="absolute 0 3 734 28" onhscroll="div_Tab_onhscroll" onsize="div_Tab_onsize" anchor="left top right" scrollbars="hidden">
<Layouts>
<Layout/>
</Layouts>
</Div>
<Button id="btn_cas" taborder="1" onclick="btn_Arrange_onclick" class="btn_TF_MAX" position="absolute 785 8 802 26" userdata="cascade" visible="false" anchor="top right"/>
<Button id="btn_MdiList" taborder="1" onclick="btn_MdiList_onclick" class="btn_WF_MDI_List" enable="false" position="absolute 756 4 775 27" anchor="top right" style="bordertype:round 3 3 ;opacity:50; :disabled {bordertype:round 2 2 ;opacity:100;}"/>
<PopupDiv id="PopLink" text="PopupDiv00" style="background:white; border:2 solid #428cb6ff ; bordertype:round 5 5 ; " onmouseleave="PopLink_onmouseleave" onmouseenter="PopLink_onmouseenter" visible="false" position="absolute 608 29 786 201">
<Layouts>
<Layout>
<ListBox id="ListBoxLink" taborder="0" codecolumn="WINID" datacolumn="MENU_NM" onitemclick="PopLink_ListBoxLink_onitemclick" position="absolute 2 1 174 165" style="itemheight:22; itempadding:0 0 0 10; border:1 none #767676ff ; "/>
</Layout>
</Layouts>
</PopupDiv>
<Button id="btn_PreMdi" taborder="1" defaultbutton="true" position="absolute 723 4 740 27" anchor="top right" style="bordertype:round 2 2 ;" onclick="btn_PreMdi_onclick" class="tab_spinup"/>
<Button id="btn_NexMdi" taborder="1" defaultbutton="true" position="absolute 742 4 759 27" style="bordertype:round 2 2 ;align:center middle;" anchor="top right" onclick="btn_NexMdi_onclick" class="tab_spindown"/>
<Button id="btn_max" taborder="1" onclick="btn_Arrange_onclick" class="btn_TF_MIN" position="absolute 785 8 802 26" userdata="maximize" visible="false" anchor="top right"/>
<Button id="btn_closeAll" taborder="1" onclick="btn_Arrange_onclick" position="absolute 802 8 822 26" positionstep="0" style="background:@gradation URL('theme://images\arrange_close_O.png'); border:0 solid #999999ff ; " userdata="closeAll" anchor="top right"/>
</Layout>
</Layouts>
<Script type="xscript4.0"><![CDATA[/*
* 01. 업무구분 : Frame 공통
* 02. 화면명 : tabFrame.xfdl
* 03. 화면설명 :
* 04. 작성일 : 2012-08-22
* 05. 작성자 : sian
* 06. 수정이력 :
*********************************************************************
* 수정일 이 름 사유
*********************************************************************
* 2012-08-22 sian 최초 작성
*********************************************************************
*/
include "lib::commLib.xjs"; //공통함수 호출
var onTabWork = false;
var nTop = 6;
var nBottom = 28;
var nWidth = 130;
var nExtraButtonLeft = 107;
var nExtraButtonRight = 124;
var nExtraButtonTop = 8;
var nExtraButtonBottom = 24;
var nBtnCount = 0;
var nBtnStart = 1;
var nBtnEnd = 6;
var benter = false;
var objSelectBtn;
var sBtnWorkCd = "01";
var sBtnWorkCdEx = "_S";
// Tab메뉴폼 init
function tabMenu_oninit(obj:Form, e:InitEventInfo)
{
lfn_TabFrameBtnVisT();
btn_cas.visible=true;
}
function lfn_TabFrameBtnVisT()
{
btn_PreMdi.visible = true;
btn_NexMdi.visible = true;
}
function lfn_TabFrameBtnVisF()
{
btn_PreMdi.visible = false;
btn_NexMdi.visible = false;
}
function btn_Arrange_onclick(obj:Button, e:ClickEventInfo)
{
btn_FrmList.class = obj.name;
gfn_ArrangeWin(obj.userdata);
// MDI 화면에서 Arrange정렬시 Active 상태 표시
gfn_ActiveFrame(gds_OpenMenu.getColumn(gds_OpenMenu.rowposition,"WINID"));
}
//활성화된 페이지를 tabFrame에 메뉴버튼 형태로 추가한다.
function fn_setNaviAdd(naviCD, naviNM) {
var i;
var objFont = gfn_getObjFont(9,"Malgun Gothic");
objFont.bold = false;
var objTextSize = gfn_GetTextSize(naviNM, objFont);
var nGap;
if(gds_OpenMenu.rowcount==1)
{
nGap = 0;
}
else
{
nGap = div_Tab.all[gds_OpenMenu.getColumn(gds_OpenMenu.rowcount-2, "WINID")].position.right;
}
var naviNM_Tooltip = naviNM;
btn_MdiList.enable = true;
btn_FrmList.enable = true;
nBtnCount++;
//페이지 버튼 생성
var objBtn = new Button();
///////////////////////////////////////////////////
objBtn.init(naviCD, nGap+1, nTop, nGap+objTextSize.cx+50, nBottom);
div_Tab.addChild(objBtn.name, objBtn);
objBtn.text = naviNM;
objBtn.tooltiptext = naviNM_Tooltip;
///////////////////////////////////////////////////
objBtn.onclick.setHandler(Button_onclick);
objBtn.visible = true;
objBtn.show();
objBtn.click();
//페이지 닫기 버튼 생성
var objExtraBtn = new Button();
objExtraBtn.init(naviCD+"__EX", objBtn.position.right-17, nExtraButtonTop+2, objBtn.position.right-3, nExtraButtonBottom);
div_Tab.addChild(objExtraBtn.name, objExtraBtn);
objExtraBtn.class = "btn_tab_close";
objExtraBtn.onclick.setHandler(ExtraButton_onclick);
objExtraBtn.visible = true;
objExtraBtn.show();
//생성된 페이지의 갯수에 따라 네비게이션을 한칸 이동할지 현재로 유지할지 결정
if(nBtnCount>nBtnEnd)
{
nBtnStart = nBtnCount-nBtnEnd
fn_BtnMove("NEXT");
}
else
{
fn_BtnMove("MOVE");
}
div_Tab.resetScroll();
objBtn.setFocus();
}
//버튼클릭시 해당페이지로 focus를 이동하여 해당페이지를 Active상태로 만든다.
function Button_onclick(obj:Button, e:ClickEventInfo)
{
fn_activeTabpage(obj.name);
}
function Button_ondbclick(obj:Button, e:MouseEventInfo)
{
gfn_ChangePopup(obj.name);
}
//닫기버튼 클릭시 해당하는 페이지를 닫는다.
function ExtraButton_onclick(obj:Button, e:ClickEventInfo)
{
gfn_TabOnClose(obj.name.replace("__EX", ""));
}
//선택된페이지의 Button을 Select상태로 만들고
//해당하는페이지가 현재페이지 네비게이션에 보이지
//않을경우 네비게이션에 보이는 Button의 위치를 변경해
//선택된페이지가 네비게이션에 보이도록 한다.
function fn_activeTabpage(naviCD) {
var i;
var sWINID;
var nRow;
var nBtnMoveCount;
for(i=0;i<gds_OpenMenu.rowcount;i++)
{
sWINID = gds_OpenMenu.getColumn(i, "WINID");
if(gfn_IsNull(div_Tab.components[sWINID])==true) continue;
div_Tab.components[sWINID].class ="btn_tab";
if(gfn_IsNull(div_Tab.components[sWINID+"__EX"])==true) continue;
div_Tab.components[sWINID+"__EX"].class ="btn_tab_close";
}
if(gfn_IsNull(div_Tab.components[naviCD])==false)
{
div_Tab.components[naviCD].class = "btn_tabseleted";
div_Tab.resetScroll();
div_Tab.components[naviCD].setFocus();
}
nRow = gds_OpenMenu.findRow("WINID", naviCD)
gds_OpenMenu.rowposition = nRow;
//MDI메뉴에서 선택된 메뉴코드를 이용해서 leftFrame의 메뉴INDEX를 표시
gv_leftFrame.form.fn_selectedMenuIndex(naviCD.substr(0,8));
gfn_ActiveFrame(naviCD);
// Arrange 버튼 상태처리
btn_closeAll.enable=true;
btn_cas.enable=true;
btn_max.enable=true;
}
function fn_movePage(naviCD)
{
var i;
nRow = gds_OpenMenu.findRow("WINID", naviCD)
if(nRow<nBtnStart-1)
{
nBtnMoveCount = (nBtnStart-1) - nRow;
for(i=0;i<nBtnMoveCount;i++)
{
fn_BtnMove("PREV");
}
}
else if(nRow>nBtnStart+nBtnEnd-2)
{
nBtnMoveCount = nRow - (nBtnStart+nBtnEnd-2);
for(i=0;i<nBtnMoveCount;i++)
{
fn_BtnMove("NEXT");
}
}
}
//페이지가 닫아졌을때 해당페이지의 네비게이션 버튼과 닫기버튼을 삭제한다.
function fn_deleteTabpage(naviCD) {
var i;
var sWINID;
var nGap = 0;
if(gfn_IsNull(div_Tab.components[naviCD])==false) {
nGap = div_Tab.all[naviCD].position.width;
div_Tab.all[naviCD]+"__EX".visible = false;
}
var nRow = gds_OpenMenu.findRow("WINID", naviCD);
for(i=nRow;i<gds_OpenMenu.rowcount;i++)
{
sWINID = gds_OpenMenu.getColumn(i, "WINID");
div_Tab.all[sWINID].move(div_Tab.all[sWINID].position.left-(nGap +1), nTop);
div_Tab.all[sWINID+"__EX"].move(div_Tab.all[sWINID].position.right-17, nExtraButtonTop + 2);
div_Tab.removeChild(naviCD);
div_Tab.removeChild(naviCD+"__EX");
}
}
//네비게이션 다음버튼 클릭시
function btn_NexMdi_onclick(obj:Button, e:ClickEventInfo)
{
div_Tab.hscrollbar.pos += div_Tab.hscrollbar.page;
}
//네비게이션 이전버튼 클릭시
function btn_PreMdi_onclick(obj:Button, e:ClickEventInfo)
{
div_Tab.hscrollbar.pos -= div_Tab.hscrollbar.page;
}
//선택된 Type에 따라 버튼의 위치를 이동시킨다.
function fn_BtnMove(Type)
{
if(Type=="PREV")
{
if(nBtnStart!=1)
{
nBtnStart--;
}
}
else if(Type=="NEXT")
{
if(nBtnStart != gds_OpenMenu.rowcount-nBtnEnd+1&&gds_OpenMenu.rowcount>nBtnEnd)
{
nBtnStart++;
}
}
else if(Type=="MOVE")
{
nBtnStart=nBtnStart;
}
btn_PreMdi.enable = true;
btn_NexMdi.enable = true;
if(nBtnStart==1)
{
btn_PreMdi.enable = false;
}
if(nBtnStart == gds_OpenMenu.rowcount-nBtnEnd+1||gds_OpenMenu.rowcount<=nBtnEnd)
{
btn_NexMdi.enable = false;
}
}
function PopLink_ListBoxLink_onitemclick(obj:ListBox, e:ListBoxClickEventInfo)
{
fn_activeTabpage(e.itemvalue);
PopLink.closePopup();
}
function div_Tab_onsize(obj:Div, e:SizeEventInfo)
{
nBtnEnd = Math.round(obj.position.width/130);
fn_BtnMove("MOVE");
}
function div_Tab_onhscroll(obj:Div, e:ScrollEventInfo)
{
if(e.pos==0&&div_Tab.hscrollbar.max>0)
{
btn_NexMdi.enable = true;
}
if(e.pos==div_Tab.hscrollbar.max&&div_Tab.hscrollbar.max>0)
{
btn_PreMdi.enable = true;
}
}
function btn_MdiList_onclick(obj:Button, e:ClickEventInfo)
{
var nX = system.clientToScreenX(obj, 0)+obj.position.width-PopLink.position.width;
var nY = system.clientToScreenY(obj, 0)+obj.position.height;
PopLink.ListBoxLink.innerdataset = gds_OpenMenu;
PopLink.ListBoxLink.index = gds_OpenMenu.rowposition;
if(PopLink.isPopup()==false)
{
var RetVal = PopLink.trackPopup(nX, nY);
}
else
{
PopLink.closePopup();
}
}
]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,369 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="topMenu" classname="Top" inheritanceid="" position="absolute 0 0 1024 37" scrollbars="none" class="frm_TP_Bg" onload="Top_onload" ontimer="topMenu_ontimer">
<Layouts>
<Layout>
<Div id="div_Menu" taborder="1" position="absolute 195 1 1012 33" anchor="left top right" scrollbars="none" style="background:transparent URL('theme://images\menu_line.png') left bottom;"/>
<PopupMenu id="PopMenuTopMenu" innerdataset="DsPopMenu" idcolumn="MENU_CD" captioncolumn="MENU_NM" levelcolumn="MENU_LVL" userdatacolumn="MENU_CD" onmenuclick="PopMenuTopMenu_onmenuclick" class="pmenu_TopMenu" position="absolute 106 38 271 263" style="cursor:hand; "/>
<Static id="Static00" position="absolute 33 2 135 35" style="background:URL('img::TOBESOFT.png') left middle; "/>
</Layout>
</Layouts>
<Objects>
<Dataset id="dsTopMenu" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="MENU_CD" type="STRING" size="8"/>
<Column id="UP_MENU_CD" type="STRING" size="8"/>
<Column id="MENU_NM" type="STRING" size="50"/>
<Column id="MENU_LVL" type="BIGDECIMAL" size="22"/>
<Column id="PGM_PATH" type="STRING" size="200"/>
<Column id="PGM_ID" type="STRING" size="200"/>
<Column id="SORT" type="BIGDECIMAL" size="22"/>
<Column id="SAYONG_YN" type="STRING" size="1"/>
<Column id="HELP_PATH" type="STRING" size="200"/>
<Column id="HELP_FILE" type="STRING" size="200"/>
</ColumnInfo>
</Dataset>
<Dataset id="DsPopMenu">
<ColumnInfo>
<Column id="menuLvl" type="STRING" size="256"/>
<Column id="menuId" type="STRING" size="256"/>
<Column id="menuTitle" type="STRING" size="256"/>
<Column id="menuUrl" type="STRING" size="256"/>
<Column id="lvl1Code" type="STRING" size="256"/>
<Column id="lvl1Name" type="STRING" size="256"/>
<Column id="lvl2Code" type="STRING" size="256"/>
<Column id="lvl2Name" type="STRING" size="256"/>
</ColumnInfo>
</Dataset>
</Objects>
<Script type="xscript4.0"><![CDATA[/*
* 01. 업무구분 : Frame 공통
* 02. 화면명 : topFrame.xfdl
* 03. 화면설명 :
* 04. 작성일 : 2012-08-22
* 05. 작성자 : sian
* 06. 수정이력 :
*********************************************************************
* 수정일 이 름 사유
*********************************************************************
* 2012-08-22 sian 최초 작성
*********************************************************************
*/
var objFocusBtn;
//메뉴이동시 열린페이지 닫을때 취소여부 체크
var isChecked=true;
// 대메뉴(탑메뉴) SORT 칼럼의 순서를 array에 저장한다
var arrSort = new Array();
function Top_onload(obj:Form, e:LoadEventInfo)
{
//Global Dataset에서 1레벨 데이타만 가져온다.
fn_removeTopMenu();
dsTopMenu.copyData(gds_Menu);
dsTopMenu.filter("MENU_LVL == '1'");
for(i=0; i < dsTopMenu.rowcount; i++){
arrSort[i] = (dsTopMenu.getColumn(i,"SORT")=="undefined" || dsTopMenu.getColumn(i,"SORT")=="") ? i : dsTopMenu.getColumn(i,"SORT");
}
// Top 메뉴 동적으로 생성
fn_setTopMenu();
this.setTimer(1, 100);
}
function topMenu_ontimer(obj:Form, e:TimerEventInfo)
{
if(e.timerid==1)
{
fn_leftMenuOpen();
}
}
//application로딩시 트리메뉴 리스트 출력
function fn_leftMenuOpen()
{
if(gv_leftFrame.form != null || gv_leftFrame.form != "undefined"){
var iFirstRow = dsTopMenu.findRow("SORT",dsTopMenu.getMin("SORT"));
//대메뉴(탑메뉴)첫번째에 해당하는 트리메뉴를 자동으로 오픈한다.
var sOpenMenuCode = dsTopMenu.getColumn(iFirstRow,"MENU_CD");
//gds_Menu.filter("UP_MENU_CD=='01000000'&&MENU_LVL=='2'");
gds_Menu.filter("UP_MENU_CD=='"+sOpenMenuCode+"'&&MENU_LVL=='2'");
DsPopMenu.copyData(gds_Menu, true);
gds_Menu.filter("");
var sMenuCD = DsPopMenu.getColumn(0, "MENU_CD");
var sMenuNm = DsPopMenu.getColumn(0, "MENU_NM");
//gv_leftFrame.form.fn_changeLeftMenu("01010000", sMenuNm);
trace("--------------------------------------------------" + sMenuCD + " : " + sMenuNm);
gv_leftFrame.form.fn_changeLeftMenu(sMenuCD, sMenuNm);
gv_leftFrame.form.fn_loadMenu();
this.killTimer(1);
}
}
/////////////////////////////////////////////////////////////////////////
// Top Menu Button 동적생성 //
/////////////////////////////////////////////////////////////////////////
function fn_setTopMenu()
{
var objBtn;
var sBtnID;
var sBtnPreFix = "btn_TopMenu_";
var menuTitle;
var menuId;
var objFont = fn_getObjFont(10,"굴림");
var objTextSize;
var iNowLeft = 1;
var iTop = 0;
var iHeight = div_Menu.position.height;
var iBtnSpace = 47;
var iBtnGap = 0;
var iBtnSize;
var objStartBtn;
for(i=0; i < dsTopMenu.rowcount; i++)
{
// 대메뉴 SORT 칼럼에 정상적인 값 셋팅여부판단
// if(!bSort)
// {
// menuTitle = dsTopMenu.getColumn(i,"MENU_NM");
// menuId = dsTopMenu.getColumn(i,"MENU_CD");
// }
// else
// {
menuTitle = dsTopMenu.getColumn(arrSort[i]-1,"MENU_NM");
menuId = dsTopMenu.getColumn(arrSort[i]-1,"MENU_CD");
//}
//menuTitle = dsTopMenu.getColumn(i,"MENU_NM");
//menuId = dsTopMenu.getColumn(i,"MENU_CD");
objTextSize = fn_getTextSize(menuTitle, objFont);
iBtnSize = objTextSize.cx + iBtnSpace;
objBtn = new Button;
sBtnID = sBtnPreFix + i;
objBtn.init(sBtnID, iNowLeft, iTop, (iNowLeft+iBtnSize), iHeight);
objBtn.menuId = menuId;
objBtn.text = menuTitle;
if(i==0) objBtn.class="btn_Gnb_S";
else objBtn.class="btn_Gnb";
div_Menu.addChild(objBtn.name, objBtn);
objBtn.onclick.addHandler(btn_TopMenu_onClick);
//objBtn.onmouseenter.addHandler(btn_TopMenu_onmouseenter);
objBtn.show();
iNowLeft += (iBtnSize + iBtnGap);
}
}
function btn_TopMenu_onClick(obj:Button, e:MouseEventInfo)
{
if(gv_menuType == "1") // 1Depth 메뉴(버튼) 형태
{
gv_leftFrame.form.fn_changeLeftMenu(obj.menuId, obj.menuId);
}
else if(gv_menuType == "2") // 1Depth 메뉴(버튼) + 2Depth메뉴(팝업Div)형태
{
if(fn_IsNull(objFocusBtn)==true)
{
objFocusBtn= obj;
gds_Menu.filter("UP_MENU_CD=='"+obj.menuId+"'&&MENU_LVL=='2'");
DsPopMenu.copyData(gds_Menu, true);
gds_Menu.filter("");
fn_getLevel1Menu();
}
if(objFocusBtn.name!=obj.name||PopMenuTopMenu.isPopup()==false)
{
objFocusBtn= obj;
gds_Menu.filter("UP_MENU_CD=='"+obj.menuId+"'&&MENU_LVL=='2'");
DsPopMenu.copyData(gds_Menu, true);
gds_Menu.filter("");
fn_getLevel1Menu();
}
}
//Top 메뉴 선택상태표시
if(isChecked){
fn_clicked(obj);
}
}
/////////////////////////////////////////////////////////////////////////
// Top메뉴 Button selected 상태표현 //
/////////////////////////////////////////////////////////////////////////
function fn_clicked(obj)
{
//style class 설정..
var iCount = dsTopMenu.rowcount;
var sBtnID = new Array();
for(var i=0;i<iCount;i++){
sBtnID[i] = div_Menu.all["btn_TopMenu_" + i];
trace(obj.name + " : " + sBtnID[i].name);
if(obj.name == sBtnID[i].name){
sBtnID[i].class = "btn_Gnb_S";
}else{
if(sBtnID[i].class == "btn_Gnb_S")
sBtnID[i].class = "btn_Gnb";
}
}
}
function btn_TopMenu_onmouseenter(obj:Button, e:MouseEventInfo)
{
if(fn_IsNull(objFocusBtn)==true)
{
objFocusBtn= obj;
gds_Menu.filter("UP_MENU_CD=='"+obj.menuId+"'&&MENU_LVL=='2'");
DsPopMenu.copyData(gds_Menu, true);
gds_Menu.filter("");
fn_getLevel1Menu();
}
if(objFocusBtn.name!=obj.name||PopMenuTopMenu.isPopup()==false)
{
objFocusBtn= obj;
gds_Menu.filter("UP_MENU_CD=='"+obj.menuId+"'&&MENU_LVL=='2'");
DsPopMenu.copyData(gds_Menu, true);
gds_Menu.filter("");
fn_getLevel1Menu();
}
}
function fn_getLevel1Menu()
{
var nX = system.clientToScreenX(objFocusBtn, 0);
var nY = system.clientToScreenY(objFocusBtn, 0)+objFocusBtn.position.height;
for(var i=0;i<DsPopMenu.rowcount;i++)
{
if(DsPopMenu.getColumn(i, "MENU_LVL")=="2")
{
DsPopMenu.setColumn(i, "MENU_LVL", "0");
}
else
{
DsPopMenu.setColumn(i, "MENU_LVL", "1");
}
}
PopMenuTopMenu.closePopup();
PopMenuTopMenu.trackPopup(nX, nY);
}
function PopMenuTopMenu_onmenuclick(obj:PopupMenu, e:MenuClickEventInfo)
{
var nRow = DsPopMenu.findRow("MENU_CD", e.id);
var sMenuNm = DsPopMenu.getColumn(nRow, "MENU_NM");
gv_leftFrame.form.fn_changeLeftMenu(e.userdata, sMenuNm);
}
function fn_removeTopMenu()
{
if(div_Menu.components.length>0)
{
while(div_Menu.components.length!=0)
{
div_Menu.removeChild(div_Menu.components[0].name);
}
}
}
//
/*------------------------------------------------------------------------------
* 기 능: Font Object 생성 반환
* 인 수: iFontSize
sFontName
* Return : Font Object
------------------------------------------------------------------------------*/
function fn_getObjFont(iFontSize, sFontName)
{
var objFont = new Font;
objFont.size = iFontSize;
objFont.name = sFontName;
objFont.bold = true;
return objFont;
}
/*------------------------------------------------------------------------------
* 기 능: 1depth 메뉴 Text Size 반환
* 인 수: sText (사이즈를 계산할 텍스트 )
objFont(Font정보를 가지고 있는 object입니다.)
iLimitWidth (Option : word wrap이 일어나는 문자열 길이 제한 정수 값입)
sConstWordWrapOption (Option : word wrap 옵션입니다)
* Return : 계산된 사이즈가 저장된 Size object
------------------------------------------------------------------------------*/
function fn_getTextSize(sText, objFont, iLimitWidth, sConstWordWrapOption)
{
//var objPainter = this.canvas.getPainter();
var objPainter = this.canvas.getPainter();
if(fn_IsNull(objPainter)==false)
{
var objTextSize = objPainter.getTextSize(sText, objFont);
return objTextSize;
}
else
{
return false;
}
}
/**********************************************************************************
* 함수명 : fn_IsNull
* 설명 : NULL 여부 체크
* argument : sValue (문자열)
* return Type : boolean
**********************************************************************************/
function fn_IsNull(sValue)
{
if (new String(sValue).valueOf() == "undefined") return true;
if (sValue == null) return true;
var v_ChkStr = new String(sValue);
if (v_ChkStr == null) return true;
if (v_ChkStr.toString().length == 0 ) return true;
return false;
}]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,789 @@
<?xml version="1.0" encoding="utf-8"?>
<Script type="xscript4.0"><![CDATA[/******************************** Program description ******************************
* File Name : grd_basic.xjs
* File Desc. : Grid 'User-Object Basic"
* Author :
* Create Date : 2011/10/14
* Change History :
****************************************************************************************/
class grd_basic extends Grid
{
var objBizForm = "";
var sGridNm = "";
var sGrdFullPath = "";
var objBindDs = "";
var strSeparator = " ";
var bIsValidSort = false;
var arrSortMark = new Array("▲", "▼", "");
var iSortStep = -1;
var iLastCell = -1;
var iLastHeadCol = -1;
var iLastHeadRow = -1;
var sLastText = "";
var validChkCol = "";
var objectType = "grd_basic"; // 엑셀다운로드 기능 사용중
//------------------------------------------------------------------------------------------------------------
//------------------- 그리드 onload
//------------------------------------------------------------------------------------------------------------
function grd_basic() {
summarytype = "top";
defaultSort = "";
cellsizingtype = "col";
selecttype = "area";
autoenter = "select";
areaselecttype = "overband";
cellsizebandtype = "allband";
scrollpixel = "all"; // 그리드 스크롤 단위
}
function grd_onloadInitialization() {
trace("[grd_basic] Constructor");
objBizForm = this.parent;
sGridNm = this.name;
//Event Setting
this.onheadclick.setHandler(event_onheadclick); // Header 클릭 이벤트
this.onkeydown.setHandler(event_onkeydown); // key down 이벤트
}
/*------------------------------------------------------------------------------
* 기 능: 그리드 init --> 화면에서 조회를 새로할 경우에 호출함
* 인 수: N/A
* Return : N/A - 오리지널 소스
------------------------------------------------------------------------------*/
function init()
{
var sDsSortmarkClear = "";
// Sortmark Clear
if ((bIsValidSort) && (iLastCell > -1))
{
this.setCellProperty("head", iLastCell, "text", sLastText);
sDsSortmarkClear = objBindDs.name;
}
objBindDs = eval(this.binddataset);
if (objBindDs != null) { bIsValidSort = true; }
// Dataset sort 초기화
if ((bIsValidSort) && (sDsSortmarkClear == objBindDs.name)) {
if (this.defaultSort <> "")
{
objBindDs.keystring = "S:" + this.defaultSort;
}
}
}
//------------------------------------------------------------------------------------------------------------
//------------------- 해더 클릭시 sort (asc, dsc, clear)
//------------------------------------------------------------------------------------------------------------
function event_onheadclick(obj:Grid, e:GridClickEventInfo)
{
//xfn_trace("--------------------- event_onheadclick ----------------------");
var isChkboxClick = false;
if (this.getCellProperty("Head", e.cell, "edittype") == "checkbox")
{
isChkboxClick = true;
}
if (isChkboxClick) { // 그리드 헤더 체크박스 클릭시 전체선택/해제 기능
var sType;
var strValue;
var objDs = eval(this.binddataset);
var nCell = e.cell;
var vl_chk;
var sBind="chk";
sType = this.getCellProperty("head", e.cell, "displaytype");
sBind= this.getCellProperty("body", e.cell, "text");
if ((sBind != null) && (sBind != "")) {
var arrBind = sBind.split(":");
if (arrBind.length > 1)
{
sBind = arrBind[1];
}
}
else
{
sBind="chk";
}
// Check 칼럼이 아니면 return 시킴.
if(sType != "checkbox") {
return;
}
// Head Check칼럼 기본값 셋팅.
if(this.getCellProperty("head", nCell, "text") == undefined)
{
this.setCellProperty("head", nCell, "text", 1);
vl_chk = 1;
}
else
{
vl_chk = this.getCellProperty("head", nCell, "text") == 0?1:0;
this.setCellProperty("head", nCell, "text", vl_chk);
}
// Body 영역에 Check값 셋팅
for (var i=0; i<objDs.getRowCount(); i++)
{
objDs.setColumn(i,sBind,vl_chk);
}
}
else
{
if (!bIsValidSort) { return; }
var iCurCell = e.cell;
if (iCurCell <0) { return; }
var iCurHeadCol = this.getCellProperty("head", iCurCell, "col");
// Cell 위치 보정
iCurCell = fn_getLastCell(iCurCell, iCurHeadCol);
var iCurHeadRow = this.getCellProperty("head", iCurCell, "row");
var sCurText = this.getCellProperty("head", iCurCell, "text");
//xfn_trace("iCurCell=" + iCurCell + " iCurHeadCol=" + iCurHeadCol + " iCurHeadRow=" + iCurHeadRow + " sCurText=" + sCurText);
if (iCurCell == iLastCell)
{
iSortStep++;
this.setCellProperty("head", iCurCell, "text", sLastText + arrSortMark[iSortStep]);
fn_setKeystring(iLastHeadCol, iSortStep);
if (iSortStep > 1) { iSortStep = -1; }
}
else
{
// 기존 SortMark Clear
if (iLastCell > -1)
{
this.setCellProperty("head", iLastCell, "text", sLastText);
}
// Asc Sort
iSortStep = 0;
this.setCellProperty("head", iCurCell, "text", sCurText + arrSortMark[iSortStep]);
fn_setKeystring(iCurHeadCol, iSortStep);
iLastCell = iCurCell;
iLastHeadCol = iCurHeadCol;
iLastHeadRow = iCurHeadRow;
sLastText = sCurText;
}
}
}
/*------------------------------------------------------------------------------
* 기 능: copy / paste 를 위한 keydown
* 인 수: 1.obj : grd_basic
* 2.e : KeyEventInfo
* Return :
------------------------------------------------------------------------------*/
function event_onkeydown(obj:grd_basic, e:KeyEventInfo)
{
var default_Action_Val = obj.wheelscrollrow;
var pageCnt = obj.pagerowcount;
var totCnt = objects(obj.binddataset).rowcount;
var objDs = eval(obj.binddataset);
var rowPos;
//xfn_trace(" **** event_onkeydown===>" + e.ctrlKey + " : " + e.keycode);
//xfn_trace(" **** totCnt===>"+totCnt);
var nDivide = parseInt(totCnt/pageCnt);
// Ctrl + C
if(e.ctrlKey == true && e.keycode == 67) {
xfn_ClipboardCopy(obj, strSeparator);
// Ctrl + V
} else if( e.ctrlKey == true && e.keycode == 86) {
var strClipboardData = system.getClipboard("CF_UNICODETEXT").replace(",","");
var strClipboardRecord = strClipboardData.split(" ");
// trace("XXXXXXXXX : " + strClipboardRecord.length);
if (this.selectstartcol == this.selectendcol && this.selectstartrow == this.selectendrow && strClipboardRecord.length == 1) {
return;
}
// trace("selectstartcol : " + this.selectstartcol + ", selectendcol : " + this.selectendcol + ", selectstartrow : " + this.selectstartrow + ", selectendrow : " + this.selectendrow);
// trace("this.getEditSelect() : " + this.getEditSelect());
//if (this.getEditCaret
xfn_ClipboardPaste(obj, strSeparator, arrEditColor);
// Page Up
} else if (e.keycode == "33") {
obj.selecttype = "cell";
if (fv_pageCnt < 0) {
rowPos = pageCnt + (fv_pageCnt * pageCnt);
obj.vscrollbar.pos = 0;
objDs.rowposition = 0;
fv_pageCnt = 0;
} else {
fv_pageCnt--;
rowPos = pageCnt + (fv_pageCnt * pageCnt);
objDs.rowposition = rowPos;
obj.vscrollbar.pos = rowPos + default_Action_Val;
}
obj.selecttype = "area";
return true;
// Page Down
} else if (e.keycode == "34") {
obj.selecttype = "cell";
fv_pageCnt++;
if (fv_pageCnt == nDivide) {
fv_pageCnt--;
obj.selecttype = "area";
return;
}
rowPos = pageCnt + (fv_pageCnt * pageCnt);
obj.vscrollbar.pos = rowPos - parseInt(default_Action_Val);
objDs.rowposition = rowPos;
obj.selecttype = "area";
return true;
// Enter key
} else if (e.keycode == "13") {
this.moveToNextCell();
var nCell = this.currentcell();
this.setCellPos(nCell);
return true;
}
}
//*********************************************************************
// * 기능 : 그리드의 선택영역을 Clipboard로 Copy 한다.
// * 인수 : objGrid : Area Select 된 Grid
// strSeparator : Colunm 구분자.
// * 예제 : grd_fn_ClipboardCopy(objGrid, ",");
//*********************************************************************
function xfn_ClipboardCopy(objGrid, strSeparator)
{
xfn_trace("*** xfn_ClipboardCopy>>>>");
var cstrColID="";
var cstrValue="";
var cstrClipboard = "";
var cAreaStartRow = parseInt((parseInt(objGrid.selectstartrow)<0)? objGrid.currentrow: objGrid.selectstartrow );
var cAreaEndRow = parseInt((parseInt(objGrid.selectendrow)<0)? objGrid.currentrow: objGrid.selectendrow) ;
var cAreaStartCol = parseInt((parseInt(objGrid.selectstartcol)<0)? objGrid.currentcol: objGrid.selectstartcol) ;
var cAreaEndCol = parseInt((parseInt(objGrid.selectendcol)<0)? objGrid.currentcol: objGrid.selectendcol) ;
trace(cAreaStartRow + " : " + cAreaEndRow + " : " + cAreaStartCol + " : " + cAreaEndCol);
for(var cRow = cAreaStartRow; cRow <= cAreaEndRow; cRow++)
{
for(var cCell = cAreaStartCol; cCell <= cAreaEndCol; cCell++)
{
if(objGrid.getFormatColSize(cCell) > 0)
{
cstrColID = xfn_getBindColumnID(cCell);
cstrValue = objBindDs.getColumn(cRow,cstrColID);
if( cstrValue != null && cstrValue.toString().substr(1,6) == "object" )
cstrValue = "";
cstrClipboard = cstrClipboard + cstrValue + strSeparator;
trace(0);
}
}
trace(1);
cstrClipboard = cstrClipboard.substr(0,cstrClipboard.length-1);
cstrClipboard = cstrClipboard + "\n";
trace(2);
}
trace(3);
cstrClipboard = cstrClipboard.substr(0,cstrClipboard.length-1);
cstrClipboard = cstrClipboard + "\r"+"\n";
trace(4);
xfn_trace(" ***copy :: cstrClipboard==>"+cstrClipboard);
system.setClipboard("CF_UNICODETEXT",cstrClipboard);
return;
}
// /*********************************************************************
// * 기능 : Clipboard에 Copy된 내용을 그리드의 선택된 영역에 Paste 한다.
// * 인수 : objGrid : Area Select 된 Grid
// strSeparator : Colunm 구분자.
// arrEditColor : Edit Color Table
// * 예제 : grd_fn_ClipboardPaste(objGrid, ",", arrEditColor);
// *********************************************************************/
function xfn_ClipboardPaste(objGrid, strSeparator, arrEditColor, isEdit)
{
var orgDataset = eval(objGrid.binddataset);
var nSearchRow = 0;
var nSearchCol = 0;
var strColID;
var strValue;
var strBgColor;
var strEditType;
// 숫자 자릿수 구분은 comma 를 사용하기 때문에 호환을 위해서 comma 를 제거한다.
var strClipboardData = system.getClipboard("CF_UNICODETEXT").replace(",","");
strClipboardData = strClipboardData.replace("\r","");
//xfn_trace(" 11 strClipboardData==>"+strClipboardData);
if(strSeparator != " ") {
// 유럽의 숫자 자릿수 구분은 space 를 사용하기 때문에 호환을 위해서 space 를 제거한다.
//strClipboardData = strClipboardData.replace(" ","");
}
//xfn_trace(" 22 strClipboardData==>"+strClipboardData);
var strClipboardRecord = strClipboardData.split("\n");
// xfn_trace("33 ====>"+strClipboardRecord.length);
var strClipboardColunm;
var nAreaStartRow;
var nAreaEndRow;
var nAreaStartCol;
var nAreaEndCol;
if(objGrid.selecttype == "area") {
nAreaStartRow = parseInt(objGrid.selectstartrow);
nAreaEndRow = parseInt(objGrid.selectendrow);
nAreaStartCol = parseInt(objGrid.selectstartcol);
nAreaEndCol = parseInt(objGrid.selectendcol);
} else {
nAreaStartRow = parseInt(objGrid.currentrow);
nAreaEndRow = parseInt(objGrid.currentrow);
nAreaStartCol = parseInt(objGrid.currentcell);
nAreaEndCol = parseInt(objGrid.currentcell+1);
}
//objGrid.enableredraw = false;
//setWaitCursor(true);
//var sSelectType = this.selecttype;
// this.orgSelectType = this.selecttype;
//
// this.selecttype = "cell";
for(var nRow = nAreaStartRow; nRow < (nAreaStartRow + strClipboardRecord.length-1); nRow++)
{
//xfn_trace(" >>>> nRow==>"+nRow);
strClipboardColunm = strClipboardRecord[nSearchRow].split(strSeparator);
nSearchCol = 0;
var nAreaCell = nAreaStartCol + strClipboardColunm.length;
//xfn_trace(" >>>> nAreaCell==>"+nAreaCell);
for(var nCell = nAreaStartCol; nCell < objGrid.getCellCount("Head"); nCell++)
{
if( objGrid.getFormatColSize(nCell) > 0 )
{
strColID = objGrid.getCellProperty("body",nCell,"text").substr(5);
orgDataset.rowposition = nRow;
objGrid.setCellPos(nCell);
//xfn_trace("getCellPos() :: "+ objGrid.getCellPos());
strEditType = this.getCurEditType();
strValue = strClipboardColunm[nSearchCol];
//xfn_trace("nRow :: "+nRow+" == nCell :: "+nCell + " :: strValue == "+strValue + " :: strEditType == "+strEditType);
if(strValue != "undefined") {
if(strValue != null && strEditType != "none"){
//xfn_trace("nRow :: "+nRow+" == nCell :: "+nCell+" ************************ strEditType=>"+strEditType);
orgDataset.setColumn(nRow,strColID,strValue);
}
//nSearchCol++;
}
nSearchCol++;
}
else
{
nAreaCell++;
//xfn_trace(" >>>> nAreaCell==>"+nAreaCell);
}
if ( nCell >= nAreaCell )
{
nCell = objGrid.getCellCount("Head");
}
}
nSearchRow++;
/*
for(var nCell = nAreaStartCol; nCell < nAreaCell && nCell < objGrid.getCellCount("Head"); nCell++)
{
if( objGrid.getFormatColSize(nCell) > 0 )
{
strColID = objGrid.getCellProperty("body",nCell,"text").substr(5);
objGrid.setCellPos(nCell);
strEditType = getCurEditType();
strValue = strClipboardColunm[nSearchCol];
xfn_trace(" ************************ strEditType=>"+strEditType);
if(strValue != "undefined") {
if(strValue != null && strEditType != "none"){
orgDataset.setColumn(nRow,strColID,strValue);
}
nSearchCol++;
}
} else {
nAreaCell++;
}
}
*/
}
// this.selecttype = this.orgSelectType; // 2011.08.11 add lsy 그리드 selecttype 을 원상복귀
orgDataset.rowposition = nAreaStartRow;
objGrid.setCellPos(nAreaStartCol);
//setWaitCursor(false);
//objGrid.enableredraw = true;
return;
}
function xfn_getBindColumnID(pBodyCell)
{
trace("aaa");
return xfn_cellNm_check(this, pBodyCell);
}
/*------------------------------------------------------------------------------
* 기 능: 컬럼을 조건으로 컬럼의 ID 를 가져옴
* 인 수: 1.obj : grd_basic
* 2.pBodyCell : cell
* Return : tCellNM
------------------------------------------------------------------------------*/
function xfn_cellNm_check(obj:grd_basic, pBodyCell)
{
trace("bbb");
var tCellNM = "";
try {
tCellNM = obj.getCellProperty("body",pBodyCell, "text" ).toString();
tCellNM = tCellNM.replace("BIND:","");
tCellNM = tCellNM.replace("bind:","");
tCellNM = tCellNM.replace("Bind:","");
}
catch(e) {
tCellNM = "";
}
finally {
return tCellNM;
}
}
function fn_getLastCell(iCell, iCol) {
var iLastCell = iCell;
var iLastCol;
var iLoop = this.getCellCount("head") - 1;
for (var i=iLoop; i>iCell; i--) {
iLastCol = this.getCellProperty("head", i, "col");
if (iLastCol == iCol) {
iLastCell = i;
break;
}
}
return iLastCell;
}
/*------------------------------------------------------------------------------
* 기 능: 컬럼 단일 정렬 메뉴 선택시
* 인 수: 1.pColNm : Column ID
* 2.pType :
* Return : N/A
------------------------------------------------------------------------------*/
function fn_setKeystring(iCol, iSortStep) {
//xfn_trace("grd_basic.fn_setKeystring iCol=" + iCol + " iSortStep=" + iSortStep);
if (iCol < 0) { return; }
if ((iSortStep < 0) || (iSortStep > 2)) { return; }
var sBind= this.getCellProperty("body", iCol, "text");
if ((sBind != null) && (sBind != ""))
{
var arrBind = sBind.split(":");
if (arrBind.length > 1)
{
sBind = arrBind[1];
}
}
else
{
sBind = "";
}
var sKeystring = "";
if (this.defaultSort <> "")
{
sKeystring += this.defaultSort;
}
if (sBind <> "")
{
if (iSortStep == 0)
{ // asc
sKeystring += "+" + sBind;
}
else if (iSortStep == 1)
{ // desc
sKeystring += "-" + sBind;
}
}
if (sKeystring <> "")
{
sKeystring = "S:" + sKeystring;
}
///////////////////////////////////////////////////////////////////////////
// 칼럼의 Min/Max value를 비교해서 동일한 값이면 Sorting처리 안함.
var sMinValue = objBindDs.getMin(sBind);
var sMaxValue = objBindDs.getMax(sBind);
// 칼럼의 데이타가 다르면 소팅처리
if(sMinValue != sMaxValue)
{
objBindDs.keystring = sKeystring;
}
//////////////////////////////////////////////////////////////////////////
}
/*------------------------------------------------------------------------------
* 기 능: dataset 변경 여부 체크
* 인 수: 1.obj : Dataset
* 2.e : value change event
* Return : N/A
------------------------------------------------------------------------------*/
function fn_setRowStatusCheckd(obj:Dataset, e:DSColChangeEventInfo) {
//////////////////////////////////////////////////////////////////////////////////////
var bUpdateFlag=false;
for(var i=0; i< obj.getColCount(); i++)
{
if((obj.getColumn(e.row,i) != obj.getOrgColumn(e.row,i)) && (obj.getColumnInfo(i).name !="chk" && obj.getColumnInfo(i).name !="rowStatus"))
{
bUpdateFlag=true;
}
}
if(bUpdateFlag) // Update 상태
{
obj.setColumn(e.row, "rowStatus", "U"); // Update
}
else
{
if(obj.getRowType(e.row) == 2) return; // Insert 상태
obj.setColumn(e.row, "rowStatus", "N"); // Normal
obj.setColumn(e.row, "chk", "0"); // Update
}
bUpdateFlag=false;
///////////////////////////////////////////////////////////////////////////////////
}
/*------------------------------------------------------------------------------
* 기 능: 그리드 RowStatus 칼럼 동적으로 생성
* 인 수: N/A
* Return : N/A
------------------------------------------------------------------------------*/
function grd_setRowStatusContents(iIndex)
{
if(sGrdFullPath.length==0) sGrdFullPath="grd_main";
/////////////////////////////////////////////////////////////////////////////////////
//RowStatus 칼럼 동적 생성.
this.insertContentsCol(iIndex);
this.setCellProperty("Head",iIndex,"text", "");
this.setCellProperty("Body",iIndex,"displaytype","normal");
this.setCellProperty("body",iIndex,"style"
, 'background:EXPR('+sGrdFullPath+'.fn_getColor(_rowStatus,&apos;#ffffffff&apos;));'
+ 'background2:EXPR('+sGrdFullPath+'.fn_getColor(_rowStatus,&apos;#ffffffff&apos;));'
+ 'color:EXPR('+sGrdFullPath+'.fn_getColor(_rowStatus,&apos;#ffffffff&apos;));'
+ 'backgroundimage:EXPR('+sGrdFullPath+'.fn_getRowTypeImg(rowStatus));'
+ 'align:center');
this.setFormatColProperty(iIndex,"size",20);
}
/*------------------------------------------------------------------------------
* 기 능: 그리드 Chk 칼럼 동적으로 생성
* 인 수: N/A
* Return : N/A
------------------------------------------------------------------------------*/
function grd_setChkContents(iIndex)
{
if(sGrdFullPath.length==0) sGrdFullPath="grd_main";
//checkbox 칼럼 동적 생성.
this.insertContentsCol(iIndex);
this.setCellProperty("Head",iIndex,"displaytype", "checkbox");
this.setCellProperty("Head",iIndex,"edittype", "checkbox");
this.setCellProperty("Body",iIndex,"text","bind:chk");
this.setCellProperty("Body",iIndex,"displaytype","expr:"+sGrdFullPath+".fn_getPropertyType(rowStatus,&apos;checkbox&apos;)");
this.setCellProperty("Body",iIndex,"edittype","expr:"+sGrdFullPath+".fn_getPropertyType(rowStatus,&apos;checkbox&apos;)");
this.setCellProperty("body",iIndex,"style"
, 'background:EXPR('+sGrdFullPath+'.fn_getColor(rowStatus,&apos;#ffffffff&apos;));'
+ 'background2:EXPR('+sGrdFullPath+'.fn_getColor(rowStatus,&apos;#ffffffff&apos;));'
+ 'color:EXPR('+sGrdFullPath+'.fn_getColor(rowStatus,&apos;#ffffffff&apos;));'
+ 'align:center');
this.setFormatColProperty(iIndex,"size",20);
/////////////////////////////////////////////////////////////////////////////////////
}
/*------------------------------------------------------------------------------
* 기 능: Properties 속성을 expression처리.( rowStatus 삭제인 경우 edittype none으로 설정)
* 인 수: sRowType - 현재로의 상태값,
* sEditType - Default Edit 값
* Return : N/A
------------------------------------------------------------------------------*/
function fn_getPropertyType(sRowType,sDefaultType)
{
var strRtn = "";
switch (sRowType)
{
case 'D' :
strRtn = "none";
break;
default :
strRtn = sDefaultType;
break;
}
return strRtn;
}
/*------------------------------------------------------------------------------
* 기 능: rowStatus 타입 기준으로 rowStatus 칼럼에 출력할 이미지 리턴
* 인 수: sRowType - 현재로의 상태값
* Return : N/A
------------------------------------------------------------------------------*/
function fn_getRowTypeImg(sRowType)
{
var strRtn = "";
switch (sRowType)
{
case 'C' :
strRtn = "URL('theme://Images/icon_grid_insert.png')";
break;
case 'U' :
strRtn = "URL('theme://Images/icon_grid_update.png')";
break;
case 'D' :
strRtn = "URL('theme://Images/icon_grid_delete.png')";
break;
}
return strRtn;
}
/*------------------------------------------------------------------------------
* 기 능: rowStatus기준으로 BackgroundColor1,2, SelectedColor 값 리턴
* 인 수: sRowType - 현재로의 상태값
sColor - Default 컬러값
* Return : N/A
------------------------------------------------------------------------------*/
function fn_getColor(sRowType,sColor)
{
var strRtn = "";
if(sColor.length == 0) sColor="#ffffffff";
switch (sRowType)
{
case 'D' :
strRtn = "#eeeeeeff";
break;
default :
strRtn = sColor;
break;
}
return strRtn;
}
/*------------------------------------------------------------------------------
* 기 능: 값이 null, undefined 이거나
white space 문자로만 이루어진 String일 경우 true를 리턴한다
* 인 수: vaValue
* Return : Boolean
------------------------------------------------------------------------------*/
function fn_isNull(){
if(arguments[0] == null)
{
return true;
}
else if (typeof arguments[0] === "undefined")
{
return true;
}
else if (typeof arguments[0] === "string")
{
if(arguments[0].trim().length == 0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
/*------------------------------------------------------------------------------
* 기 능: xfn_trace 일괄 제어하기 위해
* 인 수: 1.text : xfn_trace 내용
* Return :
------------------------------------------------------------------------------*/
var flag = true;
function xfn_trace(text)
{
if( flag ) trace(text);
}
//-------------------------------------grd_basic end --------------------------------------------//
} // class
]]></Script>

View File

@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="workArea" classname="WORK" inheritanceid="" position="absolute 0 0 805 580" scrollbars="none" oninit="workArea_oninit" onclose="workArea_onclose" onsize="workArea_onsize">
<Layouts>
<Layout>
<Static id="st_Navi" usedecorate="true" position="absolute 41 6 482 25" style="background:transparent;align:left middle;"/>
<Div id="div_Work" taborder="1" position="absolute 20 30 785 570" style="background:#ffffffff;"/>
<Static id="st_Navi2" text="네비게이션2" class="static_workTitle" visible="false" position="absolute 437 9 800 24" anchor="top right" style="background:left middle; color:#939393ff; padding:0 0 0 0; align:right middle; font:Malgun Gothic,8, antialias; "/>
<Button id="btn_copyMenu" taborder="1" onclick="btn_copyMenu_onclick" visible="false" position="absolute 761 0 806 6" anchor="top right" style="hideeffect:tranAniShow; "/>
<Button id="btn_changeMenu" taborder="1" onclick="btn_changeMenu_onclick" visible="false" position="absolute 708 0 753 6" anchor="top right" style="hideeffect:tranAniShow; " bPopup="0"/>
<Static id="stc_bulet" position="absolute 19 5 38 23" style="background:transparent URL('img::alert_information.png') stretch;"/>
</Layout>
</Layouts>
<Script type="xscript4.0"><![CDATA[/*
* 01. 업무구분 : Frame 공통
* 02. 화면명 : workFrame.xfdl
* 03. 화면설명 :
* 04. 작성일 : 2012-08-22
* 05. 작성자 : sian
* 06. 수정이력 :
*********************************************************************
* 수정일 이 름 사유
*********************************************************************
* 2012-08-22 sian 최초 작성
*********************************************************************
*/
include "lib::commLib.xjs"; //공통함수 호출
var pv_winKey; //업무화면 Key코드
var pv_menuId; //메뉴 ID
var pv_programId; //프로그램 ID
var pv_menuUrl; //업무화면 Url
var pv_menuTitle; //업무화면 Title
var pv_menuTitle2; //업무화면 Title2
var pv_helpUrl; //도움말 URL
var pv_args;
var fv_datalog_yn; //데이터Log를 저장할지 여부
function workArea_oninit(obj:Form, e:InitEventInfo)
{
pv_winKey = getOwnerFrame().arguments["winKey"];
pv_menuId = getOwnerFrame().arguments["menuId"];
pv_menuUrl = getOwnerFrame().arguments["menuUrl"];
pv_menuTitle = getOwnerFrame().arguments["menuTitle"];
pv_menuTitle2 = getOwnerFrame().arguments["menuTitle2"];
pv_programId = getOwnerFrame().arguments["programId"];
pv_helpUrl = getOwnerFrame().arguments["helpUrl"];
pv_args = getOwnerFrame().arguments["args"];
pv_menuMultiYn = getOwnerFrame().arguments["menuMultiYn"];
fv_datalog_yn = getOwnerFrame().arguments["pInfoflag"]; //ncPInfoFlag
//"ncTrId=" + trID + " ncPInfoFlag=" + fv_datalog_yn
this.titletext = pv_menuTitle;
btn_changeMenu.winKey = pv_winKey;
this.st_Navi.text = pv_menuTitle;
this.st_Navi2.text = pv_menuTitle2.substr(1) + " ["+pv_programId+"]";
var objFont = gfn_getObjFont(10,"Dotum");
var objTextSize = gfn_GetTextSize(this.st_Navi.text, objFont);
if(objTextSize==false)return nLeft;
this.st_Navi.position.width = objTextSize.cx+25;
var pv_loadUrl = pv_menuUrl.indexOf("xfdl?") > 0 ? pv_menuUrl.substr(0, pv_menuUrl.indexOf("xfdl?") + 4) : pv_menuUrl;
this.div_Work.url = pv_loadUrl;
this.div_Work.programId = pv_menuId;
}
function frm_child_oninit(obj:Form)
{
var oFrame = obj.getOwnerFrame();
if(oFrame.arguments) {
pv_menuId = oFrame.arguments["menuId"];
}
obj.onclose.addHandler(frm_child_onclose);
}
function workArea_onactivate(obj:Form, e:ActivateEventInfo)
{
mainframe.titletext = (pv_menuTitle == null || pv_menuTitle == undefined || pv_menuTitle == "" ? "" : " [ " +pv_menuTitle +" ]" );
if(gfn_IsNull(pv_winKey) == true) return;
gfn_ActiveForm(pv_winKey);
}
function workArea_onsize(obj:Form, e:SizeEventInfo)
{
if(e.cx < 600 || e.cy < 450) return;
f_setResize(obj, e.cx, e.cy);
}
function f_setResize(obj, nCx, nCy)
{
div_Work.position.height = nCy - 50;
div_Work.position.width = nCx - 40;
}
function workArea_onclose(obj:Form, e:CloseEventInfo)
{
if(gfn_IsNull(pv_winKey) == true) return;
gfn_FrameOnClose(pv_winKey);
}
function f_close()
{
if(gfn_IsNull(div_Work.url) == true) close();
div_Work.url = "";
if(gfn_IsNull(div_Work.url) == true) close();
}
function frm_child_onclose(obj:Form, e:CloseEventInfo)
{
if(obj != div_Work) return;
close();
}]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,262 @@
<?xml version="1.0" encoding="utf-8"?>
<GlobalVariables>
<Dataset id="gds_Menu" keystring="S:MENU_CD+MENU_NM">
<ColumnInfo>
<Column id="MENU_CD" type="STRING" size="8"/>
<Column id="UP_MENU_CD" type="STRING" size="8"/>
<Column id="MENU_NM" type="STRING" size="50"/>
<Column id="MENU_LVL" type="BIGDECIMAL" size="22"/>
<Column id="PGM_PATH" type="STRING" size="200"/>
<Column id="PGM_ID" type="STRING" size="200"/>
<Column id="SORT" type="BIGDECIMAL" size="22"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="MENU_CD">01000000</Col>
<Col id="UP_MENU_CD">0</Col>
<Col id="MENU_NM">CRUD 개발화면</Col>
<Col id="MENU_LVL">1</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">01010000</Col>
<Col id="UP_MENU_CD">01000000</Col>
<Col id="MENU_NM">그리드 CRUD</Col>
<Col id="MENU_LVL">2</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">01010101</Col>
<Col id="UP_MENU_CD">01010100</Col>
<Col id="MENU_NM">그리드 CRUD</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">template</Col>
<Col id="PGM_ID">crudStandard.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">02000000</Col>
<Col id="MENU_NM">컴포넌트 가이드</Col>
<Col id="MENU_LVL">1</Col>
<Col id="SORT">2</Col>
<Col id="UP_MENU_CD">0</Col>
</Row>
<Row>
<Col id="MENU_CD">02010000</Col>
<Col id="MENU_NM">타입</Col>
<Col id="UP_MENU_CD">02000000</Col>
<Col id="MENU_LVL">2</Col>
</Row>
<Row>
<Col id="MENU_CD">02010100</Col>
<Col id="MENU_NM">Class</Col>
<Col id="UP_MENU_CD">02010000</Col>
<Col id="MENU_LVL">3</Col>
</Row>
<Row>
<Col id="MENU_CD">02010101</Col>
<Col id="UP_MENU_CD">02010100</Col>
<Col id="MENU_NM">Edit</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="SORT">1</Col>
<Col id="PGM_ID">CLASS_GUIDE_01.xfdl</Col>
</Row>
<Row>
<Col id="MENU_CD">02010102</Col>
<Col id="UP_MENU_CD">02010100</Col>
<Col id="MENU_NM">Static</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">CLASS_GUIDE_02.xfdl</Col>
<Col id="SORT">2</Col>
</Row>
<Row>
<Col id="MENU_CD">02010200</Col>
<Col id="UP_MENU_CD">02010000</Col>
<Col id="MENU_NM">Component</Col>
<Col id="MENU_LVL">3</Col>
<Col id="PGM_PATH">[Undefined]</Col>
<Col id="PGM_ID">[Undefined]</Col>
<Col id="SORT">[Undefined]</Col>
</Row>
<Row>
<Col id="MENU_CD">02010201</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Static</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_01.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">02010202</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Button</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_02.xfdl</Col>
<Col id="SORT">2</Col>
</Row>
<Row>
<Col id="MENU_CD">02010203</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Calendar</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_03.xfdl</Col>
<Col id="SORT">3</Col>
</Row>
<Row>
<Col id="MENU_CD">02010204</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Shape</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_04.xfdl</Col>
<Col id="SORT">4</Col>
</Row>
<Row>
<Col id="MENU_CD">02010205</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Popup</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_05.xfdl</Col>
<Col id="SORT">5</Col>
</Row>
<Row>
<Col id="MENU_CD">02010206</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Alert</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_06.xfdl</Col>
<Col id="SORT">6</Col>
</Row>
<Row>
<Col id="MENU_CD">02010207</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Grid1</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_07.xfdl</Col>
<Col id="SORT">7</Col>
</Row>
<Row>
<Col id="MENU_CD">02010208</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Grid2</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_08.xfdl</Col>
<Col id="SORT">8</Col>
</Row>
<Row>
<Col id="MENU_CD">02010209</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Tab1</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_09.xfdl</Col>
<Col id="SORT">9</Col>
</Row>
<Row>
<Col id="MENU_CD">02010210</Col>
<Col id="UP_MENU_CD">02010200</Col>
<Col id="MENU_NM">Tab2</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">compguide</Col>
<Col id="PGM_ID">COMP_GUIDE_10.xfdl</Col>
<Col id="SORT">10</Col>
</Row>
<Row>
<Col id="MENU_CD">03000000</Col>
<Col id="UP_MENU_CD">0</Col>
<Col id="MENU_NM">화면유형 가이드 </Col>
<Col id="MENU_LVL">1</Col>
<Col id="SORT">3</Col>
</Row>
<Row>
<Col id="UP_MENU_CD">03000000</Col>
<Col id="MENU_CD">03010000</Col>
<Col id="MENU_NM">화면유형</Col>
<Col id="MENU_LVL">2</Col>
</Row>
<Row>
<Col id="UP_MENU_CD">03010000</Col>
<Col id="MENU_CD">03010101</Col>
<Col id="MENU_NM">패턴1</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">work</Col>
<Col id="PGM_ID">Pattern_01.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">03010102</Col>
<Col id="UP_MENU_CD">03010000</Col>
<Col id="MENU_NM">패턴2</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">work</Col>
<Col id="PGM_ID">Pattern_02.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">03010103</Col>
<Col id="UP_MENU_CD">03010000</Col>
<Col id="MENU_NM">패턴3</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">work</Col>
<Col id="PGM_ID">Pattern_03.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">03010104</Col>
<Col id="UP_MENU_CD">03010000</Col>
<Col id="MENU_NM">패턴4</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">work</Col>
<Col id="PGM_ID">Pattern_04.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">03010105</Col>
<Col id="UP_MENU_CD">03010000</Col>
<Col id="MENU_NM">패턴5</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">work</Col>
<Col id="PGM_ID">Pattern_05.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">03010106</Col>
<Col id="UP_MENU_CD">03010000</Col>
<Col id="MENU_NM">패턴6</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">work</Col>
<Col id="PGM_ID">Pattern_06.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
<Row>
<Col id="MENU_CD">03010107</Col>
<Col id="UP_MENU_CD">03010000</Col>
<Col id="MENU_NM">패턴7</Col>
<Col id="MENU_LVL">4</Col>
<Col id="PGM_PATH">work</Col>
<Col id="PGM_ID">Pattern_07.xfdl</Col>
<Col id="SORT">1</Col>
</Row>
</Rows>
</Dataset>
<Variable id="gv_userId" initval="sian"/>
<PropertyAnimation id="gPropAni"/>
<Dataset id="gds_OpenMenu">
<ColumnInfo>
<Column id="MENU_CD" type="STRING" size="256"/>
<Column id="MENU_NM" type="STRING" size="256"/>
<Column id="WINID" type="STRING" size="256"/>
</ColumnInfo>
</Dataset>
<Variable id="gv_menuType" initval="1" usecookie="false"/>
<Variable id="gv_openCnt" initval="15"/>
</GlobalVariables>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,134 @@
<HTML>
<HEAD>
<TITLE>XPlatform Launch Page</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<SCRIPT type="text/javascript" src="./install/checkBrowser.js" ></SCRIPT>
<script language="javascript">
var Server_Path = window.location.href;
Server_Path = Server_Path.substring(0, Server_Path.lastIndexOf("/")) + "/";
//v_xadl : 알맞은 xadl값을 설정하십시오. (url로 입력)
//현재 연결된 프로젝트는 url로 설정시 오류가 있어 로컬경로로 설정함
var v_xadl = Server_Path + "DefaultTheme.xadl";
function fn_start()
{
if ( checkBrowser.browser == "Explorer")
{
/** Launcher 설치 여부 확인 **/
//alert("launch=>"+Check_installed("XLauncher.Cy_XLauncher")); //XLauncher.Cy_XLauncher : Launcher
/** Engine 설치 여부 확인 **/
//alert("Engine=>"+Check_installed("XPlatformAX.XPlatformAXCtrl91")); //XPlatformAX.XPlatformAXCtrl91 : Engine
/** Launcher Engine 설치 여부 확인후 설치를 유도함 **/
if(!Check_installed("XLauncher.Cy_XLauncher") || !Check_installed("XPlatformAX.XPlatformAXCtrl91")){
err_msg.innerHTML += "<br><br><font size=\"2\">이 웹사이트를 사용하기 위해 추가기능을 <u>상단 메시지를 클릭하여</u> 설치해주십시오.</font>";
return;
}
/** IE 구동방법 분기 launch or Embed **/
//if(confirm("webBrowser로 실행하시겠습니까?")){
// location.href = "./body.html";
// return;
//}else{
XLauncher.key = "EgovXPLATFORM";
XLauncher.xadl = v_xadl;
XLauncher.onlyone = false;
XLauncher.makeshortcut("EgovXPLATFORM",Server_Path + "a.ico", "desktop"); //바로가기 아이콘 생성
XLauncher.launch();
window.open('about:blank','_self').close(); //browser close
//}
}else{
/********************************************************************************************************
알림 : 현재는 비IE 계열 브라우져에서 Engine 설치여부를 확인하기 어렵고, 플러그인 설치여부만 확인가능하다.
따라서 엔진설치후에 플러그인을 설치하도록 유도하여 설치를 진행하도록 한다.
*********************************************************************************************************/
/** 비ie Plugin설치여부 확인 **/
if(checkInstaller() == false)
{
err_msg.innerHTML += '<br><br><font size=\"2\">이 웹사이트를 사용하기 위해 하단의 추가기능을 다운받으셔서 <u>순서되로</u> 설치해주십시오.'+
'<br><br><b><a href="'+Server_Path+'install/download/XPLATFORM9.2_SetupEngine.exe"><font class="f2" color="red">1. 엔진설치</a>' +
'&nbsp;&nbsp;&nbsp;&nbsp;<a href="'+Server_Path+'install/download/XPLATFORM9.2_SetupPlugin.exe"><font class="f2" color="red">2. 플러그인 설치</a>' +
'<br><br>설치하신후 본 창을 닫고 다시 브라우져를 열어 접속해주십시오.</font></b>';
return;
}
/** 비ie 구동방법 분기 launch or Embed **/
if(confirm("webBrowser로 실행하시겠습니까?")){
location.href = "./body.html";
return;
}else{
method_launch();
}
}
}
/** IE XPlatform9 설치확인 Fucntion **/
function Check_installed(installedObj)
{
try{
var xObj = new ActiveXObject(installedObj); //해당 prog id
if(xObj) Installed = true;
else Installed = false;
}
catch(ex){
Installed = false;
}
return Installed;
}
/** 비IE Plug-in (Launcher) Engine 설치확인 **/
function checkInstaller()
{
for ( var i = 0 ; i < navigator.plugins.length;i++)
{
//alert(navigator.plugins[i].name);
if (navigator.plugins[i].name.indexOf("XPLATFORM") != -1 ) return true; //Plugin name : XPLATFORM
}
return false;
}
/** 바로가기 아이콘 생성 **/
function method_makeshortcut()
{
//XLauncher.key = "EgovXPLATFORM";
//XLauncher.xadl = v_xadl;
//XLauncher.makeshortcut("EgovXPLATFORM", Server_Path + "a.ico", "desktop", true);
}
/** 비IE Launch **/
function method_launch()
{
//key
XLauncher2.key = "EgovXPLATFORM";
XLauncher2.xadl = v_xadl;
XLauncher2.onlyone = false;
XLauncher2.launch();
}
/** 비IE Launch onError Event**/
function XLauncher_onerror(code, msg)
{
alert("code:"+code+", msg:"+msg);
}
</script>
</HEAD>
<BODY border="0" cellpadding="0" cellspacing="0" onload="fn_start()">
<script language="javascript">
/** 1. launcher 설치 및 선언(IE이며 cab으로 설치, 비IE는 선언까지만 설치는 exe로 진행) **/
document.write("<table width=\"100%\" height=\"100%\" border=\"0\"><tr><td align=\"center\" id=\"err_msg\"><img src=\"./xplatform.jpg\"></td></tr><tr><td></td></tr></table> ");
document.write("<OBJECT ID=\"XLauncher\" CLASSID=\"CLSID:A30D5481-7381-4dd9-B0F4-0D1D37449E97\" width=\"0\" height=\"0\" codebase=\"./install/download/XPLATFORM9.2_XPLauncher.cab#VERSION=2012,8,21,1\" SHOWASTEXT> ");
//document.write(" <PARAM NAME=\"key\" VALUE=\"EgovXPLATFORM\"> ");
//document.write(" <PARAM NAME=\"xadl\" VALUE=\""+v_xadl+"\"> ");
//document.write(" <PARAM NAME=\"onlyone\" VALUE=\"false\"> ");
document.write("</OBJECT>");
document.write(" <embed id=\"XLauncher2\" hidden=\"true\" type=\"application/XLauncher9.2-PlugIn\" error=\"XLauncher_onerror\" width=\"0\" height=\"0\" ><embed/>" );
/** 2. Engine 설치(IE) 및 선언(IE) **/
document.write("<OBJECT ID=\"XPlatformAXCtrl\" CLASSID=\"CLSID:43C5FE00-DD32-4792-83DB-19AE4F88F2A6\" " );
document.write(" CodeBase=\"./install/download/XPLATFORM9.2_SetupEngine.cab#VERSION=2012,8,21,1\" ");
document.write(" width=\"0\" height=\"0\" SHOWASTEXT> " );
document.write("</OBJECT>" );
</script>
</BODY>
</HTML>

View File

@@ -0,0 +1,105 @@
var checkBrowser = {
init: function () {
this.browser = this.searchStr(this.browserList) || "An unknown browser";
this.version = this.searchVer(navigator.userAgent)
|| this.searchVer(navigator.appVersion)
|| "an unknown version";
this.OS = this.searchStr(this.osList) || "an unknown OS";
},
searchStr: function (objList) {
for (var i=0;i<objList.length;i++) {
var dataStr = objList[i].string;
var dataProp = objList[i].prop;
this.versionStr = objList[i].versionSearch || objList[i].identity;
if (dataStr) {
if (dataStr.indexOf(objList[i].subString) != -1)
return objList[i].identity;
}
else if (dataProp)
return objList[i].identity;
}
},
searchVer: function (str) {
var idx = str.indexOf(this.versionStr);
if (idx == -1) return;
return parseFloat(str.substring(idx+this.versionStr.length+1));
},
browserList: [
{ String: navigator.userAgent,
subString: "OmniWeb",
versionSearch: "OmniWeb/",
identity: "OmniWeb"
},
{
string: navigator.vendor,
subString: "Apple",
identity: "Safari"
},
{
prop: window.opera,
identity: "Opera"
},
{
string: navigator.vendor,
subString: "iCab",
identity: "iCab"
},
{
string: navigator.vendor,
subString: "KDE",
identity: "Konqueror"
},
{
string: navigator.userAgent,
subString: "Firefox",
identity: "Firefox"
},
{
string: navigator.vendor,
subString: "Camino",
identity: "Camino"
},
{ // for newer Netscapes (6+)
string: navigator.userAgent,
subString: "Netscape",
identity: "Netscape"
},
{
string: navigator.userAgent,
subString: "MSIE",
identity: "Explorer",
versionSearch: "MSIE"
},
{
string: navigator.userAgent,
subString: "Gecko",
identity: "Mozilla",
versionSearch: "rv"
},
{ // for older Netscapes (4-)
string: navigator.userAgent,
subString: "Mozilla",
identity: "Netscape",
versionSearch: "Mozilla"
}
],
osList : [
{
string: navigator.platform,
subString: "Win",
identity: "Windows"
},
{
string: navigator.platform,
subString: "Mac",
identity: "Mac"
},
{
string: navigator.platform,
subString: "Linux",
identity: "Linux"
}
]
};
checkBrowser.init();

View File

@@ -0,0 +1,76 @@
var p1;
function fn_load_crom()
{
p1 = document.getElementById("plugin1");
p1.xadl = v_xadl; //xadl
//p1.autosize = true; //autosize
p1.autosize = false;
p1.commthreadcount = 30; //commthreadcount
p1.commthreadwaittime = 1000; //commthreadwaittime
p1.key = "EgovXPLATFORM";
p1.run();
//alert(p1.getvariablevalue("VarUserID"));
}
function Callscript_Test()
{
//alert(p1.callscript("TestCallScript('abc')"));
}
function p1_onload(url)
{
//alert("p1.onload\n-" + url);
}
/***************************************
P l u g i n E v e n t
***************************************/
function my_loadtypedefinition(strurl)
{
//alert("loadtypedefinition : "+strurl);
}
function my_load()
{
//alert("load completed !!");
}
function my_loadingglobalvariables(strurl)
{
//alert("loadingglobalvariables : "+strurl);
}
function my_beforeexit(bCloseFlag, bHandledFlag)
{
//alert("beforeexit : " + bCloseFlag + bHandledFlag);
}
function my_exit()
{
//alert("À̺¥Æ® exit-");
}
function my_communication(bStart)
{
// alert("communication:"+bStart);
}
function my_usernotify(nNotifyID, strMsg)
{
//alert("nNotifyID:"+nNotifyID +" strMsg:"+strMsg);
}
function my_error(nError, strErrMsg)
{
//alert("err:"+strErrMsg);
}
function my_addlog(strMsg)
{
//alert("strMsg:"+strMsg);
}
/***************************************
P l u g i n E v e n t (End)
***************************************/

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<Script type="xscript4.0"><![CDATA[]]></Script>

View File

@@ -0,0 +1,430 @@
<?xml version="1.0" encoding="utf-8"?>
<Script type="xscript4.0"><![CDATA[/*
*====================================================File description===================================================================
* File Name : commFrame.xjs
* Comment : UI Frame 관련 함수의 집합.
* Create Date : 2012/08/22
* Author :
* Change History :
*=======================================================================================================================================
- fn_IsNull : NULL 여부 체크.
*/
/*****************************************************************************************
* 함 수 명 : gfn_ChkOpenMenu
* 입 력 : menuid: 메뉴 아이디
* 반 환 :
* 기 능 : 메뉴 아이디를 기준으로 신규 윈도우 화면을 생성하고 open 시킴
*****************************************************************************************/
function gfn_ChkOpenMenu(menuid,objDs) {
var nRow = objDs.findRow("MENU_CD", menuid);
if (gfn_IsNull(menuid) == true)
{
trace("Menu가 존재하지 않습니다.");
return;
}
if(gfn_IsNull(objDs.getColumn(nRow, "PGM_PATH"))==true)
{
return;
}
var winKey = gds_OpenMenu.lookup("MENU_CD", menuid, "WINID");
if(gfn_IsNull(winKey) == false)
{
if(gfn_ActiveFrame(winKey) == true)
{
gv_tabFrame.form.fn_movePage(winKey);
gv_tabFrame.form.fn_activeTabpage(winKey);
return;
}
}
if(parseInt(gds_OpenMenu.rowcount) > 14)
{
gfn_MsgAlert("메뉴는 15개이상 오픈할 수 없습니다.");
return;
}
if(gfn_IsNull(objDs.getColumn(nRow, "MENU_CD")) == true) return;
winKey = menuid + "_" + gds_OpenMenu.getRowCount()+ "_" + parseInt(Math.random() * 100);
var objNewWin = new ChildFrame;
objNewWin.init(winKey, 0, 0, gv_initWidth, gv_initHeight);
objNewWin.formurl = "frame::workFrame.xfdl";
objNewWin.arguments = [];
var tmpNewPgmId = objDs.getColumn(nRow, "PGM_ID");
if(objDs.getColumn(nRow, "PGM_ID").indexOf("xfdl?")>0)
{
var tmpPgmId = objDs.getColumn(nRow, "PGM_ID");
tmpNewPgmId = tmpPgmId.substr(0,tmpPgmId.indexOf("xfdl?") + 4);
var tmpNewParam = tmpPgmId.substr(tmpPgmId.indexOf("xfdl?") + 5);
objNewWin.arguments["args"] = tmpNewParam;
}
objNewWin.arguments["winKey"] = winKey;
objNewWin.arguments["menuId"] = objDs.getColumn(nRow, "MENU_CD");
objNewWin.arguments["menuUrl"] = objDs.getColumn(nRow, "PGM_PATH")+"::"+objDs.getColumn(nRow, "PGM_ID");
objNewWin.arguments["programId"] = tmpNewPgmId;
objNewWin.arguments["menuTitle"] = objDs.getColumn(nRow, "MENU_NM");
objNewWin.arguments["menuTitle2"] = "";
objNewWin.arguments["helpUrl"] = "";
objNewWin.arguments["pInfoflag"] = "";
objNewWin.openstatus = "maximize";
objNewWin.arguments["menuMultiYn"] = "";
gv_workFrame.addChild(winKey, objNewWin);
gfn_AddGblDSMenu(winKey, nRow, objDs);
objNewWin.dragmovetype = "all";
objNewWin.showtitlebar = false;
objNewWin.resizable = true;
objNewWin.show();
//20120611 좌측메뉴 클릭시
gv_tabFrame.form.fn_setNaviAdd(winKey, objDs.getColumn(nRow, "MENU_NM"));
gv_tabFrame.form.fn_activeTabpage(winKey);
gv_activeWinId = winKey;
}
/*****************************************************************************************
* 함 수 명 : gfn_ArrangeWin
* 입 력 : strType: 정렬 타입
* 반 환 :
* 기 능 : 열려있는 윈도우 화면을 정렬
*****************************************************************************************/
function gfn_ArrangeWin(strType) {
var strWinKey;
var strMenuNm;
var i;
// workFrame영역에 open된 childFrame 갯수
var iFramesCnt = gv_workFrame.frames.length;
//if (gds_OpenMenu.getRowCount() < 1) return;
if (iFramesCnt < 1) return;
if(strType == "maximize")
{
btn_cas.visible=true;
btn_max.visible=false;
for (i=0; i<iFramesCnt; i++)
{
gv_workFrame.frames[i].openstatus = "normal";
gv_workFrame.frames[i].showtitlebar = false;
gv_workFrame.frames[i].style.border = "0 solid #006666ff";
if(gv_workFrame.frames[i].openstatus!="maximize")
{
gv_workFrame.frames[i].openstatus = strType;
}
}
}
else if (strType == "closeAll")
{
for (var i=iFramesCnt-1; i>=0; i--) {
strWinKey = gds_OpenMenu.getColumn(i, "WINID");
gv_workFrame.frames[i].showtitlebar = true;
if(gfn_TabOnClose(strWinKey) == false) return;
}
gv_workFrame.arrange(strType);
// Arrange 버튼 상태처리
btn_closeAll.enable=false;
btn_cas.enable=false;
btn_max.enable=false;
}
else if (strType == "cascade" || strType == "horizontal")
{
btn_cas.visible=false;
btn_max.visible=true;
for (i=0; i<iFramesCnt; i++)
{
gv_workFrame.frames[i].showtitlebar = true;
gv_workFrame.frames[i].style.border = "1 solid #7f7f7bff";
gv_workFrame.frames[i].style.bordertype = "round 3 3";
gv_workFrame.frames[i].openstatus = "maximize";
}
gv_workFrame.arrange(strType);
}
else if (strType == "hidden")
{
for (i=0; i<iFramesCnt; i++)
{
gv_workFrame.frames[i].showtitlebar = true;
gv_workFrame.frames[i].style.border = "1 solid #7f7f7bff";
gv_workFrame.frames[i].style.bordertype = "round 3 3";
gv_workFrame.frames[i].openstatus = "minimize";
}
gv_workFrame.arrange(strType);
}
else
{
for (i=0; i<iFramesCnt; i++)
{
gv_workFrame.frames[i].showtitlebar = true;
gv_workFrame.frames[i].style.border = "1 solid #7f7f7bff";
gv_workFrame.frames[i].style.bordertype = "round 3 3";
gv_workFrame.frames[i].openstatus = "minimize";
}
gv_workFrame.arrange(strType);
}
}
/*****************************************************************************************
* 함 수 명 : gfn_AddGblDSMenu
* 입 력 : strID: 윈도우 생성키, 메뉴데이터셋에서의 row position
* 반 환 :
* 기 능 : 신규 생성된 윈도우 화면을 DsOpenwininfo 에 등록
*****************************************************************************************/
function gfn_AddGblDSMenu(strID, nRow, objDs) {
gds_Menu.filter("");
var curRow = gds_OpenMenu.addRow();
gds_OpenMenu.setColumn(curRow, "WINID", strID);
gds_OpenMenu.setColumn(curRow, "MENU_CD", objDs.getColumn(nRow, "MENU_CD"));
if(strID.indexOf("HOME01") != -1 )
{
gds_OpenMenu.setColumn(curRow, "MENU_NM", "HOME");
}
else
{
gds_OpenMenu.setColumn(curRow, "MENU_NM", objDs.getColumn(nRow, "MENU_NM"));
}
}
/*****************************************************************************************
* 함 수 명 : gfn_ActiveFrame
* 입 력 : winKey: 윈도우 생성 키
* 반 환 :
* 기 능 : 윈도우 키를 기준으로 열려있는 화면일 경우 focus, maximize 처리
*****************************************************************************************/
function gfn_ActiveFrame(winKey) {
var fs_main_info = gv_workFrame.frames;
if(fs_main_info[winKey])
{
fs_main_info[winKey].setFocus();
return true;
}
return false;
}
/*****************************************************************************************
* 함 수 명 : gfn_TabOnClose
* 입 력 : strID: 윈도우 생성키
* 반 환 : true/false 정상닫힘/닫힘취소
* 기 능 : 윈도우 타이틀 탭 닫힘 처리
*****************************************************************************************/
function gfn_TabOnClose(winKey)
{
gv_workFrame.frames[winKey].form.f_close();
}
/*****************************************************************************************
* 함 수 명 : gfn_ActiveForm
* 입 력 : winKey: 윈도우 생성 키
* 반 환 :
* 기 능 : 윈도우 키를 기준으로 Active된 화면의 타이틀 탭을 Active시킨다
*****************************************************************************************/
function gfn_ActiveForm(winKey) {
gv_activeWinId = winKey;
gv_TabFrame.form.fn_activeTabpage(winKey);
}
/*****************************************************************************************
* 함 수 명 : gfn_FrameOnClose
* 입 력 : winKey: 윈도우 생성키
* 반 환 :
* 기 능 : 윈도우 화면 닫힘 처리
*****************************************************************************************/
function gfn_FrameOnClose(winKey)
{
gv_tabFrame.form.fn_deleteTabpage(winKey);
gfn_DelGblDSMenu(winKey);
}
/*****************************************************************************************
* 함 수 명 : gfn_DelGblDSMenu
* 입 력 : strID: 윈도우 생성키
* 반 환 :
* 기 능 : 생성된 윈도우 화면을 DsOpenwininfo 에서 삭제
*****************************************************************************************/
function gfn_DelGblDSMenu(strID) {
var iRow = gds_OpenMenu.findRow("WINID", strID);
gds_OpenMenu.deleteRow(iRow);
//if(gds_OpenMenu.rowcount==0)gv_workFrame.frames["workArea"].openstatus = "maximize";
}
/*******************************************************************************
* 작성자 : AA
* 공통 Modal Dialog를 실행 한다.
* parameter
1.objForm : 호출하는 form (this로 넘기면 됨, 필수)
2. strId : Dialog ID
3. strURL : Form URL
4. nTop : Form TOP Position
5. nLeft : Form Left Position
6. nWidth : Form Width
7. nHeight: Form Height
8. bShowTitle : Form Title 을 표시 할지 여부
9. strAlign: Dialog 의 위치 - '-1' : 모니터의 중앙
- 'Bottom Left' : Click 된 마우스 위치의 좌측 하단 정렬
- 'Top Left' : Click 된 마우스 위치의 좌측 상단 정렬
- 'Bottom Right' : Click 된 마우스 위치의 우측 하단 정렬
- 'Top Right' : Click 된 마우스 위치의 우측 상단 정렬
- 'offset' : Click 된 마우스 위치에서 nTop,nLeft만큼 들여쓰기.
- 'absolute' : 입력된 좌표를 Screen 좌표로 인식.(손영기)
- '0' : 사용자 임의 정렬
10. strArgument: Dialog 로 전달될 Argument - {strMessage1:'E'}
11. isModeless: 10번째 true 면 Dialog 를 Modeless로 띄운다.
12. isLayered: 11번째 true 면 Dialog 를 Layered로 띄운다.
* return true/false - 적합 / 부적합
******************************************************************************/
function gfn_Dialog(objForm, strId, strURL, nTop, nLeft, nWidth, nHeight, bShowTitle, strAlign, strArgument, isModeless, isLayered, bAutoSize)
{
trace("Start gf_Dialog strURL == " + strURL);
var newChild = null;
var objParentFrame = objForm.getOwnerFrame();
var nRight = 0;
var nBottom = 0;
if (strAlign == "Bottom Left") {
nLeft = system.cursorx;
nBottom = system.cursory - 5;
nTop = nBottom - nHeight;
nRight = nLeft + nWidth;
}
else if (strAlign == "Top Left") {
nTop = system.cursory - 5;
nLeft = system.cursorx;
nBottom = nTop + nHeight;
nRight = nLeft + nWidth;
}
else if (strAlign == "Bottom Right") {
nRight = system.cursorx;
nBottom = system.cursory - 5;
nTop = nBottom - nHeight;
nLeft = nRight - nWidth;
}
else if (strAlign == "Top Right") {
nTop = system.cursory - 5;
nRight = system.cursorx;
nBottom = nTop + nHeight;
nLeft = nRight - nWidth;
}
else if (strAlign == "-1") {
var strScreenRes = system.getScreenResolution(1);
var nCenterX = new Number(strScreenRes.split(" ")[0]);
var nCenterY = new Number(strScreenRes.split(" ")[1]);
var nMarginX = 0;
var nMoniterIndex = system.getMonitorIndex(system.cursorx, system.cursory);
if (nMoniterIndex == 2) {
var strMarginRes = system.getScreenResolution(2);
nMarginX = new Number(strMarginRes.split(" ")[0]);
}
nTop = Math.round(mainframe.position.height / 2) - Math.round(nHeight / 2) + mainframe.position.top;
nLeft = Math.round(mainframe.position.width / 2) - Math.round(nWidth / 2) + mainframe.position.left;
nBottom = nTop + nHeight;
nRight = nLeft + nWidth;
}
else if (strAlign == "offset") {
nTop += system.cursory;
nLeft += system.cursorx;
nBottom = nTop + nHeight;
nRight = nLeft + nWidth;
}
else if (strAlign == "absolute")
{
nBottom = nTop + nHeight;
nRight = nLeft + nWidth;
}
else {
nTop += mainframe.position.top;
nLeft += mainframe.position.left;
nBottom = nTop + nHeight;
nRight = nLeft + nWidth;
}
// 화면 밖으로 벗어나는 Dialog 방지 - Sonyk
var nMonitor = system.getMonitorIndex((nLeft+nRight)/2,(nTop+nBottom)/2);
var rectScreen = system.getScreenRect(nMonitor);
if(nBottom > rectScreen.bottom)
{
nTop = rectScreen.bottom - (nBottom - nTop);
nBottom = rectScreen.bottom;
}
if(nTop < rectScreen.top)
{
nBottom = rectScreen.top + (nBottom - nTop);
nTop = rectScreen.top;
}
if(nRight > rectScreen.right)
{
nLeft = rectScreen.right - (nRight - nLeft);
nRight = rectScreen.right;
}
if(nLeft < rectScreen.left)
{
nRight = rectScreen.left + (nRight - nLeft);
nLeft = rectScreen.left;
}
// 여기까지 - Sonyk
newChild = new ChildFrame;
newChild.init(strId, nLeft, nTop, nRight, nBottom, strURL);
if (isLayered == true) {
//newChild.style.bordertype="round 10 10";
newChild.layered = true;
}
else {
newChild.layered = false;
}
newChild.style.border.width = "0";
newChild.showstatusbar = false;
if (bAutoSize == false) newChild.autosize = false;
else newChild.autosize = true;
if (!bShowTitle) newChild.showtitlebar = false;
if (isModeless == true)
{
return newChild.showModeless(objParentFrame, strArgument);
}
else
{
var rtn;
//if(gf_Dialog.arguments.length == 9)
rtn = newChild.showModal(objParentFrame, strArgument);
//else
// rtn = newChild.showModal(objParentFrame);
// this.removeChild(newChild.name);
// newChild.destroy();
// newChild = null;
trace("End gf_Dialog showModal strURL == " + strURL);
return rtn;
}
}
]]></Script>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<Script type="xscript4.0"><![CDATA[
/*********************************************************************************************
** function name : grdf_SetGridCheckAll()
** function description : 그리드 헤드 클릭시 전체체크
** argument : obj Grid Object
** objDS checkbox에 바인드데이터셋
strChkCol check column id
** e GridClickEventInfo;
** return Type :
** return description :
** 예 : 그리드 헤드 예) <Cell displaytype="checkbox" edittype="checkbox" text="expr:0"/> 로 해야함.
** 스크립트 예) grdf_SetGridCheckAll(obj,e);
*********************************************************************************************/
function fn_SetGridCheckAllDs(obj:Grid, objDS, strChkCol, e:GridClickEventInfo)
{
if(obj.readonly == true) return;
var strType;
var vl_chk;
var strVal;
var objDS;
var nCell = e.cell;
strType = obj.getCellProperty("head", e.cell, "displaytype");
if(strType != "checkbox") {
return;
}
// Head셋팅
strVal = obj.getCellProperty("head", nCell, "text");
if (gfn_IsNull(strVal)) strVal = "0";
if (strVal == "0") {
obj.setCellProperty("head", nCell, "text", '1');
vl_chk="1";
} else {
obj.setCellProperty("head", nCell, "text", '0');
vl_chk="0";
}
// Body셋팅
for(var i=0 ; i< objDS.rowcount ; i++){
objDS.setColumn(i, strChkCol, vl_chk);
}
}
function getExprCheck(nRow) {
return DsCheck.getColumn(nRow, "chk");
}
]]></Script>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Script type="xscript4.0"><![CDATA[include "lib::commTran.xjs";
include "lib::commFrame.xjs";
include "lib::commDataset.xjs";
include "lib::commGrid.xjs";
include "lib::commUtility.xjs";]]></Script>

View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<Script type="xscript4.0"><![CDATA[/*
*====================================================File description===================================================================
* File Name : commTran.xjs
* Comment : Transaction 관련 함수의 집합.
* Create Date : 2012/08/22
* Author :
* Change History :
*=======================================================================================================================================
- fn_IsNull : NULL 여부 체크.
*/
// function fnSetVoInfo(objFrm, strVoClass)
// {
// objFrm.ds_voInfo.clearData();
// var row = objFrm.ds_voInfo.addRow();
// objFrm.ds_voInfo.setColumn(row, "voClass", strVoClass);
// }
// function fnCmTr(objFrm, svcid, strController, strVoClass, inputDs, outputDs, params, callbackFnc)
// {
//
// fnSetVoInfo(objFrm, strVoClass);
//
// strParam = "egovframework.rte.sample.service.SampleVO";
// transaction(svcid,
// "svc::" + strController,
// "ds_voInfo=ds_voInfo " + inputDs,
// outputDs,
// params,
// "fnCallback");
// }
/**********************************************************************************
* 함수명 : utlf_TransNullToEmpty
* 설명 : NULL 일 경우 빈 값을 리턴한다.
* argument : sValue (문자열)
* return Type : String
**********************************************************************************/
function fn_TransNullToEmpty(sValue)
{
if( fn_IsNull(sValue) )
{
return "";
}
return sValue;
}
/******************************************************************************************
* 함 수 명 : gfn_transaction(strId, strModel,inDs,outDs,strParam,sCall,bSync,strDomain)
* 입 력 : strId - transaction을 구분하기 위한 ID
* strModel - XUP 모델명
* inDs - transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID 리스트
* outDs - transaction을 처리 결과를 받을 Dataset의 ID 리스트
* strParam - transaction을 요청할 때 입력값으로 보낼 변수
* sCall - transaction callback 함수
* bAsync - 비동기 여부(true: Sync, false : UnSync)
* strDomain - domain 지정
* 반 환 : 없음
* 기 능 : transaction함수
*****************************************************************************************/
function gfn_transaction(objFrm, svcid, strURL, inputDs, outputDs, params, callbackFnc)
{
// objFrm.dsTransInfo.clearData();
// var row = objFrm.dsTransInfo.addRow();
// dsTransInfo.setColumn(row,0, svcid);
// dsTransInfo.setColumn(row,1, strController);
// dsTransInfo.setColumn(row,2, inputDs);
// dsTransInfo.setColumn(row,3, outputDs);
// dsTransInfo.setColumn(row,4, params);
//
// transaction(svcid,
// "svc::" + strController,
// "__DS_TRANS_INFO__=dsTransInfo " + inputDs,
// outputDs,
// params,
// "fn_callBack");
objFrm.dsTransInfo.clearData();
var dsInputName = splitDsName(inputDs,0);
var dsOutputName = splitDsName(outputDs,1);
for (var i = 0; i < dsInputName.length ; i++ ){
var row = objFrm.dsTransInfo.addRow();
if (i == 0){ //svc id 와 url은 하나이다.
objFrm.dsTransInfo.setColumn(row,0, svcid);
objFrm.dsTransInfo.setColumn(row,1, strURL);
}
objFrm.dsTransInfo.setColumn(row,2, dsInputName[i]);
}
for (var i = 0; i < dsOutputName.length ; i++ ){
objFrm.dsTransInfo.setColumn(row,3, dsOutputName[i]);
}
trace(objFrm.dsTransInfo.saveXML());
trace("svcid : " + svcid);
trace("strURL : " + strURL);
trace("inputDs : " + inputDs);
trace("outputDs : " + outputDs);
trace("params : " + params);
transaction(svcid,
"svc::" + strURL,
"__DS_TRANS_INFO__=dsTransInfo " + inputDs,
outputDs,
params,
"fn_callBack");
}
function splitDsName(objString, type){
var strDsMapping; //mapping string
var objArr; //dataset name array
var objReturn = new Array();
strDsMapping = objString.split(" ");
for (var i = 0; i < strDsMapping.length ; i++ ){
objArr = strDsMapping[i].split("="); // objArr = a,cd
if (type == 0)
objReturn[i] = objArr[0];
else
objReturn[i] = objArr[1];
}
return objReturn;
}
/******************************************************************************************
* 함 수 명 : gfn_transactionOLAP(strId, strModel,inDs,outDs,strParam,sCall,bSync,strDomain)
* 입 력 : strId - transaction을 구분하기 위한 ID
* sBundle - 서비스 이름
* sData - 데이터소스 이름
* inDs - transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID 리스트
* outDs - transaction을 처리 결과를 받을 Dataset의 ID 리스트
* strParam - transaction을 요청할 때 입력값으로 보낼 변수
* sCall - transaction callback 함수
* bAsync - 비동기 여부(true: Sync, false : UnSync)
* strDomain - domain 지정
* 반 환 : 없음
* 기 능 : transaction함수
*****************************************************************************************/
function gfn_transactionOLAP(strId ,sBundle ,sData ,inDs ,outDs ,strParam ,sCall ,bAsync)
{
//기본 비동기통신
if(bAsync == null)
{
bAsync = "true";
}
var svcparam ="service=bundleUtil"
+ "&bundleid=bwinvoker"
+ "&domain=cf"
+ "&bundleCommand=" + sBundle
+ "&datasource=" + sData + "";
var svcurl = "svcUrl::bundleUtil?" + svcparam;
transaction(strId, svcurl, inDs, outDs, strParam, sCall, bAsync);
}
]]></Script>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Script type="xscript4.0"><![CDATA[/*
*====================================================File description===================================================================
* File Name : commonUtility.xjs
* Comment : Utility 관련 함수의 집합.
* Create Date : 2012/08/22
* Author :
* Change History :
*=======================================================================================================================================
- fn_IsNull : NULL 여부 체크.
- fn_getObjFont : 폰트 사이즈 리턴
- fn_GetTextSize : 텍스트 사이즈 리턴
*/
/**
* 기능 : NULL 여부 체크
* @param : sValue String
* @return : boolean
*/
function gfn_IsNull(sValue)
{
var v_ChkStr = new String(sValue);
if (new String(sValue).valueOf() == "undefined") return true;
if (sValue == null) return true;
if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined" ) ) return true;
if (v_ChkStr == null) return true;
if (v_ChkStr.toString().length == 0 ) return true;
return false;
}
/*****************************************************************************************
* 함 수 명 : fn_getObjFont
* 입 력 : iFontSize
sFontName
* 반 환 : Font Object
* 기 능 : Font Object 생성 반환
*****************************************************************************************/
function gfn_getObjFont(iFontSize, sFontName)
{
var objFont = new Font;
objFont.size = iFontSize;
objFont.name = sFontName;
objFont.bold = true;
return objFont;
}
function gfn_GetTextSize(sText, objFont, iLimitWidth, sConstWordWrapOption)
{
var objPainter = this.canvas.getPainter();
if(gfn_IsNull(objPainter)==false)
{
var objTextSize = objPainter.getTextSize(sText, objFont);
return objTextSize;
}
else
{
return false;
}
}]]></Script>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<license version="1.0">
<product>
<name>XPLATFORM</name>
<version>9</version>
<function>Runtime,&#32;Widget,&#32;AJAX</function>
</product>
<customer>
<name>TOBESOFT</name>
<developerCount>0</developerCount>
<rootDomain>0.0.0.0</rootDomain>
<targetPlatform>Windows,CE,Linux</targetPlatform>
</customer>
<date>
<activation>2012-09-01</activation>
<term unit="month">2</term>
</date>
<key>WV1TKSSKQFG7AU1XCW3TFUSPRVZ8HY191</key>
</license>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<license version="1.0">
<product>
<name>XPLATFORM</name>
<version>9</version>
<function>Runtime,&#32;Widget,&#32;AJAX</function>
</product>
<customer>
<name>(주)투비소프트</name>
<developerCount>0</developerCount>
<rootDomain>0.0.0.0</rootDomain>
<targetPlatform>Windows,CE,Linux</targetPlatform>
</customer>
<date>
<activation>2012-09-01</activation>
<term unit="month">2</term>
</date>
<key>MUS984XB273NV17CNC8HCYD54D95P91QE</key>
</license>

View File

@@ -0,0 +1,301 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="BoardList" classname="BoardList" inheritanceid="" position="absolute 0 0 765 540" titletext="New Form" onload="fn_onload">
<Layouts>
<Layout>
<Static id="sta_WF_SearchBox" class="sta_WF_SearchBox" position="absolute 0 0 765 40" anchor="left top right"/>
<Button id="btn_excel" taborder="2" text="Excel" position="absolute 788 3 844 29" onclick="fn_excelExport" visible="false"/>
<Button id="btn_new" taborder="3" text="신규등록" position="absolute 848 3 904 29" onclick="fn_new" visible="false"/>
<Button id="btn_add" taborder="1" text="Add" position="absolute 558 60 608 80" onclick="fn_add" class="btn_WF_crud" anchor="top right"/>
<Button id="btn_delete" taborder="1" text="Delete" onclick="fn_delete" position="absolute 610 60 660 80" class="btn_WF_crud" anchor="top right"/>
<Button id="btn_save" taborder="1" text="Save" position="absolute 662 60 712 80" onclick="fn_save" class="btn_WF_crud" anchor="top right"/>
<Button id="btn_search" taborder="1" text="Search" position="absolute 701 7 751 29" onclick="fn_search" class="btn_WFSA_Search" anchor="top right"/>
<Button id="btn_reset" taborder="1" text="Reset" position="absolute 714 60 764 80" class="btn_WF_crud" anchor="top right" onclick="fn_reset"/>
<Static id="sta_WF_TitleLev1" text="타이틀" class="sta_WF_TitleLev1" position="absolute 0 59 134 73"/>
<grd_basic id="grd_main" taborder="1" scrollpixel="all" autoenter="select" useinputpanel="false" selecttype="area" areaselecttype="overband" cellsizingtype="col" cellsizebandtype="allband" summarytype="top" objBizForm="" sGridNm="" sGrdFullPath="" objBindDs="" strSeparator="&#9;" bIsValidSort="false" iSortStep="-1" iLastCell="-1" iLastHeadCol="-1" iLastHeadRow="-1" sLastText="" validChkCol="" objectType="grd_basic" flag="true" position2="absolute l:0 r:0 t:84 b:0" positiontype="position2" binddataset="ds_list">
<Formats>
<Format id="default">
<Columns>
<Column size="100"/>
<Column size="100"/>
<Column size="100"/>
<Column size="100"/>
<Column size="100"/>
</Columns>
<Rows>
<Row size="24" band="head"/>
<Row size="24"/>
</Rows>
<Band id="head">
<Cell text="카테고리ID"/>
<Cell col="1" text="카테고리명"/>
<Cell col="2" text="사용여부"/>
<Cell col="3" text="Description"/>
<Cell col="4" text="등록자"/>
</Band>
<Band id="body">
<Cell edittype="normal" text="bind:id"/>
<Cell col="1" edittype="normal" text="bind:name"/>
<Cell col="2" displaytype="combo" edittype="combo" text="bind:useYn" combodataset="ds_combo" combocodecol="code" combodatacol="value"/>
<Cell col="3" edittype="normal" text="bind:description"/>
<Cell col="4" edittype="normal" text="bind:regUser"/>
</Band>
</Format>
</Formats>
</grd_basic>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_list" firefirstcount="0" firenextcount="0" useclientlayout="true" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep">
<ColumnInfo>
<Column id="chk" type="STRING" size="256"/>
<Column id="rowStatus" type="STRING" size="256"/>
<Column id="id" type="STRING" size="256"/>
<Column id="name" type="STRING" size="256"/>
<Column id="description" type="STRING" size="256"/>
<Column id="useYn" type="STRING" size="256"/>
<Column id="regUser" type="STRING" size="256"/>
</ColumnInfo>
</Dataset>
<Dataset id="ds_voInfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep">
<ColumnInfo>
<Column id="voClass" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row/>
</Rows>
</Dataset>
<Dataset id="ds_param" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep">
<ColumnInfo>
<Column id="id" type="STRING" size="256"/>
</ColumnInfo>
</Dataset>
<Dataset id="DsCheck" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="chk" type="INT" size="256"/>
</ColumnInfo>
</Dataset>
<Dataset id="dsTransInfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="strSvcID" type="STRING" size="256"/>
<Column id="strURL" type="STRING" size="256"/>
<Column id="strInDatasets" type="STRING" size="256"/>
<Column id="strOutDatasets" type="STRING" size="256"/>
</ColumnInfo>
</Dataset>
<Dataset id="ds_combo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="code" type="STRING" size="256"/>
<Column id="value" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="code">1</Col>
<Col id="value">Y</Col>
</Row>
<Row>
<Col id="code">2</Col>
<Col id="value">N</Col>
</Row>
</Rows>
</Dataset>
</Objects>
<Script type="xscript4.0"><![CDATA[/************************************************************************************************
* 01. 업무구분 : 샘플
* 02. 화면 : Sample
* 03. 화면 설명 : CRUD 테스트
* 04. 관련 화면/서비스 :
* 05. 관련테이블 :
* 06. 작성자 :
* 07. 작성일 : 2012.09.20
* 08. 수정이력 :
************************************************************************************************/
/************************************************************************************************
* 공통 라이브러리 INCLUDE 영역
************************************************************************************************/
include "lib::commLib.xjs";
/************************************************************************************************
* FORM 변수 선언 영역
************************************************************************************************/
/************************************************************************************************
* Form OnLoad
************************************************************************************************/
function fn_onload(obj:Form, e:LoadEventInfo)
{
fn_formInit();
}
/*------------------------------------------------------------------------------
* 기 능: form 초기화 함수
* 인 수: N/A
* Return : N/A
------------------------------------------------------------------------------*/
function fn_formInit()
{
// Grid Common 컴포넌트 초기화작업
grd_main.grd_onloadInitialization();
grd_main.init();
/////////////////////////////////////////////////////////////////////
//마스터 화면에서 Chk 칼럼, RowStatus 칼럼 동적으로 생성시 호출
grd_main.sGrdFullPath = "grd_main";
grd_main.grd_setChkContents(0);
//grd_main.grd_setRowStatusContents(1);
////////////////////////////////////////////////////////////////////
}
/****************************************************************************************
CRUD Button Event Area
****************************************************************************************/
// search(조회)
function fn_search(obj:Button, e:ClickEventInfo)
{
var strSvcid = "selectSvc";
// var strController = "egovSampleSelect.do";
var strController = "egovSampleSelect.do?id=50&firstIndex=0&recordCountPerPage=10&regUser=terry";
//var strVoClass = "egovframework.rte.sample.service.SampleVO";
var strInputDs = "";
var strOutputDs = "ds_list=ds_output";
// var strParam = "a=b";
var strParam = "firstIndex=5 recordCountPerPage=20 id=100 regUser=chang";
var strFnCallback = "fn_callBack";
// 트랜젝션 공통함수 호출
gfn_transaction(this,
strSvcid,
strController,
strInputDs,
strOutputDs,
strParam,
strFnCallback);
}
// 마지막row 추가(UI)
function fn_add(obj:Button, e:ClickEventInfo)
{
var nRow = ds_list.addRow();
fn_initInsertData(ds_list, nRow);
}
// 중간 삽입(UI)
function fn_insert(obj:Button, e:ClickEventInfo)
{
var nRow = ds_list.insertRow(ds_list.rowposition);
fn_initInsertData(ds_list, nRow);
}
// 삭제(UI)
function fn_delete()
{
for( var i =ds_list.getRowCount() ; i >= 0; i--)
{
ds_list.enableevent = false;
var isChk = false;
for( var i=ds_list.getRowCount() ; i >= 0; i--)
{
if(ds_list.getColumn(i,"chk") == 1)
{
// 삭제처리 패턴1(Dataset을 deleteRow처리)
ds_list.deleteRow(i);
/*
// 삭제처리 패턴2(Dataset의 rowStatus상태값을 D로 바꾼다)
isChk = true;
// row를 추가한 다음 삭제할 경우 deleteRow처리함.
if(ds_list.getColumn(i,"rowStatus")=='C')
{
ds_list.deleteRow(i);
}
else
{
var rtnFlag = confirm("삭제하시겠습니까?");//gfn_adl_Msg("msg.cfm.wbs.comm.0031");
if(rtnFlag){
ds_list.setColumn(i,"rowStatus","D");
ds_list.setColumn(i,"chk","");
}
else
{
ds_list.setColumn(i,"chk","");
}
}
*/
}
}
if (isChk == false)
{
//gfn_adl_Msg('inf.alt.wbs.comm.0022');
alert("삭제하시겠습니까?");
}
ds_list.enableevent = true;
}
}
//리셋
function fn_reset(obj:Button, e:ClickEventInfo)
{
ds_list.reset();
}
//저장(Save)
function fn_save(obj:Button, e:ClickEventInfo)
{
var strSvcid = "changedData";
var strController = "egovSampleModify.do";
var strInputDs = "ds_input=ds_list:U";
var strOutputDs = "";
var strParam = "a=b";
var strFnCallback = "fn_callBack";
//Transaction 호출
gfn_transaction(this,
strSvcid,
strController,
strInputDs,
strOutputDs,
strParam,
strFnCallback);
}
/****************************************************************************************
Dataset Event Area
****************************************************************************************/
// 데이타 입력, 추가시 rowStatus변경
function fn_initInsertData(objDs, nRow) {
objDs.setColumn(nRow, "rowStatus", "C");
}
/************************************************************************************************
* 01. 함수구분 : CALLBACK FUNCTION
* 02. 함수 : fn_CallBack
************************************************************************************************/
function fn_callBack(svcid, errcd, errmsg)
{
for(var i = 0;i<ds_list.getRowCount();i++) {
DsCheck.addRow();
}
if ( svcid == "list" )
{
this.status = " 처리메세지 : " + errmsg;
}
alert("errcd : " + errcd);
alert("errmsg : " + errmsg);
}]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="CLASS_GUIDE_01" classname="CLASS_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="Point,Error,Readonly">
<Layouts>
<Layout>
<Static id="Static05" position="absolute 340 50 553 110" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static10" text="Important&#13;&#10;class : input_point" position="absolute 0 25 130 179" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 50 341 110" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Edit id="Edit00" taborder="1" position="absolute 180 61 290 81" class="input_point" value="투비소프트"/>
<Static id="Static00" text="Edit" position="absolute 129 25 341 51" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static04" text="TextArea" position="absolute 552 25 765 51" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static03" text="MaskEdit" position="absolute 340 25 553 51" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static06" position="absolute 552 50 765 110" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<MaskEdit id="MaskEdit00" taborder="2" position="absolute 392 61 502 81" class="input_point" value="123456789" mask=","/>
<TextArea id="TextArea00" taborder="3" position="absolute 573 61 743 101" class="input_point" value="투비소프트"/>
<Static id="Static07" text="Spin" position="absolute 129 109 341 135" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static08" text="Combo" position="absolute 340 109 553 135" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static09" text="Calendar" position="absolute 552 109 765 135" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static12" position="absolute 129 134 341 179" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static13" position="absolute 340 134 553 179" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static14" position="absolute 552 134 765 179" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Spin id="Spin00" taborder="4" position="absolute 180 147 290 167" class="input_point" value="5" max="20"/>
<Combo id="Combo00" taborder="5" text="Combo00" position="absolute 392 147 502 167" class="input_point" innerdataset="@DsList" codecolumn="idx" datacolumn="context" index="6" value="6"/>
<Calendar id="Calendar00" taborder="6" position="absolute 603 147 713 167" class="input_point" value="20110601" dateformat="yyyy-MM-dd"/>
<Static id="Static15" position="absolute 340 203 553 263" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static16" text="Error&#13;&#10;class : input_err" position="absolute 0 178 130 376" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static17" position="absolute 129 203 341 263" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Edit id="Edit01" taborder="7" value="투비소프트" text="투비소프트" class="input_err" position="absolute 180 214 290 234"/>
<Static id="Static18" text="Edit" position="absolute 129 178 341 204" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static19" text="TextArea" position="absolute 552 178 765 204" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static20" text="MaskEdit" position="absolute 340 178 553 204" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static21" position="absolute 552 203 765 263" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<MaskEdit id="MaskEdit01" taborder="8" value="123456789" text="123,456,789" mask="," class="input_err" position="absolute 392 214 502 234"/>
<TextArea id="TextArea01" taborder="9" value="투비소프트" text="투비소프트" class="input_err" position="absolute 573 214 743 254"/>
<Static id="Static22" text="Spin" position="absolute 129 262 341 288" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static23" text="Combo" position="absolute 340 262 553 288" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static24" text="Calendar" position="absolute 552 262 765 288" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static25" position="absolute 129 287 341 332" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static26" position="absolute 340 287 553 332" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static27" position="absolute 552 287 765 332" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Spin id="Spin01" taborder="10" class="input_err" position="absolute 180 300 290 320" value="5" max="20"/>
<Combo id="Combo01" taborder="11" class="input_err" position="absolute 392 300 502 320" innerdataset="@DsList" codecolumn="idx" datacolumn="context" index="6" value="6"/>
<Calendar id="Calendar01" taborder="12" class="input_err" position="absolute 603 300 713 320" value="20110601" dateformat="yyyy-MM-dd"/>
<Static id="Static28" position="absolute 340 400 553 460" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static29" text="Readonly&#13;&#10;&lt;b v='false'&gt;Attribute Selector&lt;/b&gt;" position="absolute 0 375 130 529" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " usedecorate="true"/>
<Static id="Static30" position="absolute 129 400 341 460" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Edit id="Edit02" taborder="13" value="투비소프트" text="투비소프트" position="absolute 180 411 290 431" readonly="true"/>
<Static id="Static31" text="Edit" position="absolute 129 375 341 401" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static32" text="TextArea" position="absolute 552 375 765 401" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static33" text="MaskEdit" position="absolute 340 375 553 401" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static34" position="absolute 552 400 765 460" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<MaskEdit id="MaskEdit02" taborder="14" value="123456789" text="123,456,789" mask="," position="absolute 392 411 502 431" readonly="true"/>
<TextArea id="TextArea02" taborder="15" value="투비소프트" text="투비소프트" position="absolute 573 411 743 451" readonly="true"/>
<Static id="Static35" text="Spin" position="absolute 129 459 341 485" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static36" text="Combo" position="absolute 340 459 553 485" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static37" text="Calendar" position="absolute 552 459 765 485" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static38" position="absolute 129 484 341 529" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static39" position="absolute 340 484 553 529" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static40" position="absolute 552 484 765 529" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Spin id="Spin02" taborder="16" position="absolute 180 497 290 517" value="20" readonly="true"/>
<Combo id="Combo02" taborder="17" position="absolute 392 497 502 517" readonly="true" innerdataset="@DsList" codecolumn="idx" datacolumn="context" index="6" value="6"/>
<Calendar id="Calendar02" taborder="18" position="absolute 603 497 713 517" readonly="true" value="20110601" dateformat="yyyy-MM-dd"/>
<Static id="Static41" position="absolute 129 331 765 376" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="sta_WF_Info_Orange" text="※ 입력오류가 발생할 경우 해당 클래스를 적용하며, 마우스 포커스가 되었을 경우 &#13;&#10; 기 정의된 값으로 반환시켜야 함" class="sta_WF_Info_Orange" position="absolute 138 343 743 373"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="DsList" preload="true" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true">
<ColumnInfo>
<Column id="idx" type="STRING" size="256"/>
<Column id="context" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="idx">0</Col>
<Col id="context">Static</Col>
</Row>
<Row>
<Col id="idx">1</Col>
<Col id="context">Edit</Col>
</Row>
<Row>
<Col id="idx">2</Col>
<Col id="context">MaskEdit</Col>
</Row>
<Row>
<Col id="idx">3</Col>
<Col id="context">TextArea</Col>
</Row>
<Row>
<Col id="idx">4</Col>
<Col id="context">Button</Col>
</Row>
<Row>
<Col id="idx">5</Col>
<Col id="context">ListBox</Col>
</Row>
<Row>
<Col id="idx">6</Col>
<Col id="context">Combo</Col>
</Row>
<Row>
<Col id="idx">7</Col>
<Col id="context">Sp</Col>
</Row>
<Row>
<Col id="idx">8</Col>
<Col id="context">Calendar</Col>
</Row>
<Row>
<Col id="idx">9</Col>
<Col id="context">Tab</Col>
</Row>
</Rows>
</Dataset>
</Objects>
</Form>
</FDL>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="CLASS_GUIDE_02" classname="CLASS_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="Information">
<Layouts>
<Layout>
<Static id="Static19" position="absolute 446 25 765 538" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static10" text="Information&#13;&#10;- Orange" position="absolute 0 25 130 154" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 25 447 154" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="sta_WF_Info_Orange_Box" class="sta_WF_Info_Orange_Box" position="absolute 150 59 415 125" text=""/>
<Static id="sta_WF_Info_Orange" text="sta_WF_Info_Orange" class="sta_WF_Info_Orange" position="absolute 235 95 405 115"/>
<Static id="sta_WF_Info_Orange_Title" text="sta_WF_Info_Orange_Title" class="sta_WF_Info_Orange_Title" position="absolute 235 70 405 90"/>
<Static id="Static07" text="sta_WF_Info_Orange_Box" position="absolute 155 41 384 54" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static03" text="Title :" position="absolute 160 70 227 90" style="align:right;"/>
<Static id="Static00" text="Contents :" position="absolute 160 95 227 115" style="align:right;"/>
<Static id="sta_WF_Info_Orange_Box00" class="sta_WF_Info_Orange_Box" position="absolute 468 57 743 133" text=""/>
<Static id="Static04" text="Information&#13;&#10; - Green" position="absolute 0 153 130 282" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static05" position="absolute 129 153 447 282" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static06" text="Information&#13;&#10; - Blue" position="absolute 0 281 130 410" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static08" position="absolute 129 281 447 410" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="sta_WF_Info_Green_Box" class="sta_WF_Info_Green_Box" position="absolute 150 187 415 253" text=""/>
<Static id="sta_WF_Info_Green" text="sta_WF_Info_Green" class="sta_WF_Info_Green" position="absolute 235 223 405 243"/>
<Static id="sta_WF_Info_Green_Title" text="sta_WF_Info_Green_Title" class="sta_WF_Info_Green_Title" position="absolute 235 198 405 218"/>
<Static id="Static09" text="sta_WF_Info_Green_Box" position="absolute 155 169 384 182" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static12" text="Title :" position="absolute 160 198 227 218" style="align:right; "/>
<Static id="Static13" text="Contents :" position="absolute 160 223 227 243" style="align:right; "/>
<Static id="Static14" text="Information&#13;&#10; - Gray" position="absolute 0 409 130 538" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static15" position="absolute 129 409 447 538" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="sta_WF_Info_Blue_Box" class="sta_WF_Info_Blue_Box" position="absolute 150 315 415 381" text=""/>
<Static id="sta_WF_Info_Blue" text="sta_WF_Info_Blue" class="sta_WF_Info_Blue" position="absolute 235 351 405 371"/>
<Static id="sta_WF_Info_Blue_Title" text="sta_WF_Info_Blue_Title" class="sta_WF_Info_Blue_Title" position="absolute 235 326 405 346"/>
<Static id="Static16" text="sta_WF_Info_Blue_Box" position="absolute 155 297 384 310" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static17" text="Title :" position="absolute 160 326 227 346" style="align:right; "/>
<Static id="Static18" text="Contents :" position="absolute 160 351 227 371" style="align:right; "/>
<Static id="sta_Info_Gray" text="sta_Info_Gray" class="sta_Info_Gray" position="absolute 235 469 405 489"/>
<Static id="sta_Info_Gray_Title" text="sta_Info_Gray_Title" class="sta_Info_Gray_Title" position="absolute 235 444 405 464"/>
<Static id="Static20" text="Title :" position="absolute 160 444 227 464" style="align:right; "/>
<Static id="Static21" text="Contents :" position="absolute 160 469 227 489" style="align:right; "/>
<Static id="sta_WF_Info_Orange_Title00" text="필수정보" class="sta_WF_Info_Orange_Title" position="absolute 493 70 643 90"/>
<Static id="sta_WF_Info_Orange00" text="등록된 상품에 대하여 고객사별 가격 및 부가정보를 조회 할 수 있습니다." class="sta_WF_Info_Orange" position="absolute 493 95 719 119"/>
<Static id="sta_WF_Info_Orange01" text="※ 줄 간격을 조절 할 수 있는 컴포넌트는&#13;&#10; 텍스트박스(TextArea)만 가능하며 필요한&#13;&#10; 경우 TextArea에 Class를 신규 제작하여 &#13;&#10; 사용함" class="sta_WF_Info_Orange" position="absolute 478 178 749 227"/>
<TextArea id="TextArea00" taborder="1" position="absolute 478 284 733 332" style="background:transparent;border:0 none #808080ff ;color:#e37a0cff;" value="※ 텍스트박스(TextArea)로 만들어진 &#13;&#10; 정보영역" linespace="5" wordwrap="word"/>
<Static id="Static22" text="TextArea" position="absolute 478 271 707 284" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static23" text="TextArea" position="absolute 478 159 707 172" style="color:#999999ff; font:Tahoma,8; "/>
</Layout>
</Layouts>
<Objects/>
</Form>
</FDL>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_01" classname="COMP_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="Static,Edit,TextArea,MaskEdit">
<Layouts>
<Layout>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;"/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static00" text="Static" position="absolute 0 25 130 245" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static03" position="absolute 129 25 765 245" style="background:#ffffffff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;" text=""/>
<Static id="Static07" text="enabled" position="absolute 138 30 258 43" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static04" text="disabled" position="absolute 311 30 431 43" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static05" text="Edit" position="absolute 0 244 130 319" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static06" position="absolute 129 244 765 319" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static08" text="enabled" position="absolute 138 249 258 262" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static09" text="disabled" position="absolute 311 249 431 262" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static10" text="TextArea" position="absolute 0 318 130 463" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 318 765 463" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static12" text="enabled" position="absolute 138 323 258 336" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static13" text="disabled" position="absolute 311 323 431 336" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static14" text="MaskEdit" position="absolute 0 462 130 537" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static15" position="absolute 129 462 765 537" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static16" text="enabled" position="absolute 138 467 258 480" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static17" text="disabled" position="absolute 311 467 431 480" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static26" text="XPLATFORM" position="absolute 138 52 258 72"/>
<Static id="Static27" text="XPLATFORM" position="absolute 311 52 431 72" enable="false"/>
<Static id="Static28" text="※ Static의 기본 높이를 20으로 지정" position="absolute 469 53 724 68" class="sta_WF_Info_Orange" wordwrap="none"/>
<Edit id="Edit00" taborder="1" position="absolute 138 272 288 292" value="엑스플렛폼"/>
<Edit id="Edit01" taborder="2" position="absolute 311 272 461 292" enable="false" value="엑스플렛폼"/>
<TextArea id="TextArea00" taborder="3" position="absolute 138 346 288 451" value="엑스플렛폼"/>
<TextArea id="TextArea01" taborder="4" position="absolute 311 346 461 451" value="엑스플렛폼" enable="false"/>
<Static id="Static29" text="※ wordwrap을 both로 지정" wordwrap="none" class="sta_WF_Info_Orange" position="absolute 469 346 724 361"/>
<MaskEdit id="MaskEdit00" taborder="5" position="absolute 138 490 288 510" value="1234567890" mask="@@@,@@@"/>
<MaskEdit id="MaskEdit01" taborder="6" position="absolute 311 490 461 510" enable="false" value="1234567890" mask="@@@,@@@"/>
<Static id="Static30" text="※ mask = &quot;@@@,@@@&quot;" wordwrap="none" class="sta_WF_Info_Orange" position="absolute 469 492 724 507"/>
<Shape id="Shape00" position="absolute 139 82 754 92" style="strokepen:1 dashed #b1c0cbff;"/>
<Static id="Static18" text="※ usedecorate =&quot;&lt;b v='true'&gt;true&lt;/b&gt;&quot;" wordwrap="none" class="sta_WF_Info_Orange" position="absolute 141 100 396 115" usedecorate="true"/>
<TextArea id="TextArea02" taborder="7" position="absolute 156 110 679 237" value="fs 글자의 크기(fontsize)를 지정합니다. ex)&lt;fs v='12'&gt;&lt;/fs&gt;&#13;&#10;fc 글자의 색상(fontcolor)를 지정합니다. ex)&lt;fc v='red'&gt;&lt;/fc&gt;&lt;fc v='#FF00FF'&gt;&lt;/fc&gt;&#13;&#10;ff 글자의 종류(fontface)를 지정합니다. ex)&lt;ff v='굴림'&gt;&lt;/ff&gt;&#13;&#10;b 굵은글씨를(bold)를 지정합니다. ex)&lt;b v='true'&gt;&lt;/b&gt;&#13;&#10;i 이텔릭체를 (italic)를 지정합니다. ex)&lt;i v='true'&gt;&lt;/i&gt;&#13;&#10;u 언더라인을(underline)를 지정합니다. ex)&lt;u v='true'&gt;&lt;/u&gt;&#13;&#10;s 취소선(strike)를 지정합니다. ex)&lt;s v='true'&gt;&lt;/s&gt;" wordwrap="both" readonly="true" style="border:0 none #808080 ;color:#e37a0cff;" linespace="3"/>
</Layout>
</Layouts>
</Form>
</FDL>

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_02" classname="COMP_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="Button,Spin,ListBox,Combo">
<Layouts>
<Layout>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;"/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static00" text="ListBox" position="absolute 0 253 130 413" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static03" position="absolute 129 253 765 413" style="background:#ffffffff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;" text=""/>
<Static id="Static07" text="enabled" position="absolute 138 258 258 271" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static04" text="disabled" position="absolute 311 258 431 271" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static10" text="Combo" position="absolute 0 412 130 537" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 412 765 537" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static12" text="enabled" position="absolute 138 417 258 430" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static13" text="disabled" position="absolute 311 417 431 430" style="color:#999999ff;font:Tahoma,8;"/>
<ListBox id="ListBox00" taborder="1" value="5" text="TextArea" index="5" innerdataset="@DsList" codecolumn="idx" datacolumn="context" position="absolute 138 281 292 396"/>
<ListBox id="ListBox01" taborder="2" value="TextArea" text="TextArea" index="5" innerdataset="@DsList" codecolumn="idx" datacolumn="context" position="absolute 311 281 465 396" enable="false"/>
<Combo id="Combo00" taborder="3" innerdataset="@DsList" codecolumn="idx" datacolumn="context" index="6" displayrowcount="5" position="absolute 138 439 273 459" value="6"/>
<Combo id="Combo01" taborder="4" innerdataset="@DsList" codecolumn="idx" datacolumn="context" index="6" enable="false" position="absolute 311 439 446 459"/>
<Static id="Static72" text="type = dropdown (default)" position="absolute 138 486 288 501" style="color:#999999ff; font:Tahoma,8; "/>
<Combo id="Combo02" taborder="5" innerdataset="@DsList" codecolumn="idx" datacolumn="context" index="6" displayrowcount="5" position="absolute 138 507 273 527" value="6"/>
<Combo id="Combo03" taborder="6" innerdataset="@DsList" codecolumn="idx" datacolumn="context" index="6" type="search" displayrowcount="5" position="absolute 311 507 446 527"/>
<Combo id="Combo04" taborder="7" innerdataset="@DsList" codecolumn="idx" datacolumn="context" index="6" type="filter" displayrowcount="5" position="absolute 499 507 634 527"/>
<Static id="Static73" text="type = search" position="absolute 311 486 461 501" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static74" text="type = filter" position="absolute 499 486 649 501" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static69" text="&lt;b v='true'&gt;Misc. &lt;/b&gt;&#13;&#10;displayrowcount = 10" position="absolute 499 429 654 454" style="align:left top;" class="sta_WF_Info_Orange" usedecorate="true"/>
<Static id="Static05" text="Spin" position="absolute 0 179 130 254" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static06" position="absolute 129 179 765 254" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static08" text="enabled" position="absolute 138 184 258 197" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static09" text="disabled" position="absolute 311 184 431 197" style="color:#999999ff;font:Tahoma,8;"/>
<Spin id="Spin00" taborder="8" value="1" text="1" max="10" min="1" position="absolute 138 199 208 219"/>
<Spin id="Spin01" taborder="9" value="1" text="1" max="10" min="1" enable="false" position="absolute 311 199 381 219"/>
<Static id="Static18" text="Button" position="absolute 0 25 130 180" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static19" position="absolute 129 25 765 180" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static20" text="enabled" position="absolute 138 30 258 43" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static21" text="disabled" position="absolute 311 30 431 43" style="color:#999999ff;font:Tahoma,8;"/>
<Button id="Button00" taborder="10" text="일이삼사" position="absolute 138 53 207 73"/>
<Button id="Button01" taborder="11" text="일이삼사" enable="false" position="absolute 311 53 380 73"/>
<Button id="Button02" taborder="12" text="일이" position="absolute 138 81 183 101"/>
<Button id="Button03" taborder="13" text="일이삼" position="absolute 138 104 195 124"/>
<Button id="Button04" taborder="14" text="일이삼사" position="absolute 138 127 207 147"/>
<Button id="Button05" taborder="15" text="일이삼사오" position="absolute 138 150 219 170"/>
<Button id="Button09" taborder="19" text="일이삼사오" position="absolute 277 81 358 101"/>
<Button id="Button06" taborder="20" text="일이삼사오육" position="absolute 277 104 370 124"/>
<Button id="Button07" taborder="21" text="일이삼사오육칠" position="absolute 277 127 382 147"/>
<Button id="Button08" taborder="22" text="일이삼사오육칠팔" position="absolute 277 150 394 170"/>
<Static id="Static14" text="버튼사이즈는 기본 2자에서 12px씩 증가함" usedecorate="true" class="sta_WF_Info_Orange" position="absolute 494 81 740 124" style="align:left top; " wordwrap="word"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="DsList" preload="true" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true">
<ColumnInfo>
<Column id="idx" type="STRING" size="256"/>
<Column id="context" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="idx">0</Col>
<Col id="context">Static</Col>
</Row>
<Row>
<Col id="idx">1</Col>
<Col id="context">Edit</Col>
</Row>
<Row>
<Col id="idx">2</Col>
<Col id="context">MaskEdit</Col>
</Row>
<Row>
<Col id="idx">3</Col>
<Col id="context">TextArea</Col>
</Row>
<Row>
<Col id="idx">4</Col>
<Col id="context">Button</Col>
</Row>
<Row>
<Col id="idx">5</Col>
<Col id="context">ListBox</Col>
</Row>
<Row>
<Col id="idx">6</Col>
<Col id="context">Combo</Col>
</Row>
<Row>
<Col id="idx">7</Col>
<Col id="context">Sp</Col>
</Row>
<Row>
<Col id="idx">8</Col>
<Col id="context">Calendar</Col>
</Row>
<Row>
<Col id="idx">9</Col>
<Col id="context">Tab</Col>
</Row>
</Rows>
</Dataset>
</Objects>
</Form>
</FDL>

View File

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_03" classname="COMP_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="Calendar,Radio,ChecBox,ProgressBar">
<Layouts>
<Layout>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;"/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static18" text="Calendar" position="absolute 0 25 130 260" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static19" position="absolute 129 25 765 260" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static20" text="enabled" position="absolute 138 30 258 43" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static21" text="disabled" position="absolute 311 30 431 43" style="color:#999999ff;font:Tahoma,8;"/>
<Calendar id="Calendar00" taborder="1" position="absolute 138 53 228 73" dateformat="yyyy-MM-dd" value="20110620"/>
<Calendar id="Calendar01" taborder="2" dateformat="yyyy-MM-dd" position="absolute 311 51 401 71" enable="false" value="20110620"/>
<Static id="Static00" text="type=&quot;normal&quot;" position="absolute 138 88 258 101" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static03" text="type=&quot;spin&quot;" position="absolute 311 88 431 101" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static04" text="type=&quot;monthonly&quot;" position="absolute 524 38 644 51" style="color:#999999ff;font:Tahoma,8;"/>
<Calendar id="Calendar02" taborder="3" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 138 112 228 132"/>
<Calendar id="Calendar03" taborder="4" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 311 112 401 132" type="spin" style=""/>
<Calendar id="Calendar04" taborder="5" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 524 62 690 248" type="monthonly"/>
<Static id="Static05" text="Radio" position="absolute 0 259 130 324" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static06" position="absolute 129 259 765 324" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static07" text="enabled" position="absolute 138 264 258 277" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static08" text="disabled" position="absolute 311 264 431 277" style="color:#999999ff;font:Tahoma,8;"/>
<Radio id="Radio00" taborder="6" columncount="2" index="0" innerdataset="@DsRadio" codecolumn="Column0" datacolumn="Column1" value="0" text="남" position="absolute 138 289 268 310" style=""/>
<Radio id="Radio01" taborder="7" columncount="2" index="1" innerdataset="@DsRadio" codecolumn="Column0" datacolumn="Column1" value="1" text="여" enable="false" position="absolute 311 289 441 310"/>
<Static id="Static09" text="CheckBox" position="absolute 0 323 130 403" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static10" position="absolute 129 323 765 403" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static11" text="enabled" position="absolute 138 328 258 341" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static12" text="disabled" position="absolute 311 328 431 341" style="color:#999999ff;font:Tahoma,8;"/>
<CheckBox id="CheckBox00" taborder="8" text="XPLATFORM" position="absolute 138 348 253 368"/>
<CheckBox id="CheckBox01" taborder="9" text="XPLATFORM" value="true" position="absolute 138 373 253 388"/>
<CheckBox id="CheckBox03" taborder="10" text="XPLATFORM" enable="false" position="absolute 311 348 426 368"/>
<CheckBox id="CheckBox02" taborder="11" text="XPLATFORM" value="true" enable="false" position="absolute 311 373 426 393"/>
<Static id="Static13" text="ProgressBar" position="absolute 0 402 130 537" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static14" position="absolute 129 402 765 537" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static15" text="enabled" position="absolute 138 407 258 420" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static16" text="disabled" position="absolute 383 407 503 420" style="color:#999999ff;font:Tahoma,8;"/>
<Button id="Btn01" taborder="12" text="Progress Test" onclick="Btn01_onclick" position="absolute 512 483 609 503"/>
<ProgressBar id="ProgressBar00" taborder="13" max="100" min="0" pos="65" position="absolute 138 433 338 448"/>
<ProgressBar id="ProgressBar02" taborder="14" max="100" min="0" pos="65" enable="false" position="absolute 383 433 583 448"/>
<ProgressBar id="Pbr01" taborder="15" max="100" min="0" position="absolute 138 486 506 501" blocksize="1"/>
<Static id="Static28" text="※ Appearance&#13;&#10; columncount = &quot;2&quot;" wordwrap="none" class="sta_WF_Info_Orange" position="absolute 495 273 625 303"/>
<Calendar id="Calendar05" taborder="16" value="20110620" text="2011-06-20" type="spin" dateformat="yyyy-MM-dd" position="absolute 311 140 401 160" enable="false"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="DsRadio" preload="true" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="Column0">0</Col>
<Col id="Column1">남</Col>
</Row>
<Row>
<Col id="Column0">1</Col>
<Col id="Column1">여</Col>
</Row>
</Rows>
</Dataset>
</Objects>
<Script type="xscript4.0"><![CDATA[function Btn01_onclick(obj:Button, e:ClickEventInfo)
{
var i, j;
Pbr01.pos = 0;
for( i = 0 ; i < 200 ; i+=2 )
{
Pbr01.stepIt();
this.updateWindow();
sleep(5);
}
}]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_04" classname="COMP_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="Shape, ImageViewer">
<Layouts>
<Layout>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;"/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static18" text="Shape" position="absolute 0 25 130 260" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static19" position="absolute 129 25 765 260" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static20" text="enabled" position="absolute 243 30 363 43" style="color:#999999ff;font:Tahoma,8;"/>
<Static id="Static21" text="disabled" position="absolute 336 30 456 43" style="color:#999999ff;font:Tahoma,8;"/>
<Shape id="Shape00" position="absolute 243 51 313 81"/>
<Shape id="Shape01" position="absolute 336 51 406 81" enable="false"/>
<Static id="Static00" text="type = &quot;&lt;b v='true'&gt;line&lt;/b&gt;&quot;" position="absolute 131 56 236 74" style="color:#999999ff;align:right;font:Tahoma,8;" usedecorate="true"/>
<Shape id="Shape02" position="absolute 243 94 313 154" type="triangle"/>
<Shape id="Shape03" enable="false" position="absolute 336 94 406 154" type="triangle"/>
<Static id="Static03" text="type = &quot;&lt;b v='true'&gt;triangle&lt;/b&gt;&quot;" position="absolute 131 110 236 128" style="color:#999999ff;align:right;font:Tahoma,8;" usedecorate="true"/>
<Static id="Static04" text="type = &quot;&lt;b v='true'&gt;rectangle&lt;/b&gt;&quot;" position="absolute 131 193 236 211" style="color:#999999ff;align:right;font:Tahoma,8;" usedecorate="true"/>
<Shape id="Shape04" type="rectangle" position="absolute 243 177 313 247"/>
<Shape id="Shape05" type="rectangle" enable="false" position="absolute 336 177 406 247"/>
<Static id="Static05" text="enabled" position="absolute 546 30 666 43" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static06" text="disabled" position="absolute 639 30 749 43" style="color:#999999ff; font:Tahoma,8; "/>
<Shape id="Shape06" position="absolute 546 51 616 81" type="roundrectangle"/>
<Shape id="Shape07" enable="false" position="absolute 639 51 709 81" type="roundrectangle"/>
<Static id="Static07" text="type = &quot;&lt;b v='true'&gt;roundrectangle&lt;/b&gt;&quot;" position="absolute 429 49 539 82" style="color:#999999ff;align:right;font:Tahoma,8;" usedecorate="true"/>
<Shape id="Shape08" type="ellipse" position="absolute 546 94 616 154"/>
<Shape id="Shape09" type="ellipse" enable="false" position="absolute 639 94 709 154"/>
<Static id="Static08" text="type = &quot;&lt;b v='true'&gt;ellipse&lt;/b&gt;&quot;" position="absolute 444 110 539 128" style="color:#999999ff;align:right;font:Tahoma,8;" usedecorate="true"/>
<Static id="Static09" text="type = &quot;&lt;b v='true'&gt;pie&lt;/b&gt;&quot;" position="absolute 444 193 539 211" style="color:#999999ff;align:right;font:Tahoma,8;" usedecorate="true"/>
<Shape id="Shape10" type="pie" position="absolute 546 177 616 247" endangle="128"/>
<Shape id="Shape11" type="pie" enable="false" position="absolute 639 177 709 247" endangle="128"/>
<Static id="Static10" text="ImageViewer" position="absolute 0 259 130 539" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 259 765 539" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<ImageViewer id="ImageViewer00" taborder="1" text="ImageViewer" position="absolute 138 284 243 344"/>
<Static id="Static12" text="disabled" position="absolute 311 264 431 277" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static13" text="enabled" position="absolute 138 264 258 277" style="color:#999999ff; font:Tahoma,8; "/>
<ImageViewer id="ImageViewer01" taborder="2" text="ImageViewer" position="absolute 311 284 416 344" enable="false"/>
<Static id="Static14" text="stretch = &quot;&lt;b v='true'&gt;none&lt;/b&gt;&quot;" position="absolute 138 352 258 365" style="color:#999999ff; font:Tahoma,8; " usedecorate="true"/>
<ImageViewer id="ImageViewer02" taborder="3" position="absolute 138 368 298 528" image="URL('theme://images/img_sample.png')" imagealign=""/>
<Static id="Static15" text="stretch = &quot;&lt;b v='true'&gt;fit&lt;/b&gt;&quot;" position="absolute 331 352 451 365" style="color:#999999ff; font:Tahoma,8; " usedecorate="true"/>
<ImageViewer id="ImageViewer03" taborder="4" image="URL('theme://images/img_sample.png')" position="absolute 331 368 491 528" stretch="fit" imagealign=""/>
<Static id="Static16" position="absolute 524 352 704 365" style="color:#999999ff; font:Tahoma,8; " text="stretch = &quot;&lt;b v='true'&gt;fixaspectratio&lt;/b&gt;&quot;" usedecorate="true"/>
<ImageViewer id="ImageViewer04" taborder="5" image="URL('theme://images/img_sample.png')" stretch="fixaspectratio" position="absolute 524 368 684 528" imagealign=""/>
</Layout>
</Layouts>
<Objects/>
<Script type="xscript4.0"><![CDATA[function Btn01_onclick(obj:Button, e:ClickEventInfo)
{
var i, j;
Pbr01.pos = 0;
for( i = 0 ; i < 200 ; i+=2 )
{
Pbr01.stepIt();
this.updateWindow();
sleep(5);
}
}]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,461 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_05" classname="COMP_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="PopupMenu,Menu,GroupBox,Splitter">
<Layouts>
<Layout>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;"/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static10" text="PopupMenu &#13;&#10;( contextmenu )" position="absolute 0 25 130 180" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 25 765 180" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static13" text="enabled" position="absolute 138 30 258 43" style="color:#999999ff; font:Tahoma,8; "/>
<Button id="Button00" taborder="1" text="PopupMenu Show" position="absolute 137 48 267 68" onclick="Button00_onclick"/>
<PopupMenu id="pMenu" position="absolute 137 69 267 173" innerdataset="@ds_menu" captioncolumn="Caption" enablecolumn="enable" hotkeycolumn="hotkey" idcolumn="idx" levelcolumn="lev" userdatacolumn="UserData"/>
<Static id="Static28" class="sta_WF_Info_Orange" position="absolute 306 51 556 131" text="※ *&gt;#contextmenu&#13;&#10; 인풋컴포넌트 내부에 있는 &#13;&#10; 텍스트를 선택,복사,붙여넣기&#13;&#10; 기능이 있는 팝업메뉴"/>
<Static id="Static00" position="absolute 129 179 765 254" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Static id="Static03" text="Menu" position="absolute 0 179 130 254" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Menu id="Menu00" taborder="2" position="absolute 164 197 698 232" innerdataset="@ds_menu" captioncolumn="Caption" enablecolumn="enable" hotkeycolumn="hotkey" idcolumn="idx" levelcolumn="lev" userdatacolumn="UserData"/>
<Static id="Static04" text="GroupBox" position="absolute 0 253 130 373" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static05" position="absolute 129 253 765 373" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<GroupBox id="GroupBox00" text="GroupBox" position="absolute 137 289 347 359" style="titlepadding:0 3 0 0;"/>
<GroupBox id="GroupBox01" text="GroupBox" position="absolute 392 289 602 359" style="titlepadding:0 3 0 0; " enable="false"/>
<Static id="Static12" text="disabled" position="absolute 392 263 512 276" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static06" text="enabled" position="absolute 138 263 258 276" style="color:#999999ff; font:Tahoma,8; "/>
<Static id="Static07" text="Splitter" position="absolute 0 372 130 542" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static08" position="absolute 129 372 765 542" style="background:#f2f2efff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;" text=""/>
<Static id="Static14" text="type = &quot;vertical&quot; (Attribute Selector)" position="absolute 407 382 587 395" style="color:#333333ff;font:Tahoma,8;"/>
<Splitter id="Splitter00" position="absolute 249 417 254 528">
<SplitterItems id="items">
<SplitterItem id="item00" componentid="sta_left" bindtype="resize" position="leftortop" offset="2"/>
<SplitterItem id="item01" componentid="sta_right" bindtype="resize" position="rightorbottom" offset="2"/>
</SplitterItems>
</Splitter>
<Splitter id="Splitter01" position="absolute 420 470 580 475" type="vertical">
<SplitterItems id="items">
<SplitterItem id="item00" componentid="sta_top" bindtype="resize" position="leftortop" offset="2"/>
<SplitterItem id="item01" componentid="sta_bottom" bindtype="resize" position="rightorbottom" offset="2"/>
</SplitterItems>
</Splitter>
<Static id="Static09" text="type = &quot;horizontal&quot; (default)" position="absolute 148 382 333 395" style="color:#333333ff;font:Tahoma,8;"/>
<Static id="sta_left" text="leftortop" position="absolute 153 417 247 528" style="background:#e37a0c99;border:0 none #808080ff ;color:#000000ff;bordertype:round 4 4 ;align:center middle;"/>
<Static id="sta_right" text="rightorbottom" position="absolute 256 417 350 528" style="background:#33990099;border:0 none #808080ff ;color:#000000ff;bordertype:round 4 4 ;align:center middle;"/>
<Static id="sta_top" text="leftortop" position="absolute 420 417 580 467" style="background:#e37a0c99; border:0 none #808080ff ; color:#000000ff; bordertype:round 4 4 ; align:center middle; "/>
<Static id="sta_bottom" text="rightorbottom" position="absolute 420 478 580 528" style="background:#33990099;border:0 none #808080ff ;color:#000000ff;bordertype:round 4 4 ;align:center middle;"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_menu" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="idx" type="STRING" size="256"/>
<Column id="lev" type="STRING" size="256"/>
<Column id="UserData" type="STRING" size="256"/>
<Column id="Caption" type="STRING" size="256"/>
<Column id="enable" type="STRING" size="256"/>
<Column id="hotkey" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="lev">0</Col>
<Col id="UserData">인사관리</Col>
<Col id="Caption">인사관리</Col>
<Col id="enable">1</Col>
<Col id="idx">1000</Col>
</Row>
<Row>
<Col id="UserData">인사마스터생성</Col>
<Col id="Caption">인사마스터생성</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1001</Col>
</Row>
<Row>
<Col id="UserData">인적사항</Col>
<Col id="Caption">인적사항</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="hotkey">Alt+K</Col>
<Col id="idx">1002</Col>
</Row>
<Row>
<Col id="UserData">개인사진등록 신청</Col>
<Col id="Caption">개인사진등록 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1003</Col>
</Row>
<Row>
<Col id="UserData">개인사진등록 관리(승인 )</Col>
<Col id="Caption">개인사진등록 관리(승인 )</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1004</Col>
</Row>
<Row>
<Col id="UserData">보훈자 관리</Col>
<Col id="Caption">보훈자 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1005</Col>
</Row>
<Row>
<Col id="UserData">징계 관리</Col>
<Col id="Caption">징계 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1006</Col>
</Row>
<Row>
<Col id="UserData">포상 등록 신청</Col>
<Col id="Caption">포상 등록 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">0</Col>
<Col id="idx">1007</Col>
</Row>
<Row>
<Col id="UserData">포상 관리(승인 )</Col>
<Col id="Caption">포상 관리(승인 )</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1008</Col>
</Row>
<Row>
<Col id="UserData">신원보증관리</Col>
<Col id="Caption">신원보증관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1009</Col>
</Row>
<Row>
<Col id="UserData">증명서 관리</Col>
<Col id="Caption">증명서 관리</Col>
<Col id="lev">2</Col>
<Col id="enable">0</Col>
<Col id="idx">1010</Col>
</Row>
<Row>
<Col id="UserData">개인정보(특이사항) 관리</Col>
<Col id="Caption">개인정보(특이사항) 관리</Col>
<Col id="lev">2</Col>
<Col id="enable">1</Col>
<Col id="idx">1011</Col>
</Row>
<Row>
<Col id="UserData">인원현황</Col>
<Col id="Caption">인원현황</Col>
<Col id="lev">2</Col>
<Col id="enable">1</Col>
<Col id="idx">1012</Col>
</Row>
<Row>
<Col id="UserData">인원현황 보고서</Col>
<Col id="Caption">인원현황 보고서</Col>
<Col id="lev">2</Col>
<Col id="enable">1</Col>
<Col id="idx">1013</Col>
</Row>
<Row>
<Col id="UserData">재고용대상자</Col>
<Col id="Caption">재고용대상자</Col>
<Col id="lev">2</Col>
<Col id="enable">1</Col>
<Col id="idx">1014</Col>
</Row>
<Row>
<Col id="UserData">연령별인원현황</Col>
<Col id="Caption">연령별인원현황</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1015</Col>
</Row>
<Row>
<Col id="UserData">인사기록카드 출력</Col>
<Col id="Caption">인사기록카드 출력</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1016</Col>
</Row>
<Row>
<Col id="UserData">기념일 조회</Col>
<Col id="Caption">기념일 조회</Col>
<Col id="lev">1</Col>
<Col id="enable">0</Col>
<Col id="idx">1017</Col>
</Row>
<Row>
<Col id="lev">0</Col>
<Col id="UserData">인사관리(개인)</Col>
<Col id="Caption">인사관리(개인)</Col>
<Col id="enable">1</Col>
<Col id="idx">1100</Col>
</Row>
<Row>
<Col id="UserData">인적사항(개인)</Col>
<Col id="Caption">인적사항(개인)</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1101</Col>
</Row>
<Row>
<Col id="UserData">증명서인쇄</Col>
<Col id="Caption">증명서인쇄</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1102</Col>
</Row>
<Row>
<Col id="UserData">재고용신청서</Col>
<Col id="Caption">재고용신청서</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1103</Col>
</Row>
<Row>
<Col id="UserData">조직 및 사원조회</Col>
<Col id="Caption">조직 및 사원조회</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1104</Col>
</Row>
<Row>
<Col id="UserData">개인사진등록 신청</Col>
<Col id="Caption">개인사진등록 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">0</Col>
<Col id="idx">1105</Col>
</Row>
<Row>
<Col id="UserData">포상 등록 신청</Col>
<Col id="Caption">포상 등록 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1106</Col>
</Row>
<Row>
<Col id="UserData">인사정보조회</Col>
<Col id="Caption">인사정보조회</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1200</Col>
</Row>
<Row>
<Col id="UserData">인적사항(인사위)</Col>
<Col id="Caption">인적사항(인사위)</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1201</Col>
</Row>
<Row>
<Col id="UserData">발령관리</Col>
<Col id="Caption">발령관리</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1300</Col>
</Row>
<Row>
<Col id="UserData">발령코드관리</Col>
<Col id="Caption">발령코드관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1301</Col>
</Row>
<Row>
<Col id="UserData">일괄발령 관리</Col>
<Col id="Caption">일괄발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1302</Col>
</Row>
<Row>
<Col id="UserData">연례호봉발령 관리</Col>
<Col id="Caption">연례호봉발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1303</Col>
</Row>
<Row>
<Col id="UserData">승진발령 관리</Col>
<Col id="Caption">승진발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1304</Col>
</Row>
<Row>
<Col id="UserData">승진자 DM주소 출력</Col>
<Col id="Caption">승진자 DM주소 출력</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="hotkey">Alt+O</Col>
<Col id="idx">1305</Col>
</Row>
<Row>
<Col id="UserData">특별호봉승급 관리</Col>
<Col id="Caption">특별호봉승급 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1306</Col>
</Row>
<Row>
<Col id="UserData">재계약 대상자 관리</Col>
<Col id="Caption">재계약 대상자 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1307</Col>
</Row>
<Row>
<Col id="UserData">발령 추천서 작성</Col>
<Col id="Caption">발령 추천서 작성</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1308</Col>
</Row>
<Row>
<Col id="UserData">발령 추천자 지정</Col>
<Col id="Caption">발령 추천자 지정</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1309</Col>
</Row>
<Row>
<Col id="UserData">발령 추천서 승인</Col>
<Col id="Caption">발령 추천서 승인</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1310</Col>
</Row>
<Row>
<Col id="UserData">재고용추천</Col>
<Col id="Caption">재고용추천</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1311</Col>
</Row>
<Row>
<Col id="UserData">개별발령 관리</Col>
<Col id="Caption">개별발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1312</Col>
</Row>
<Row>
<Col id="UserData">자매사 발령 관리</Col>
<Col id="Caption">자매사 발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1313</Col>
</Row>
<Row>
<Col id="UserData">발령조회(전사원)</Col>
<Col id="Caption">발령조회(전사원)</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1314</Col>
</Row>
<Row>
<Col id="UserData">사외파견</Col>
<Col id="Caption">사외파견</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1400</Col>
</Row>
<Row>
<Col id="UserData">사외파견 인력관리</Col>
<Col id="Caption">사외파견 인력관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1401</Col>
</Row>
<Row>
<Col id="UserData">노조관리</Col>
<Col id="Caption">노조관리</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1500</Col>
</Row>
<Row>
<Col id="UserData">인적사항(노조)</Col>
<Col id="Caption">인적사항(노조)</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1501</Col>
</Row>
<Row>
<Col id="UserData">노조원 관리</Col>
<Col id="Caption">노조원 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1502</Col>
</Row>
<Row>
<Col id="UserData">노조원직책 관리</Col>
<Col id="Caption">노조원직책 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1503</Col>
</Row>
<Row>
<Col id="UserData">노조비공제 현황</Col>
<Col id="Caption">노조비공제 현황</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1504</Col>
</Row>
<Row>
<Col id="UserData">노조원 현황</Col>
<Col id="Caption">노조원 현황</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1505</Col>
</Row>
<Row>
<Col id="UserData">사내공모</Col>
<Col id="Caption">사내공모</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1600</Col>
</Row>
<Row>
<Col id="UserData">사내공모 공고 관리</Col>
<Col id="Caption">사내공모 공고 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1601</Col>
</Row>
<Row>
<Col id="UserData">사내공모 신청</Col>
<Col id="Caption">사내공모 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1602</Col>
</Row>
<Row>
<Col id="UserData">사내공모 관리</Col>
<Col id="Caption">사내공모 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1603</Col>
</Row>
<Row>
<Col id="UserData">사내공모 이력 조회</Col>
<Col id="Caption">사내공모 이력 조회</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1604</Col>
</Row>
<Row>
<Col id="UserData">통계정보</Col>
<Col id="Caption">통계정보</Col>
<Col id="lev">0</Col>
<Col id="idx">1700</Col>
</Row>
</Rows>
</Dataset>
</Objects>
<Script type="xscript4.0"><![CDATA[function Button00_onclick(obj:Button, e:ClickEventInfo)
{
var nX = system.clientToScreenX(obj, 0);
var nY = system.clientToScreenY(obj, obj.position.height);
pMenu.trackPopup(nX, nY);
}
]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,492 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_06" classname="COMP_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="Alert,Confirm">
<Layouts>
<Layout>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;"/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static10" text="Alert" position="absolute 0 25 130 285" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 25 765 285" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Button id="BtnAlertDefault" taborder="1" text="Alert(&quot;디폴트내용&quot;, &quot;디폴트타이틀&quot;, &quot;default&quot;)" onclick="BtnAlertDefault_onclick" position="absolute 222 36 574 61" tooltiptext="Alert(&quot;디폴트내용&quot;, &quot;디폴트타이틀&quot;, &quot;default&quot;)" style="padding:0 0 0 20;align:left;"/>
<Static id="Static15" text="default" position="absolute 153 41 213 56" style="color:#999999ff;align:right;font:Tahoma,8;"/>
<Static id="Static16" text="error" position="absolute 153 93 213 108" style="color:#999999ff;align:right;font:Tahoma,8;"/>
<Static id="Static17" text="question" position="absolute 153 145 213 160" style="color:#999999ff;align:right;font:Tahoma,8;"/>
<Button id="BtnAlertQuestion" taborder="2" text="Alert(&quot;Question내용&quot;, &quot;Question&quot;, &quot;question&quot;)" onclick="BtnAlertQuestion_onclick" position="absolute 222 140 574 165" tooltiptext="Alert(&quot;Question내용&quot;, &quot;Question&quot;, &quot;question&quot;)" style="padding:0 0 0 20;align:left;"/>
<Button id="BtnAlertError" taborder="3" text="Alert(&quot;Error내용&quot;, &quot;Error&quot;, &quot;error&quot;)" onclick="BtnAlertError_onclick" position="absolute 222 88 574 113" tooltiptext="Alert(&quot;Error내용&quot;, &quot;Error&quot;, &quot;error&quot;)" style="padding:0 0 0 20;align:left;"/>
<Static id="Static18" text="warning" position="absolute 153 197 213 212" style="color:#999999ff;align:right;font:Tahoma,8;"/>
<Static id="Static19" text="information" position="absolute 153 249 213 264" style="color:#999999ff;align:right;font:Tahoma,8;"/>
<Button id="BtnAlertInformation" taborder="4" text="Alert(&quot;Information내용&quot;, &quot;Information&quot;, &quot;information&quot;)" onclick="BtnAlertInformation_onclick" position="absolute 222 244 574 269" tooltiptext="Alert(&quot;Information내용&quot;, &quot;Information&quot;, &quot;information&quot;)" style="padding:0 0 0 20;align:left;"/>
<Button id="BtnAlertWarning" taborder="5" text="Alert(&quot;Warning내용&quot;, &quot;Warning&quot;, &quot;warning&quot;)" onclick="BtnAlertWarning_onclick" position="absolute 222 192 574 217" tooltiptext="Alert(&quot;Warning내용&quot;, &quot;Warning&quot;, &quot;warning&quot;)" style="padding:0 0 0 20;align:left;"/>
<Static id="Static00" text="Confirm" position="absolute 0 284 130 544" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static03" position="absolute 129 284 765 544" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Button id="BtnConfirmDefault" taborder="6" text="Confirm(&quot;디폴트내용&quot;, &quot;디폴트타이틀&quot;, &quot;default&quot;)" onclick="BtnConfirmDefault_onclick" position="absolute 222 295 574 320" tooltiptext="Confirm(&quot;디폴트내용&quot;, &quot;디폴트타이틀&quot;, &quot;default&quot;)" style="padding:0 0 0 20;align:left;"/>
<Button id="BtnConfirmError" taborder="7" text="Confirm(&quot;Error내용&quot;, &quot;Error&quot;, &quot;error&quot;)" onclick="BtnConfirmError_onclick" position="absolute 222 347 574 372" tooltiptext="Confirm(&quot;Error내용&quot;, &quot;Error&quot;, &quot;error&quot;)" style="padding:0 0 0 20;align:left;"/>
<Button id="BtnConfirmQuestion" taborder="8" text="Confirm(&quot;Question내용&quot;, &quot;Question&quot;, &quot;question&quot;)" onclick="BtnConfirmQuestion_onclick" position="absolute 222 399 574 424" tooltiptext="Confirm(&quot;Question내용&quot;, &quot;Question&quot;, &quot;question&quot;)" style="padding:0 0 0 20;align:left;"/>
<Button id="BtnConfirmWarning" taborder="9" text="Confirm(&quot;Warning내용&quot;, &quot;Warning&quot;, &quot;warning&quot;)" onclick="BtnConfirmWarning_onclick" position="absolute 222 451 574 476" tooltiptext="Confirm(&quot;Warning내용&quot;, &quot;Warning&quot;, &quot;warning&quot;)" style="padding:0 0 0 20;align:left;"/>
<Button id="BtnConfirmInformation" taborder="10" text="Confirm(&quot;Information내용&quot;, &quot;Information&quot;, &quot;information&quot;)" onclick="BtnConfirmInformation_onclick" position="absolute 222 503 574 528" tooltiptext="Confirm(&quot;Information내용&quot;, &quot;Information&quot;, &quot;information&quot;)" style="padding:0 0 0 20;align:left;"/>
<Static id="Static04" text="default" position="absolute 153 300 213 315" style="color:#999999ff; align:right; font:Tahoma,8; "/>
<Static id="Static05" text="error" position="absolute 153 352 213 367" style="color:#999999ff; align:right; font:Tahoma,8; "/>
<Static id="Static06" text="question" position="absolute 153 404 213 419" style="color:#999999ff; align:right; font:Tahoma,8; "/>
<Static id="Static07" text="warning" position="absolute 153 456 213 471" style="color:#999999ff; align:right; font:Tahoma,8; "/>
<Static id="Static08" text="information" position="absolute 153 508 213 523" style="color:#999999ff; align:right; font:Tahoma,8; "/>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_menu" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="idx" type="STRING" size="256"/>
<Column id="lev" type="STRING" size="256"/>
<Column id="UserData" type="STRING" size="256"/>
<Column id="Caption" type="STRING" size="256"/>
<Column id="enable" type="STRING" size="256"/>
<Column id="hotkey" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="lev">0</Col>
<Col id="UserData">인사관리</Col>
<Col id="Caption">인사관리</Col>
<Col id="enable">1</Col>
<Col id="idx">1000</Col>
</Row>
<Row>
<Col id="UserData">인사마스터생성</Col>
<Col id="Caption">인사마스터생성</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1001</Col>
</Row>
<Row>
<Col id="UserData">인적사항</Col>
<Col id="Caption">인적사항</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="hotkey">Alt+K</Col>
<Col id="idx">1002</Col>
</Row>
<Row>
<Col id="UserData">개인사진등록 신청</Col>
<Col id="Caption">개인사진등록 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1003</Col>
</Row>
<Row>
<Col id="UserData">개인사진등록 관리(승인 )</Col>
<Col id="Caption">개인사진등록 관리(승인 )</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1004</Col>
</Row>
<Row>
<Col id="UserData">보훈자 관리</Col>
<Col id="Caption">보훈자 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1005</Col>
</Row>
<Row>
<Col id="UserData">징계 관리</Col>
<Col id="Caption">징계 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1006</Col>
</Row>
<Row>
<Col id="UserData">포상 등록 신청</Col>
<Col id="Caption">포상 등록 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">0</Col>
<Col id="idx">1007</Col>
</Row>
<Row>
<Col id="UserData">포상 관리(승인 )</Col>
<Col id="Caption">포상 관리(승인 )</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1008</Col>
</Row>
<Row>
<Col id="UserData">신원보증관리</Col>
<Col id="Caption">신원보증관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1009</Col>
</Row>
<Row>
<Col id="UserData">증명서 관리</Col>
<Col id="Caption">증명서 관리</Col>
<Col id="lev">2</Col>
<Col id="enable">0</Col>
<Col id="idx">1010</Col>
</Row>
<Row>
<Col id="UserData">개인정보(특이사항) 관리</Col>
<Col id="Caption">개인정보(특이사항) 관리</Col>
<Col id="lev">2</Col>
<Col id="enable">1</Col>
<Col id="idx">1011</Col>
</Row>
<Row>
<Col id="UserData">인원현황</Col>
<Col id="Caption">인원현황</Col>
<Col id="lev">2</Col>
<Col id="enable">1</Col>
<Col id="idx">1012</Col>
</Row>
<Row>
<Col id="UserData">인원현황 보고서</Col>
<Col id="Caption">인원현황 보고서</Col>
<Col id="lev">2</Col>
<Col id="enable">1</Col>
<Col id="idx">1013</Col>
</Row>
<Row>
<Col id="UserData">재고용대상자</Col>
<Col id="Caption">재고용대상자</Col>
<Col id="lev">2</Col>
<Col id="enable">1</Col>
<Col id="idx">1014</Col>
</Row>
<Row>
<Col id="UserData">연령별인원현황</Col>
<Col id="Caption">연령별인원현황</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1015</Col>
</Row>
<Row>
<Col id="UserData">인사기록카드 출력</Col>
<Col id="Caption">인사기록카드 출력</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1016</Col>
</Row>
<Row>
<Col id="UserData">기념일 조회</Col>
<Col id="Caption">기념일 조회</Col>
<Col id="lev">1</Col>
<Col id="enable">0</Col>
<Col id="idx">1017</Col>
</Row>
<Row>
<Col id="lev">0</Col>
<Col id="UserData">인사관리(개인)</Col>
<Col id="Caption">인사관리(개인)</Col>
<Col id="enable">1</Col>
<Col id="idx">1100</Col>
</Row>
<Row>
<Col id="UserData">인적사항(개인)</Col>
<Col id="Caption">인적사항(개인)</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1101</Col>
</Row>
<Row>
<Col id="UserData">증명서인쇄</Col>
<Col id="Caption">증명서인쇄</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1102</Col>
</Row>
<Row>
<Col id="UserData">재고용신청서</Col>
<Col id="Caption">재고용신청서</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1103</Col>
</Row>
<Row>
<Col id="UserData">조직 및 사원조회</Col>
<Col id="Caption">조직 및 사원조회</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1104</Col>
</Row>
<Row>
<Col id="UserData">개인사진등록 신청</Col>
<Col id="Caption">개인사진등록 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">0</Col>
<Col id="idx">1105</Col>
</Row>
<Row>
<Col id="UserData">포상 등록 신청</Col>
<Col id="Caption">포상 등록 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1106</Col>
</Row>
<Row>
<Col id="UserData">인사정보조회</Col>
<Col id="Caption">인사정보조회</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1200</Col>
</Row>
<Row>
<Col id="UserData">인적사항(인사위)</Col>
<Col id="Caption">인적사항(인사위)</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1201</Col>
</Row>
<Row>
<Col id="UserData">발령관리</Col>
<Col id="Caption">발령관리</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1300</Col>
</Row>
<Row>
<Col id="UserData">발령코드관리</Col>
<Col id="Caption">발령코드관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1301</Col>
</Row>
<Row>
<Col id="UserData">일괄발령 관리</Col>
<Col id="Caption">일괄발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1302</Col>
</Row>
<Row>
<Col id="UserData">연례호봉발령 관리</Col>
<Col id="Caption">연례호봉발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1303</Col>
</Row>
<Row>
<Col id="UserData">승진발령 관리</Col>
<Col id="Caption">승진발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1304</Col>
</Row>
<Row>
<Col id="UserData">승진자 DM주소 출력</Col>
<Col id="Caption">승진자 DM주소 출력</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="hotkey">Alt+O</Col>
<Col id="idx">1305</Col>
</Row>
<Row>
<Col id="UserData">특별호봉승급 관리</Col>
<Col id="Caption">특별호봉승급 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1306</Col>
</Row>
<Row>
<Col id="UserData">재계약 대상자 관리</Col>
<Col id="Caption">재계약 대상자 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1307</Col>
</Row>
<Row>
<Col id="UserData">발령 추천서 작성</Col>
<Col id="Caption">발령 추천서 작성</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1308</Col>
</Row>
<Row>
<Col id="UserData">발령 추천자 지정</Col>
<Col id="Caption">발령 추천자 지정</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1309</Col>
</Row>
<Row>
<Col id="UserData">발령 추천서 승인</Col>
<Col id="Caption">발령 추천서 승인</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1310</Col>
</Row>
<Row>
<Col id="UserData">재고용추천</Col>
<Col id="Caption">재고용추천</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1311</Col>
</Row>
<Row>
<Col id="UserData">개별발령 관리</Col>
<Col id="Caption">개별발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1312</Col>
</Row>
<Row>
<Col id="UserData">자매사 발령 관리</Col>
<Col id="Caption">자매사 발령 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1313</Col>
</Row>
<Row>
<Col id="UserData">발령조회(전사원)</Col>
<Col id="Caption">발령조회(전사원)</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1314</Col>
</Row>
<Row>
<Col id="UserData">사외파견</Col>
<Col id="Caption">사외파견</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1400</Col>
</Row>
<Row>
<Col id="UserData">사외파견 인력관리</Col>
<Col id="Caption">사외파견 인력관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1401</Col>
</Row>
<Row>
<Col id="UserData">노조관리</Col>
<Col id="Caption">노조관리</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1500</Col>
</Row>
<Row>
<Col id="UserData">인적사항(노조)</Col>
<Col id="Caption">인적사항(노조)</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1501</Col>
</Row>
<Row>
<Col id="UserData">노조원 관리</Col>
<Col id="Caption">노조원 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1502</Col>
</Row>
<Row>
<Col id="UserData">노조원직책 관리</Col>
<Col id="Caption">노조원직책 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1503</Col>
</Row>
<Row>
<Col id="UserData">노조비공제 현황</Col>
<Col id="Caption">노조비공제 현황</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1504</Col>
</Row>
<Row>
<Col id="UserData">노조원 현황</Col>
<Col id="Caption">노조원 현황</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1505</Col>
</Row>
<Row>
<Col id="UserData">사내공모</Col>
<Col id="Caption">사내공모</Col>
<Col id="lev">0</Col>
<Col id="enable">1</Col>
<Col id="idx">1600</Col>
</Row>
<Row>
<Col id="UserData">사내공모 공고 관리</Col>
<Col id="Caption">사내공모 공고 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1601</Col>
</Row>
<Row>
<Col id="UserData">사내공모 신청</Col>
<Col id="Caption">사내공모 신청</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1602</Col>
</Row>
<Row>
<Col id="UserData">사내공모 관리</Col>
<Col id="Caption">사내공모 관리</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1603</Col>
</Row>
<Row>
<Col id="UserData">사내공모 이력 조회</Col>
<Col id="Caption">사내공모 이력 조회</Col>
<Col id="lev">1</Col>
<Col id="enable">1</Col>
<Col id="idx">1604</Col>
</Row>
<Row>
<Col id="UserData">통계정보</Col>
<Col id="Caption">통계정보</Col>
<Col id="lev">0</Col>
<Col id="idx">1700</Col>
</Row>
</Rows>
</Dataset>
</Objects>
<Script type="xscript4.0"><![CDATA[function BtnAlertDefault_onclick(obj:Button, e:ClickEventInfo)
{
alert("디폴트내용", "Default", "default");
}
function BtnAlertError_onclick(obj:Button, e:ClickEventInfo)
{
alert("Error내용", "Error", "error");
}
function BtnAlertQuestion_onclick(obj:Button, e:ClickEventInfo)
{
alert("Question내용", "Question", "question");
}
function BtnAlertWarning_onclick(obj:Button, e:ClickEventInfo)
{
alert("Warning내용", "Warning", "warning");
}
function BtnAlertInformation_onclick(obj:Button, e:ClickEventInfo)
{
alert("Information내용", "Information", "information");
}
function BtnConfirmDefault_onclick(obj:Button, e:ClickEventInfo)
{
confirm("디폴트내용", "Default", "default");
}
function BtnConfirmError_onclick(obj:Button, e:ClickEventInfo)
{
confirm("Error내용", "Error", "error");
}
function BtnConfirmQuestion_onclick(obj:Button, e:ClickEventInfo)
{
confirm("Question내용", "Question", "question");
}
function BtnConfirmWarning_onclick(obj:Button, e:ClickEventInfo)
{
confirm("Warning내용", "Warning", "warning");
}
function BtnConfirmInformation_onclick(obj:Button, e:ClickEventInfo)
{
confirm("Information내용", "Information", "information");
}]]></Script>
</Form>
</FDL>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,257 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_06" classname="COMP_GUIDE_01" inheritanceid="" position="absolute 0 0 765 540" titletext="Grid #2">
<Layouts>
<Layout>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff;border:1 solid #c6c6c5ff ;align:center middle;font:Tahoma,9,bold antialias;"/>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static10" text="Grid" position="absolute 0 25 130 530" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 25 765 530" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Grid id="GrdList" taborder="1" binddataset="DsDataset" scrollbars="alwaysvert" autoenter="select" useinputpanel="false" cellsizingtype="col" autofittype="col" position="absolute 148 83 735 168">
<Formats>
<Format id="default">
<Columns>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
</Columns>
<Rows>
<Row size="22" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell text="normal"/>
<Cell col="1" colspan="2" displaytype="text" edittype="text" text="text"/>
<Cell col="3" text="number"/>
<Cell col="4" text="date"/>
<Cell col="5" text="mask" editautoselect="true"/>
</Band>
<Band id="body">
<Cell edittype="normal" text="bind:Column0" editautoselect="true"/>
<Cell col="1" edittype="text" text="bind:Column1" editautoselect="true"/>
<Cell col="2" edittype="textarea" text="bind:Column2"/>
<Cell col="3" displaytype="number" edittype="normal" editfilter="number" style="align:right;" text="bind:Column3" editautoselect="true"/>
<Cell col="4" displaytype="date" edittype="date" text="bind:Column4"/>
<Cell col="5" edittype="mask" text="bind:Column5" mask="######-#######"/>
</Band>
</Format>
</Formats>
</Grid>
<Grid id="GrdList2" taborder="2" binddataset="DsDataset" scrollbars="alwaysvert" autoenter="select" useinputpanel="false" autofittype="col" oncellclick="GrdList2_oncellclick" onexpanddown="GrdList2_onexpanddown" position="absolute 148 176 735 261">
<Formats>
<Format id="default">
<Columns>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
</Columns>
<Rows>
<Row size="22" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell text="combo"/>
<Cell col="1" text="button"/>
<Cell col="2" text="checkbox"/>
<Cell col="3" text="expand"/>
<Cell col="4" text="image"/>
</Band>
<Band id="body">
<Cell displaytype="combo" edittype="combo" text="bind:Column6" combodataset="DsCombo" combocodecol="cd" combodatacol="nm"/>
<Cell col="1" displaytype="button" edittype="button" text="bind:Column7"/>
<Cell col="2" displaytype="checkbox" edittype="checkbox" text="bind:Column8"/>
<Cell col="3" edittype="expand" text="bind:Column9" expandshow="show" expandsize="20"/>
<Cell col="4" displaytype="image" text="bind:Column10"/>
</Band>
</Format>
</Formats>
</Grid>
<Grid id="GrdList4" taborder="3" binddataset="DsDataset" scrollbars="alwaysvert" autoenter="select" useinputpanel="false" autofittype="col" oncellclick="GrdList2_oncellclick" onexpanddown="GrdList2_onexpanddown" position="absolute 148 411 735 496" style="background:#ffffffff; ">
<Formats>
<Format id="default">
<Columns>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
</Columns>
<Rows>
<Row size="22" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell text="combo"/>
<Cell col="1" text="button"/>
<Cell col="2" text="checkbox"/>
<Cell col="3" text="expand"/>
<Cell col="4" text="image"/>
</Band>
<Band id="body">
<Cell displaytype="combo" edittype="combo" text="bind:Column6" combodataset="DsCombo" combocodecol="cd" combodatacol="nm" combodisplay="display"/>
<Cell col="1" displaytype="button" edittype="button" text="bind:Column7"/>
<Cell col="2" displaytype="checkbox" edittype="checkbox" text="bind:Column8"/>
<Cell col="3" edittype="expand" text="bind:Column9" expandshow="show" expandsize="20"/>
<Cell col="4" displaytype="image" text="bind:Column10"/>
</Band>
</Format>
</Formats>
</Grid>
<Grid id="GrdList3" taborder="4" binddataset="DsDataset" scrollbars="alwaysvert" autoenter="select" useinputpanel="false" autofittype="col" position="absolute 148 316 735 401">
<Formats>
<Format id="default">
<Columns>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
<Column size="140"/>
</Columns>
<Rows>
<Row size="22" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell text="normal"/>
<Cell col="1" displaytype="text" edittype="text" text="text"/>
<Cell col="2" text="textarea"/>
<Cell col="3" text="number"/>
<Cell col="4" text="date"/>
<Cell col="5" text="mask" editautoselect="true"/>
</Band>
<Band id="body">
<Cell edittype="normal" text="bind:Column0" editautoselect="true"/>
<Cell col="1" edittype="text" text="bind:Column1" editautoselect="true" editdisplay="display"/>
<Cell col="2" edittype="textarea" text="bind:Column2" editdisplay="display"/>
<Cell col="3" displaytype="number" edittype="normal" editfilter="number" style="align:right;" text="bind:Column3" editautoselect="true" editdisplay="display"/>
<Cell col="4" displaytype="date" edittype="date" text="bind:Column4" calendardisplay="display"/>
<Cell col="5" edittype="mask" text="bind:Column5" mask="######-#######" editdisplay="display"/>
</Band>
</Format>
</Formats>
</Grid>
<Static id="Static27" text="Grid Cell Display Normal" class="sta_WF_TitleLev1" position="absolute 148 64 353 84"/>
<Static id="Static00" text="Grid Cell Display True" class="sta_WF_TitleLev1" position="absolute 148 297 353 317"/>
<Button id="btn_GCancel" taborder="5" text="초기화" onclick="f_GCancel" position="absolute 679 58 735 78"/>
</Layout>
</Layouts>
<Objects>
<Dataset enableevent="true" firefirstcount="0" firenextcount="0" id="DsDataset" preload="true" updatecontrol="true" useclientlayout="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
<Column id="Column2" type="STRING" size="256"/>
<Column id="Column3" type="INT" size="256"/>
<Column id="Column4" type="STRING" size="256"/>
<Column id="Column5" type="STRING" size="256"/>
<Column id="Column6" type="STRING" size="256"/>
<Column id="Column7" type="STRING" size="256"/>
<Column id="Column8" type="STRING" size="256"/>
<Column id="Column9" type="STRING" size="256"/>
<Column id="Column10" type="STRING" size="256"/>
<Column id="Column11" type="STRING" size="256"/>
<Column id="Column12" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="Column0">1234가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2"/>
<Col id="Column3"/>
<Col id="Column4"/>
<Col id="Column5"/>
<Col id="Column6">2</Col>
<Col id="Column7">test</Col>
<Col id="Column8"/>
<Col id="Column9"/>
<Col id="Column10"/>
<Col id="Column11"/>
<Col id="Column12"/>
</Row>
<Row>
<Col id="Column0"/>
<Col id="Column1"/>
<Col id="Column2"/>
<Col id="Column3"/>
<Col id="Column4"/>
<Col id="Column5"/>
<Col id="Column6"/>
<Col id="Column7"/>
<Col id="Column8"/>
<Col id="Column9"/>
<Col id="Column10"/>
<Col id="Column11"/>
<Col id="Column12"/>
</Row>
<Row>
<Col id="Column0"/>
<Col id="Column1"/>
<Col id="Column2"/>
<Col id="Column3"/>
<Col id="Column4"/>
<Col id="Column5"/>
<Col id="Column6"/>
<Col id="Column7"/>
<Col id="Column8"/>
<Col id="Column9"/>
<Col id="Column10"/>
<Col id="Column11"/>
<Col id="Column12"/>
</Row>
<Row>
<Col id="Column0"/>
<Col id="Column1"/>
<Col id="Column2"/>
<Col id="Column3"/>
<Col id="Column4"/>
<Col id="Column5"/>
<Col id="Column6"/>
<Col id="Column7"/>
<Col id="Column8"/>
<Col id="Column9"/>
<Col id="Column10"/>
<Col id="Column11"/>
<Col id="Column12"/>
</Row>
</Rows>
</Dataset>
<Dataset id="DsCombo" preload="true" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep">
<ColumnInfo>
<Column id="cd" type="STRING" size="256"/>
<Column id="nm" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="cd">1</Col>
<Col id="nm">item 1</Col>
</Row>
<Row>
<Col id="cd">2</Col>
<Col id="nm">item 2</Col>
</Row>
<Row>
<Col id="cd">3</Col>
<Col id="nm">item 3</Col>
</Row>
</Rows>
</Dataset>
</Objects>
<Script type="xscript4.0"><![CDATA[/************************************************************************************************
* FORM 공통 FUNCTION 영역
************************************************************************************************/
function f_GCancel()
{
// Dataset 초기화
DsDataset.reset();
}
]]></Script>
</Form>
</FDL>

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_09" classname="COMP_GUIDE_09" inheritanceid="" position="absolute 0 0 765 540" titletext="Tab #1">
<Layouts>
<Layout>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static10" text="Tab" position="absolute 0 25 130 530" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static11" position="absolute 129 25 765 530" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Tab id="Tab00" taborder="1" tabindex="0" scrollbars="autoboth" position="absolute 152 52 742 177">
<Tabpages>
<Tabpage id="tabpage1" text="탭페이지01"/>
<Tabpage id="tabpage2" text="탭페이지02"/>
<Tabpage id="tabpage3" text="탭페이지03"/>
<Tabpage id="tabpage4" text="탭페이지04"/>
<Tabpage id="tabpage5" text="탭페이지05"/>
<Tabpage id="tabpage6" text="탭페이지06"/>
<Tabpage id="tabpage7" text="탭페이지07"/>
<Tabpage id="tabpage8" text="탭페이지08"/>
</Tabpages>
</Tab>
<Tab id="Tab01" taborder="2" tabindex="0" scrollbars="autoboth" position="absolute 152 222 742 322" tabjustify="true">
<Tabpages>
<Tabpage id="tabpage1" text="탭페이지01"/>
<Tabpage id="tabpage2" text="탭페이지02"/>
<Tabpage id="tabpage3" text="탭페이지03"/>
<Tabpage id="tabpage4" text="탭페이지04"/>
</Tabpages>
</Tab>
<Static id="Static15" text="tabjustify = &quot;&lt;b v='true'&gt;true&lt;/b&gt;&quot;" position="absolute 152 204 331 219" style="font:Tahoma,8;" usedecorate="true" class="sta_WF_Info_Orange"/>
<Tab id="Tab02" taborder="3" tabindex="0" scrollbars="autoboth" position="absolute 152 370 377 495" multiline="true">
<Tabpages>
<Tabpage id="tabpage1" text="탭페이지01"/>
<Tabpage id="tabpage2" text="탭페이지02"/>
<Tabpage id="tabpage3" text="탭페이지03"/>
<Tabpage id="tabpage4" text="탭페이지04"/>
<Tabpage id="tabpage5" text="탭페이지05"/>
<Tabpage id="tabpage6" text="탭페이지06"/>
<Tabpage id="tabpage7" text="탭페이지07"/>
<Tabpage id="tabpage8" text="탭페이지08"/>
</Tabpages>
</Tab>
<Static id="Static00" text="multiline = &quot;&lt;b v='true'&gt;true&lt;/b&gt;&quot;" usedecorate="true" class="sta_WF_Info_Orange" position="absolute 152 352 331 367" style="font:Tahoma,8; "/>
<Tab id="Tab03" taborder="4" tabindex="0" scrollbars="autoboth" position="absolute 392 370 747 494" showextrabutton="true">
<Tabpages>
<Tabpage id="tabpage1" text="탭페이지01"/>
<Tabpage id="tabpage2" text="탭페이지02"/>
<Tabpage id="tabpage3" text="탭페이지03"/>
<Tabpage id="tabpage4" text="탭페이지04"/>
</Tabpages>
</Tab>
<Static id="Static03" text="showextrabutton = &quot;&lt;b v='true'&gt;true&lt;/b&gt;&quot;" usedecorate="true" class="sta_WF_Info_Orange" position="absolute 392 352 571 367" style="font:Tahoma,8; "/>
</Layout>
</Layouts>
</Form>
</FDL>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="COMP_GUIDE_09" classname="COMP_GUIDE_09" inheritanceid="" position="absolute 0 0 765 540" titletext="Tab #2">
<Layouts>
<Layout>
<Static id="Static02" text="Component View" position="absolute 129 0 765 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static01" text="Component Name" position="absolute 0 0 130 26" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; "/>
<Static id="Static10" text="Tab&#13;&#10;&lt;b v='false'&gt;Attribute Selector&lt;/b&gt;" position="absolute 0 25 130 530" style="background:#edeee6ff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " usedecorate="true"/>
<Static id="Static11" position="absolute 129 25 765 530" style="background:#ffffffff; border:1 solid #c6c6c5ff ; align:center middle; font:Tahoma,9,bold antialias; " text=""/>
<Tab id="Tab01" taborder="2" tabindex="0" scrollbars="autoboth" position="absolute 152 181 742 261" tabposition="left">
<Tabpages>
<Tabpage id="tabpage1" text="탭페이지01"/>
<Tabpage id="tabpage2" text="탭페이지02"/>
<Tabpage id="tabpage3" text="탭페이지03"/>
</Tabpages>
</Tab>
<Static id="Static15" text="tabposition = &quot;&lt;b v='true'&gt;left&lt;/b&gt;&quot;" position="absolute 152 164 331 179" style="font:Tahoma,8;" usedecorate="true" class="sta_WF_Info_Orange"/>
<Static id="Static00" text="tabposition = &quot;&lt;b v='true'&gt;right&lt;/b&gt;&quot;" usedecorate="true" class="sta_WF_Info_Orange" position="absolute 152 282 331 297" style="font:Tahoma,8; "/>
<Tab id="Tab00" taborder="3" tabindex="0" tabposition="right" scrollbars="autoboth" position="absolute 152 299 742 379">
<Tabpages>
<Tabpage id="tabpage1" text="탭페이지01"/>
<Tabpage id="tabpage2" text="탭페이지02"/>
<Tabpage id="tabpage3" text="탭페이지03"/>
</Tabpages>
</Tab>
<Static id="Static03" text="tabposition = &quot;&lt;b v='true'&gt;bottom&lt;/b&gt;&quot;" usedecorate="true" class="sta_WF_Info_Orange" position="absolute 152 405 331 420" style="font:Tahoma,8; "/>
<Tab id="Tab02" taborder="4" tabindex="0" tabposition="bottom" scrollbars="autoboth" position="absolute 152 422 742 517">
<Tabpages>
<Tabpage id="tabpage1" text="탭페이지01"/>
<Tabpage id="tabpage2" text="탭페이지02"/>
<Tabpage id="tabpage3" text="탭페이지03"/>
</Tabpages>
</Tab>
<Tab id="Tab03" taborder="5" tabindex="0" scrollbars="autoboth" position="absolute 152 54 742 134">
<Tabpages>
<Tabpage id="tabpage1" text="탭페이지01"/>
<Tabpage id="tabpage2" text="탭페이지02"/>
<Tabpage id="tabpage3" text="탭페이지03"/>
</Tabpages>
</Tab>
<Static id="Static04" text="tabposition = &quot;&lt;b v='true'&gt;top&lt;/b&gt;&quot;" usedecorate="true" class="sta_WF_Info_Orange" position="absolute 152 37 331 52" style="font:Tahoma,8; "/>
</Layout>
</Layouts>
</Form>
</FDL>

View File

@@ -0,0 +1,491 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="Work" classname="Work" inheritanceid="" position="absolute 0 0 765 540" titletext="Detail">
<Layouts>
<Layout>
<Button id="btn_WF_crud" taborder="2" text="저장" class="btn_WF_crud" position="absolute 715 56 765 76" anchor="top right"/>
<Static id="sta_WF_TitleLev1" text="기본정보" position="absolute 0 64 134 78" class="sta_WF_TitleLev1"/>
<Static id="sta_WFDA_Label17" text="진행상태" class="sta_WFDA_Label" position="absolute 0 81 105 107"/>
<Static id="sta_WFDA_Label18" class="sta_WFDA_Data" position="absolute 104 81 244 107" text=""/>
<Static id="sta_WFDA_Label19" text="반송사유" class="sta_WFDA_Label" position="absolute 243 81 348 107"/>
<Static id="sta_WFDA_Label20" class="sta_WFDA_Data" position="absolute 347 81 765 107" text="" anchor="left top right"/>
<Button id="btn_WF_crud00" taborder="38" text="삭제" class="btn_WF_crud" position="absolute 663 56 713 76" anchor="top right"/>
<Button id="btn_WF_crud01" taborder="41" text="추가" class="btn_WF_crud" position="absolute 611 56 661 76" anchor="top right"/>
<Static id="sta_WF_SearchBox" class="sta_WF_SearchBox" position="absolute 0 0 765 40" text="" anchor="left top right"/>
<Static id="sta_WFSA_LabelP" text="프로젝트코드/명 " class="sta_WFSA_LabelP" position="absolute 17 10 147 30" wordwrap="none"/>
<Button id="btn_WFSA_Search" taborder="42" text="조회" class="btn_WFSA_Search" position="absolute 700 10 750 32" anchor="top right"/>
<Button id="btn_WFSA_Search02" taborder="43" class="btn_WFSA_Search" position="absolute 195 10 215 30" style="image:URL('theme://images/ico_Search.png');"/>
<Edit id="Edit00" taborder="44" class="input_point" position="absolute 130 10 193 30"/>
<Edit id="Edit01" taborder="45" position="absolute 217 10 480 30"/>
<Static id="sta_WFDA_Label29" text="프로젝트" class="sta_WFDA_Label" position="absolute 0 106 105 132"/>
<Static id="sta_WFDA_Label30" class="sta_WFDA_Data" position="absolute 104 106 244 132" text=""/>
<Static id="sta_WFDA_Label31" text="발주번호" class="sta_WFDA_Label" position="absolute 243 106 348 132"/>
<Static id="sta_WFDA_Label32" class="sta_WFDA_Data" position="absolute 347 106 487 132" text=""/>
<Static id="sta_WFDA_Label33" text="공종" wordwrap="none" class="sta_WFDA_LabelP" position="absolute 486 106 591 132"/>
<Static id="sta_WFDA_Label34" class="sta_WFDA_Data" position="absolute 590 106 765 132" text="" anchor="left top right"/>
<Edit id="Edit03" taborder="49" position="absolute 108 84 228 104" value="작성중" readonly="true"/>
<Edit id="Edit04" taborder="50" position="absolute 351 84 746 104" readonly="true" value="내역 재검토중입니다."/>
<Static id="sta_WFDA_Label00" text="하도급공사명" class="sta_WFDA_LabelP" position="absolute 0 131 105 157"/>
<Static id="sta_WFDA_Label01" class="sta_WFDA_Data" position="absolute 104 131 244 157" text=""/>
<Static id="sta_WFDA_Label02" text="도급금액" class="sta_WFDA_Label" position="absolute 243 131 348 157"/>
<Static id="sta_WFDA_Label03" class="sta_WFDA_Data" position="absolute 347 131 487 157" text=""/>
<Static id="sta_WFDA_Label04" text="도급지분율" wordwrap="none" class="sta_WFDA_Label" position="absolute 486 131 591 157"/>
<Static id="sta_WFDA_Label05" class="sta_WFDA_Data" position="absolute 590 131 765 157" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label06" text="실행금액" class="sta_WFDA_Label" position="absolute 0 156 105 182"/>
<Static id="sta_WFDA_Label07" class="sta_WFDA_Data" position="absolute 104 156 244 182" text=""/>
<Static id="sta_WFDA_Label08" text="발주지분율" class="sta_WFDA_Label" position="absolute 243 156 348 182"/>
<Static id="sta_WFDA_Label09" class="sta_WFDA_Data" position="absolute 347 156 487 182" text=""/>
<Static id="sta_WFDA_Label10" text="발주구분" wordwrap="none" class="sta_WFDA_Label" position="absolute 486 156 591 182"/>
<Static id="sta_WFDA_Label11" class="sta_WFDA_Data" position="absolute 590 156 765 182" text="" anchor="left top right"/>
<Static id="sta_WF_TitleLev00" text="상세정보" class="sta_WF_TitleLev1" position="absolute 0 204 134 218"/>
<Static id="sta_WFDA_Label12" text="하도급공사기간" class="sta_WFDA_LabelP" position="absolute 0 221 105 247"/>
<Static id="sta_WFDA_Label13" class="sta_WFDA_Data" position="absolute 104 221 384 247" text=""/>
<Static id="sta_WFDA_Label14" text="과세/비과세" class="sta_WFDA_LabelP" position="absolute 383 221 488 247"/>
<Static id="sta_WFDA_Label15" class="sta_WFDA_Data" position="absolute 487 221 765 247" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label16" text="헌설실시" class="sta_WFDA_Label" position="absolute 0 246 105 272"/>
<Static id="sta_WFDA_Label21" class="sta_WFDA_Data" position="absolute 104 246 384 272" text=""/>
<Static id="sta_WFDA_Label22" text="헌설일시" class="sta_WFDA_LabelP" position="absolute 383 246 488 272"/>
<Static id="sta_WFDA_Label23" class="sta_WFDA_Data" position="absolute 487 246 765 272" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label24" text="헌설방법" class="sta_WFDA_Label" position="absolute 0 271 105 297"/>
<Static id="sta_WFDA_Label25" class="sta_WFDA_Data" position="absolute 104 271 384 297" text=""/>
<Static id="sta_WFDA_Label26" text="헌설담당자" class="sta_WFDA_LabelP" position="absolute 383 271 488 297"/>
<Static id="sta_WFDA_Label27" class="sta_WFDA_Data" position="absolute 487 271 765 297" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label28" text="헌설장소" class="sta_WFDA_LabelP" position="absolute 0 296 105 322"/>
<Static id="sta_WFDA_Label35" class="sta_WFDA_Data" position="absolute 104 296 384 322" text=""/>
<Static id="sta_WFDA_Label36" text="입찰담당자" class="sta_WFDA_LabelP" position="absolute 383 296 488 322"/>
<Static id="sta_WFDA_Label37" class="sta_WFDA_Data" position="absolute 487 296 765 322" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label38" text="공사개요" class="sta_WFDA_Label" position="absolute 0 321 105 540" anchor="left top bottom"/>
<Static id="sta_WFDA_Label39" class="sta_WFDA_Data" position="absolute 104 321 384 540" text="" anchor="left top bottom"/>
<Static id="sta_WFDA_Label40" text="특기사항" class="sta_WFDA_Label" position="absolute 383 321 488 540" anchor="left top bottom"/>
<Static id="sta_WFDA_Label41" class="sta_WFDA_Data" position="absolute 487 321 765 540" text="" anchor="all"/>
<Calendar id="Calendar00" taborder="51" position="absolute 108 224 198 244" dateformat="yyyy-MM-dd" value="20110615" class="input_point"/>
<Calendar id="Calendar01" taborder="52" value="20110615" text="2011-06-15" dateformat="yyyy-MM-dd" position="absolute 216 224 306 244" class="input_point"/>
<Radio id="Radio00" taborder="53" position="absolute 108 249 248 269" innerdataset="@ds_radio_00" codecolumn="Column0" datacolumn="Column1" columncount="2"/>
<Radio id="Radio01" taborder="54" columncount="2" innerdataset="@ds_radio_01" codecolumn="Column0" datacolumn="Column1" position="absolute 108 277 248 297" index="1" value="1"/>
<Edit id="Edit02" taborder="55" position="absolute 108 299 368 319" class="input_point"/>
<Edit id="Edit05" taborder="56" class="input_point" position="absolute 490 224 560 244"/>
<Calendar id="Calendar02" taborder="57" value="20110615" text="2011-06-15" dateformat="yyyy-MM-dd" class="input_point" position="absolute 490 249 580 269"/>
<Combo id="Combo00" taborder="58" text="24" position="absolute 584 249 624 269"/>
<Combo id="Combo01" taborder="59" position="absolute 647 249 687 269" text="59"/>
<Edit id="Edit06" taborder="60" class="input_point" position="absolute 490 274 580 294"/>
<Edit id="Edit07" taborder="61" class="input_point" position="absolute 490 299 580 319"/>
<Button id="btn_WFSA_Search00" taborder="62" class="btn_WFSA_Search" position="absolute 582 274 602 294" style="image:URL('theme://images/ico_Search.png'); "/>
<Button id="btn_WFSA_Search01" taborder="63" class="btn_WFSA_Search" position="absolute 582 299 602 319" style="image:URL('theme://images/ico_Search.png'); "/>
<TextArea id="TextArea00" taborder="64" position="absolute 108 324 368 537" anchor="left top bottom"/>
<TextArea id="TextArea01" taborder="65" position="absolute 490 324 750 537" anchor="all"/>
<Edit id="Edit08" taborder="66" position="absolute 108 109 228 129" readonly="true" value="테마프로젝트"/>
<Edit id="Edit09" taborder="67" position="absolute 108 134 228 154" class="input_point"/>
<MaskEdit id="MaskEdit01" taborder="70" position="absolute 351 134 441 154" readonly="true" value="1234567890" mask=","/>
<MaskEdit id="MaskEdit02" taborder="71" position="absolute 351 159 401 179" readonly="true" value="59.8"/>
<Edit id="Edit11" taborder="72" position="absolute 593 109 723 129" class="input_point"/>
<MaskEdit id="MaskEdit03" taborder="75" value="1234567890" text="1,234,567,890" readonly="true" mask="," position="absolute 108 159 198 179"/>
<Static id="Static00" text="원" position="absolute 442 134 457 154"/>
<Static id="Static01" text="%" position="absolute 397 159 412 179"/>
<Static id="Static02" text="원" position="absolute 196 159 211 179"/>
<MaskEdit id="MaskEdit04" taborder="76" value="59.8" text="59.8" readonly="true" position="absolute 593 134 643 154"/>
<Static id="Static03" text="%" position="absolute 639 134 654 154"/>
<Edit id="Edit10" taborder="77" value="2011-05-01-25" text="테마프로젝트" readonly="true" position="absolute 351 109 471 129"/>
<Combo id="Combo02" taborder="78" position="absolute 593 159 668 179" readonly="true" value="" index="-1" displaynulltext="본사"/>
<Static id="Static04" text="시" position="absolute 626 249 641 269"/>
<Static id="Static05" text="분" position="absolute 690 249 705 269"/>
<Static id="Static06" text="~" position="absolute 202 224 217 244"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_grid" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
<Column id="Column2" type="STRING" size="256"/>
<Column id="Column3" type="STRING" size="256"/>
<Column id="Column4" type="STRING" size="256"/>
<Column id="Column5" type="STRING" size="256"/>
<Column id="Column6" type="STRING" size="256"/>
<Column id="Column7" type="STRING" size="256"/>
<Column id="Column8" type="STRING" size="256"/>
<Column id="Column9" type="STRING" size="256"/>
<Column id="Column10" type="STRING" size="256"/>
<Column id="Column11" type="STRING" size="256"/>
<Column id="Column12" type="STRING" size="256"/>
<Column id="Column13" type="STRING" size="256"/>
<Column id="Column14" type="STRING" size="256"/>
<Column id="Column15" type="STRING" size="256"/>
<Column id="Column16" type="STRING" size="256"/>
<Column id="Column17" type="STRING" size="256"/>
<Column id="Column18" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column9">가나다라</Col>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column18">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column10">가나다라</Col>
</Row>
<Row>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
</Row>
<Row>
<Col id="Column18">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column0">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
</Rows>
</Dataset>
<Dataset id="ds_radio_01" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="Column0">0</Col>
<Col id="Column1">온라인</Col>
</Row>
<Row>
<Col id="Column0">1</Col>
<Col id="Column1">오프라인</Col>
</Row>
</Rows>
</Dataset>
<Dataset id="ds_radio_00" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="Column0">0</Col>
<Col id="Column1">예</Col>
</Row>
<Row>
<Col id="Column0">1</Col>
<Col id="Column1">아니오</Col>
</Row>
</Rows>
</Dataset>
</Objects>
</Form>
</FDL>

View File

@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="Work" classname="Work" inheritanceid="" position="absolute 0 0 765 540" titletext="MultiDetail">
<Layouts>
<Layout>
<Static id="sta_WF_SearchBox" position="absolute 0 -1 765 40" class="sta_WF_SearchBox" text="" anchor="left top right"/>
<Static id="sta_WFSA_LabelP" text="사번/성명" position="absolute 17 9 97 29" class="sta_WFSA_LabelP"/>
<Static id="sta_WFSA_PointLabel00" text="조직 :" class="sta_WFSA_Label" position="absolute 320 9 365 29"/>
<Static id="sta_WFSA_PointLabel01" text="직위 :" class="sta_WFSA_Label" position="absolute 494 9 534 29"/>
<Button id="btn_WFSA_Search" taborder="1" text="조회" position="absolute 700 10 750 32" class="btn_WFSA_Search" anchor="top right"/>
<Grid id="Grid00" taborder="4" useinputpanel="false" position="absolute 0 81 765 540" binddataset="ds_grid" formats="&lt;Formats&gt;&#10; &lt;Format id=&quot;default&quot;&gt;&#10; &lt;Columns&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;/Columns&gt;&#10; &lt;Rows&gt;&#10; &lt;Row band=&quot;head&quot; size=&quot;24&quot;/&gt;&#10; &lt;Row band=&quot;body&quot; size=&quot;24&quot;/&gt;&#10; &lt;/Rows&gt;&#10; &lt;Band id=&quot;head&quot;&gt;&#10; &lt;Cell col=&quot;0&quot; disptype=&quot;normal&quot; text=&quot;Column0&quot;/&gt;&#10; &lt;Cell col=&quot;1&quot; disptype=&quot;normal&quot; text=&quot;Column1&quot;/&gt;&#10; &lt;Cell col=&quot;2&quot; disptype=&quot;normal&quot; text=&quot;Column2&quot;/&gt;&#10; &lt;Cell col=&quot;3&quot; disptype=&quot;normal&quot; text=&quot;Column3&quot;/&gt;&#10; &lt;Cell col=&quot;4&quot; disptype=&quot;normal&quot; text=&quot;Column4&quot;/&gt;&#10; &lt;Cell col=&quot;5&quot; disptype=&quot;normal&quot; text=&quot;Column5&quot;/&gt;&#10; &lt;Cell col=&quot;6&quot; disptype=&quot;normal&quot; text=&quot;Column6&quot;/&gt;&#10; &lt;Cell col=&quot;7&quot; disptype=&quot;normal&quot; text=&quot;Column7&quot;/&gt;&#10; &lt;Cell col=&quot;8&quot; disptype=&quot;normal&quot; text=&quot;Column8&quot;/&gt;&#10; &lt;Cell col=&quot;9&quot; disptype=&quot;normal&quot; text=&quot;Column9&quot;/&gt;&#10; &lt;/Band&gt;&#10; &lt;Band id=&quot;body&quot;&gt;&#10; &lt;Cell col=&quot;0&quot; disptype=&quot;normal&quot; text=&quot;bind:Column0&quot;/&gt;&#10; &lt;Cell col=&quot;1&quot; disptype=&quot;normal&quot; text=&quot;bind:Column1&quot;/&gt;&#10; &lt;Cell col=&quot;2&quot; disptype=&quot;normal&quot; text=&quot;bind:Column2&quot;/&gt;&#10; &lt;Cell col=&quot;3&quot; disptype=&quot;normal&quot; text=&quot;bind:Column3&quot;/&gt;&#10; &lt;Cell col=&quot;4&quot; disptype=&quot;normal&quot; text=&quot;bind:Column4&quot;/&gt;&#10; &lt;Cell col=&quot;5&quot; disptype=&quot;normal&quot; text=&quot;bind:Column5&quot;/&gt;&#10; &lt;Cell col=&quot;6&quot; disptype=&quot;normal&quot; text=&quot;bind:Column6&quot;/&gt;&#10; &lt;Cell col=&quot;7&quot; disptype=&quot;normal&quot; text=&quot;bind:Column7&quot;/&gt;&#10; &lt;Cell col=&quot;8&quot; disptype=&quot;normal&quot; text=&quot;bind:Column8&quot;/&gt;&#10; &lt;Cell col=&quot;9&quot; disptype=&quot;normal&quot; text=&quot;bind:Column9&quot;/&gt;&#10; &lt;/Band&gt;&#10; &lt;/Format&gt;&#10;&lt;/Formats&gt;&#10;" autofittype="none" anchor="all">
<Formats>
<Format id="default">
<Columns>
<Column size="70"/>
<Column size="80"/>
<Column size="80"/>
<Column size="140"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="100"/>
<Column size="80"/>
</Columns>
<Rows>
<Row size="22" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell text="진행상태"/>
<Cell col="1" text="공사구분"/>
<Cell col="2" text="발주번호"/>
<Cell col="3" text="하도급명"/>
<Cell col="4" text="공사기간"/>
<Cell col="5" text="실행금액"/>
<Cell col="6" text="요청자"/>
<Cell col="7" text="요청일"/>
<Cell col="8" text="구분"/>
</Band>
<Band id="body">
<Cell text="bind:Column0"/>
<Cell col="1" text="bind:Column1"/>
<Cell col="2" text="bind:Column2"/>
<Cell col="3" text="bind:Column3"/>
<Cell col="4" text="bind:Column4"/>
<Cell col="5" text="bind:Column5"/>
<Cell col="6" text="bind:Column6"/>
<Cell col="7" text="bind:Column7"/>
<Cell col="8" text="bind:Column8"/>
</Band>
</Format>
</Formats>
</Grid>
<Button id="btn_WFSA_Search02" taborder="5" class="btn_WFSA_Search" position="absolute 156 9 176 29" style="image:URL('theme://images/ico_Search.png');"/>
<Static id="sta_WF_TitleLev1" text="타이틀" position="absolute 0 59 134 73" class="sta_WF_TitleLev1"/>
<Edit id="Edit00" taborder="6" position="absolute 91 9 154 29" class="input_point"/>
<Edit id="Edit01" taborder="10" position="absolute 178 9 281 29" enable="false"/>
<Edit id="Edit02" taborder="11" position="absolute 354 9 472 29" readonly="true" value="컨설팅지원그룹"/>
<Edit id="Edit03" taborder="12" value="과장" text="컨설팅지원그룹" readonly="true" position="absolute 530 9 638 29"/>
<Button id="btn_WF_crud" taborder="13" text="저장" class="btn_WF_crud" position="absolute 714 56 764 76" anchor="top right"/>
<Button id="btn_WF_crud00" taborder="14" text="삭제" class="btn_WF_crud" position="absolute 662 56 712 76" anchor="top right"/>
<Button id="btn_WF_crud01" taborder="15" text="추가" class="btn_WF_crud" position="absolute 610 56 660 76" anchor="top right"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_grid" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
<Column id="Column2" type="STRING" size="256"/>
<Column id="Column3" type="STRING" size="256"/>
<Column id="Column4" type="STRING" size="256"/>
<Column id="Column5" type="STRING" size="256"/>
<Column id="Column6" type="STRING" size="256"/>
<Column id="Column7" type="STRING" size="256"/>
<Column id="Column8" type="STRING" size="256"/>
<Column id="Column9" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
</Rows>
</Dataset>
</Objects>
</Form>
</FDL>

View File

@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="Work" classname="Work" inheritanceid="" position="absolute 0 0 765 540" titletext="List/Detail">
<Layouts>
<Layout>
<Static id="sta_WFDA_Label" text="조직코드" position="absolute 0 349 95 375" class="sta_WFDA_LabelP"/>
<Static id="sta_WF_SearchBox" class="sta_WF_SearchBox" position="absolute 0 0 765 62" text="" anchor="left top right"/>
<Static id="sta_WFSA_PointLabel" text="기준일자" class="sta_WFSA_LabelP" position="absolute 17 10 102 30"/>
<Static id="sta_WFSA_PointLabel00" text="조직코드/명" class="sta_WFSA_Label" position="absolute 319 10 394 30"/>
<Button id="btn_WFSA_Search" taborder="10" text="조회" class="btn_WFSA_Search" position="absolute 703 31 753 53" anchor="top right"/>
<Static id="sta_WFSA_PointLabel02" text="사번/성명" class="sta_WFSA_LabelP" position="absolute 17 32 102 52"/>
<Static id="sta_WFSA_PointLabel03" text="근무지역" class="sta_WFSA_Label" position="absolute 319 32 394 52"/>
<Calendar id="Calendar00" taborder="11" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 91 10 181 30" class="input_point"/>
<Edit id="Edit00" taborder="13" position="absolute 394 10 459 30"/>
<Button id="btn_WFSA_Search02" taborder="14" class="btn_WFSA_Search" position="absolute 460 10 480 30" style="image:URL('theme://images/ico_Search.png'); "/>
<Edit id="Edit01" taborder="15" position="absolute 481 10 656 30"/>
<Combo id="Combo01" taborder="16" position="absolute 394 32 544 52"/>
<Static id="sta_WF_TitleLev00" text="타이틀" class="sta_WF_TitleLev1" position="absolute 0 80 134 94"/>
<Button id="btn_WF_crud03" taborder="20" text="저장" class="btn_WF_crud" position="absolute 715 324 765 344" anchor="top right"/>
<Button id="btn_WF_crud04" taborder="21" text="삭제" class="btn_WF_crud" position="absolute 663 324 713 344" anchor="top right"/>
<Button id="btn_WF_crud05" taborder="22" text="수정" class="btn_WF_crud" position="absolute 611 324 661 344" anchor="top right"/>
<Button id="btn_WF_crud06" taborder="23" text="추가" class="btn_WF_crud" position="absolute 559 324 609 344" anchor="top right"/>
<Static id="sta_WFDA_Label05" class="sta_WFDA_Data" position="absolute 94 349 239 375" text=""/>
<Static id="sta_WFDA_Label00" text="한글명" class="sta_WFDA_LabelP" position="absolute 238 349 333 375"/>
<Static id="sta_WFDA_Label02" text="순서/비과세" class="sta_WFDA_LabelP" position="absolute 0 399 95 425"/>
<Static id="sta_WFDA_Label03" text="폐쇠일자" class="sta_WFDA_Label" position="absolute 0 424 95 450"/>
<Static id="sta_WFDA_Label04" text="비고" class="sta_WFDA_Label" position="absolute 0 449 95 540" anchor="left top bottom"/>
<Static id="sta_WFDA_Label01" class="sta_WFDA_Data" position="absolute 94 374 502 400" text=""/>
<Static id="sta_WFDA_Label06" text="유효기간" class="sta_WFDA_LabelP" position="absolute 0 374 95 400"/>
<Edit id="Edit02" taborder="24" position="absolute 98 352 173 372" class="input_point"/>
<Calendar id="Calendar01" taborder="25" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 98 377 188 397" class="input_point"/>
<Calendar id="Calendar02" taborder="26" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 201 377 291 397" class="input_point"/>
<Static id="sta_WFDA_Label07" class="sta_WFDA_Data" position="absolute 332 349 502 375" text=""/>
<Static id="sta_WFDA_Label08" class="sta_WFDA_Data" position="absolute 595 349 765 375" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label09" text="영문명" class="sta_WFDA_Label" position="absolute 501 349 596 375"/>
<Edit id="Edit03" taborder="27" class="input_point" position="absolute 336 352 491 372"/>
<Edit id="Edit04" taborder="28" position="absolute 599 352 754 372"/>
<Static id="sta_WFDA_Label10" text="근무지역" class="sta_WFDA_LabelP" position="absolute 501 374 596 400"/>
<Static id="sta_WFDA_Label11" class="sta_WFDA_Data" position="absolute 595 374 765 400" text="" anchor="left top right"/>
<Combo id="Combo03" taborder="29" position="absolute 599 377 754 397"/>
<Static id="sta_WFDA_Label12" class="sta_WFDA_Data" position="absolute 94 399 239 425" text=""/>
<Static id="sta_WFDA_Label13" text="신설일자" class="sta_WFDA_Label" position="absolute 238 399 333 425"/>
<Static id="sta_WFDA_Label14" class="sta_WFDA_Data" position="absolute 332 399 502 425" text=""/>
<Static id="sta_WFDA_Label15" text="신설사유" class="sta_WFDA_Label" position="absolute 501 399 596 425"/>
<Static id="sta_WFDA_Label16" class="sta_WFDA_Data" position="absolute 595 399 765 425" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label17" class="sta_WFDA_Data" position="absolute 94 424 239 450" text=""/>
<Static id="sta_WFDA_Label18" text="한글명" class="sta_WFDA_Label" position="absolute 238 424 333 450"/>
<Static id="sta_WFDA_Label19" class="sta_WFDA_Data" position="absolute 332 424 765 450" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label22" class="sta_WFDA_Data" position="absolute 94 449 765 540" text="" anchor="all"/>
<Edit id="Edit05" taborder="30" class="input_point" position="absolute 98 402 163 422"/>
<CheckBox id="CheckBox00" taborder="31" position="absolute 180 402 235 422"/>
<Combo id="Combo04" taborder="32" position="absolute 599 402 754 422"/>
<Calendar id="Calendar03" taborder="33" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 336 402 426 422"/>
<Calendar id="Calendar04" taborder="34" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 98 427 188 447"/>
<Edit id="Edit06" taborder="35" position="absolute 336 427 754 447"/>
<TextArea id="TextArea00" taborder="36" position="absolute 98 452 754 537" anchor="all"/>
<Button id="Button00" taborder="37" text="엑셀다운로드" position="absolute 670 77 765 97" anchor="top right"/>
<Edit id="Edit07" taborder="38" class="input_point" position="absolute 91 32 154 52"/>
<Button id="btn_WFSA_Search00" taborder="39" class="btn_WFSA_Search" position="absolute 156 32 176 52" style="image:URL('theme://images/ico_Search.png'); "/>
<Edit id="Edit08" taborder="40" enable="false" position="absolute 178 32 281 52"/>
<Grid id="Grid00" taborder="41" binddataset="ds_grid" useinputpanel="false" autofittype="col" position="absolute 0 102 765 307" anchor="left top right">
<Formats>
<Format id="default">
<Columns>
<Column size="70"/>
<Column size="80"/>
<Column size="80"/>
<Column size="140"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="100"/>
<Column size="80"/>
</Columns>
<Rows>
<Row size="22" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell text="진행상태"/>
<Cell col="1" text="공사구분"/>
<Cell col="2" text="발주번호"/>
<Cell col="3" text="하도급명"/>
<Cell col="4" text="공사기간"/>
<Cell col="5" text="실행금액"/>
<Cell col="6" text="요청자"/>
<Cell col="7" text="요청일"/>
<Cell col="8" text="구분"/>
</Band>
<Band id="body">
<Cell text="bind:Column0"/>
<Cell col="1" text="bind:Column1"/>
<Cell col="2" text="bind:Column2"/>
<Cell col="3" text="bind:Column3"/>
<Cell col="4" text="bind:Column4"/>
<Cell col="5" text="bind:Column5"/>
<Cell col="6" text="bind:Column6"/>
<Cell col="7" text="bind:Column7"/>
<Cell col="8" text="bind:Column8"/>
</Band>
</Format>
</Formats>
</Grid>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_grid" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
<Column id="Column2" type="STRING" size="256"/>
<Column id="Column3" type="STRING" size="256"/>
<Column id="Column4" type="STRING" size="256"/>
<Column id="Column5" type="STRING" size="256"/>
<Column id="Column6" type="STRING" size="256"/>
<Column id="Column7" type="STRING" size="256"/>
<Column id="Column8" type="STRING" size="256"/>
<Column id="Column9" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
</Rows>
</Dataset>
</Objects>
</Form>
</FDL>

View File

@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="Work" classname="Work" inheritanceid="" position="absolute 0 0 765 540" titletext="Master/Detail (1:n)">
<Layouts>
<Layout>
<Static id="sta_WF_SearchBox" class="sta_WF_SearchBox" position="absolute 0 0 765 41" text="" anchor="left top right"/>
<Static id="sta_WFSA_LabelP" text="사번/성명" class="sta_WFSA_LabelP" position="absolute 17 10 97 30"/>
<Static id="sta_WFSA_PointLabel00" text="조직 :" class="sta_WFSA_Label" position="absolute 320 10 365 30"/>
<Static id="sta_WFSA_PointLabel01" text="직위 :" class="sta_WFSA_Label" position="absolute 494 10 534 30"/>
<Button id="btn_WFSA_Search" taborder="1" text="조회" class="btn_WFSA_Search" position="absolute 700 10 750 32" anchor="top right"/>
<Button id="btn_WFSA_Search02" taborder="2" class="btn_WFSA_Search" position="absolute 156 10 176 30" style="image:URL('theme://images/ico_Search.png'); "/>
<Edit id="Edit00" taborder="3" class="input_point" position="absolute 91 10 154 30"/>
<Edit id="Edit01" taborder="4" enable="false" position="absolute 178 10 281 30"/>
<Edit id="Edit02" taborder="5" value="컨설팅지원그룹" text="컨설팅지원그룹" readonly="true" position="absolute 354 10 472 30"/>
<Edit id="Edit03" taborder="6" value="과장" text="과장" readonly="true" position="absolute 530 10 638 30"/>
<Button id="btn_WF_crud" taborder="7" text="저장" class="btn_WF_crud" position="absolute 715 56 765 76" anchor="top right"/>
<Static id="sta_WF_TitleLev1" text="급여정보" class="sta_WF_TitleLev1" position="absolute 0 59 134 73"/>
<Static id="sta_WFDA_Label" text="시작일" class="sta_WFDA_LabelP" position="absolute 0 81 105 107"/>
<Static id="sta_WFDA_Label05" class="sta_WFDA_Data" position="absolute 104 81 244 107" text=""/>
<Calendar id="Calendar01" taborder="8" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" class="input_point" position="absolute 108 84 198 104"/>
<Static id="sta_WFDA_Label00" text="종료일" class="sta_WFDA_LabelP" position="absolute 243 81 348 107"/>
<Static id="sta_WFDA_Label01" class="sta_WFDA_Data" position="absolute 347 81 487 107" text=""/>
<Calendar id="Calendar02" taborder="9" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" class="input_point" position="absolute 351 84 441 104"/>
<Static id="sta_WFDA_Label02" text="급여지급여부" class="sta_WFDA_Label" position="absolute 486 81 616 107"/>
<Static id="sta_WFDA_Label03" class="sta_WFDA_Data" position="absolute 615 81 765 107" text="" anchor="left top right"/>
<Combo id="Combo03" taborder="10" position="absolute 619 84 704 104"/>
<Static id="sta_WFDA_Label04" text="기본급" class="sta_WFDA_LabelP" position="absolute 0 106 105 132"/>
<Static id="sta_WFDA_Label06" class="sta_WFDA_Data" position="absolute 104 106 244 132" text=""/>
<Static id="sta_WFDA_Label07" text="기본급(%)" class="sta_WFDA_LabelP" position="absolute 243 106 348 132"/>
<Static id="sta_WFDA_Label08" class="sta_WFDA_Data" position="absolute 347 106 487 132" text=""/>
<Static id="sta_WFDA_Label09" text="상여금(%)" class="sta_WFDA_LabelP" position="absolute 486 106 616 132"/>
<Static id="sta_WFDA_Label10" class="sta_WFDA_Data" position="absolute 615 106 765 132" text="" anchor="left top right"/>
<MaskEdit id="MaskEdit00" taborder="11" class="input_point" position="absolute 108 109 228 129"/>
<MaskEdit id="MaskEdit01" taborder="12" class="input_point" position="absolute 351 109 396 129"/>
<MaskEdit id="MaskEdit02" taborder="13" class="input_point" position="absolute 619 109 664 129"/>
<Static id="sta_WFDA_Label11" text="퇴직금기산일" class="sta_WFDA_Label" position="absolute 0 131 105 157"/>
<Static id="sta_WFDA_Label12" class="sta_WFDA_Data" position="absolute 104 131 244 157" text=""/>
<Static id="sta_WFDA_Label13" text="중간정산일" class="sta_WFDA_Label" position="absolute 243 131 348 157"/>
<Static id="sta_WFDA_Label14" class="sta_WFDA_Data" position="absolute 347 131 487 157" text=""/>
<Static id="sta_WFDA_Label15" text="중간정산횟수" class="sta_WFDA_Label" position="absolute 486 131 616 157"/>
<Static id="sta_WFDA_Label16" class="sta_WFDA_Data" position="absolute 615 131 765 157" text="" anchor="left top right"/>
<MaskEdit id="MaskEdit05" taborder="14" class="input_point" position="absolute 619 134 664 154"/>
<Calendar id="Calendar03" taborder="15" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" enable="false" position="absolute 108 134 198 154"/>
<Calendar id="Calendar04" taborder="16" value="20110620" text="2011-06-20" readonly="true" dateformat="yyyy-MM-dd" position="absolute 351 134 441 154"/>
<Static id="sta_WFDA_Label17" text="국민연금" class="sta_WFDA_Label" position="absolute 0 156 105 182"/>
<Static id="sta_WFDA_Label18" class="sta_WFDA_Data" position="absolute 104 156 244 182" text=""/>
<Static id="sta_WFDA_Label19" text="건강보험" class="sta_WFDA_Label" position="absolute 243 156 348 182"/>
<Static id="sta_WFDA_Label20" class="sta_WFDA_Data" position="absolute 347 156 487 182" text=""/>
<Static id="sta_WFDA_Label21" text="퇴직연금제도유형" wordwrap="none" class="sta_WFDA_Label" position="absolute 486 156 616 182"/>
<Static id="sta_WFDA_Label22" class="sta_WFDA_Data" position="absolute 615 156 765 182" text="" anchor="left top right"/>
<MaskEdit id="MaskEdit04" taborder="17" position="absolute 108 159 228 179"/>
<MaskEdit id="MaskEdit03" taborder="18" position="absolute 351 159 471 179"/>
<Combo id="Combo04" taborder="19" position="absolute 619 159 739 179"/>
<Static id="sta_WFDA_Label23" text="거래은행" class="sta_WFDA_Label" position="absolute 0 181 105 207"/>
<Static id="sta_WFDA_Label24" class="sta_WFDA_Data" position="absolute 104 181 244 207" text=""/>
<Static id="sta_WFDA_Label25" text="계좌번호" class="sta_WFDA_Label" position="absolute 243 181 348 207"/>
<Static id="sta_WFDA_Label26" class="sta_WFDA_Data" position="absolute 347 181 487 207" text=""/>
<Static id="sta_WFDA_Label27" text="예금주" wordwrap="none" class="sta_WFDA_Label" position="absolute 486 181 616 207"/>
<Static id="sta_WFDA_Label28" class="sta_WFDA_Data" position="absolute 615 181 765 207" text="" anchor="left top right"/>
<MaskEdit id="MaskEdit07" taborder="20" position="absolute 351 184 471 204"/>
<Combo id="Combo05" taborder="21" position="absolute 108 184 228 204"/>
<Edit id="Edit04" taborder="22" position="absolute 619 184 739 204"/>
<Button id="btn_WF_crud00" taborder="23" text="삭제" class="btn_WF_crud" position="absolute 663 56 713 76" anchor="top right"/>
<Button id="btn_WF_crud01" taborder="24" text="추가" class="btn_WF_crud" position="absolute 611 56 661 76" anchor="top right"/>
<Button id="btn_WF_crud03" taborder="26" text="저장" class="btn_WF_crudL2" position="absolute 715 222 765 242" anchor="top right"/>
<Grid id="Grid00" taborder="27" binddataset="ds_grid" useinputpanel="false" position="absolute 0 247 765 540" autofittype="col" anchor="all">
<Formats>
<Format id="default">
<Columns>
<Column size="40"/>
<Column size="35"/>
<Column size="180"/>
<Column size="100"/>
<Column size="90"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
</Columns>
<Rows>
<Row size="22" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell text="순서"/>
<Cell col="1" displaytype="checkbox" edittype="checkbox"/>
<Cell col="2" text="업체명"/>
<Cell col="3" text="대표자"/>
<Cell col="4" text="전화번호"/>
<Cell col="5" text="등록유형"/>
<Cell col="6" text="신용"/>
<Cell col="7" text="현금"/>
<Cell col="8" text="현장평가"/>
</Band>
<Band id="body">
<Cell text="bind:Column0"/>
<Cell col="1" displaytype="checkbox" edittype="checkbox" text="bind:Column1"/>
<Cell col="2" text="bind:Column2"/>
<Cell col="3" text="bind:Column3"/>
<Cell col="4" text="bind:Column4"/>
<Cell col="5" text="bind:Column5"/>
<Cell col="6" text="bind:Column6"/>
<Cell col="7" text="bind:Column7"/>
<Cell col="8" text="bind:Column8"/>
</Band>
</Format>
</Formats>
</Grid>
<Button id="btn_WF_crud04" taborder="28" text="삭제" class="btn_WF_crudL2" position="absolute 663 222 713 242" anchor="top right"/>
<Button id="btn_WF_crud05" taborder="29" text="추가" class="btn_WF_crudL2" position="absolute 611 222 661 242" anchor="top right"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_grid" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
<Column id="Column2" type="STRING" size="256"/>
<Column id="Column3" type="STRING" size="256"/>
<Column id="Column4" type="STRING" size="256"/>
<Column id="Column5" type="STRING" size="256"/>
<Column id="Column6" type="STRING" size="256"/>
<Column id="Column7" type="STRING" size="256"/>
<Column id="Column8" type="STRING" size="256"/>
<Column id="Column9" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
</Rows>
</Dataset>
</Objects>
</Form>
</FDL>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,529 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="Work" classname="Work" inheritanceid="" position="absolute 0 0 765 540" titletext="TAB">
<Layouts>
<Layout>
<Static id="sta_WF_SearchBox" class="sta_WF_SearchBox" position="absolute 0 0 765 62" text="" anchor="left top right"/>
<Static id="sta_WFSA_PointLabel" text="기준일자" class="sta_WFSA_LabelP" position="absolute 15 10 100 30"/>
<Static id="sta_WFSA_PointLabel00" text="조직코드/명" class="sta_WFSA_Label" position="absolute 317 10 392 30"/>
<Button id="btn_WFSA_Search" taborder="1" text="조회" class="btn_WFSA_Search" position="absolute 703 31 753 53" anchor="left right"/>
<Static id="sta_WFSA_PointLabel02" text="사번/성명" class="sta_WFSA_LabelP" position="absolute 15 32 100 52"/>
<Static id="sta_WFSA_PointLabel03" text="근무지역" class="sta_WFSA_Label" position="absolute 317 32 392 52"/>
<Calendar id="Calendar00" taborder="2" value="20110620" text="2011-06-20" dateformat="yyyy-MM-dd" position="absolute 89 10 179 30"/>
<Edit id="Edit00" taborder="3" position="absolute 392 10 457 30"/>
<Button id="btn_WFSA_Search02" taborder="4" class="btn_WFSA_Search" position="absolute 458 10 478 30" style="image:URL('theme://images/ico_Search.png'); "/>
<Edit id="Edit01" taborder="5" position="absolute 479 10 654 30"/>
<Combo id="Combo01" taborder="6" position="absolute 392 32 542 52"/>
<Edit id="Edit07" taborder="7" class="input_point" position="absolute 89 32 152 52"/>
<Button id="btn_WFSA_Search00" taborder="8" class="btn_WFSA_Search" position="absolute 154 32 174 52" style="image:URL('theme://images/ico_Search.png'); "/>
<Edit id="Edit08" taborder="9" enable="false" position="absolute 176 32 279 52"/>
<Tab id="Tab00" taborder="10" tabindex="0" scrollbars="autoboth" position="absolute 0 79 765 540" anchor="all">
<Tabpages>
<Tabpage id="tabpage1" text="텝페이지01">
<Layouts>
<Layout>
<Button id="btn_WF_crud" taborder="5" text="저장" class="btn_WF_crud" position="absolute 710 15 760 35" anchor="left right"/>
<Button id="btn_WF_crud00" taborder="11" text="삭제" class="btn_WF_crud" position="absolute 658 15 708 35" anchor="left right"/>
<Button id="btn_WF_crud01" taborder="12" text="수정" class="btn_WF_crud" position="absolute 606 15 656 35" anchor="left right"/>
<Button id="btn_WF_crud02" taborder="13" text="추가" class="btn_WF_crud" position="absolute 554 15 604 35" anchor="left right"/>
<Static id="sta_WF_TitleLev00" text="상세정보" class="sta_WF_TitleLev1" position="absolute 4 24 138 38"/>
<Static id="sta_WFDA_Label12" text="하도급공사기간" class="sta_WFDA_LabelP" position="absolute 4 41 109 67"/>
<Static id="sta_WFDA_Label13" class="sta_WFDA_Data" position="absolute 108 41 388 67" text=""/>
<Static id="sta_WFDA_Label14" text="과세/비과세" class="sta_WFDA_LabelP" position="absolute 387 41 492 67"/>
<Static id="sta_WFDA_Label15" class="sta_WFDA_Data" position="absolute 491 41 759 67" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label16" text="헌설실시" class="sta_WFDA_Label" position="absolute 4 66 109 92"/>
<Static id="sta_WFDA_Label21" class="sta_WFDA_Data" position="absolute 108 66 388 92" text=""/>
<Static id="sta_WFDA_Label22" text="헌설일시" class="sta_WFDA_LabelP" position="absolute 387 66 492 92"/>
<Static id="sta_WFDA_Label23" class="sta_WFDA_Data" position="absolute 491 66 759 92" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label24" text="헌설방법" class="sta_WFDA_Label" position="absolute 4 91 109 117"/>
<Static id="sta_WFDA_Label25" class="sta_WFDA_Data" position="absolute 108 91 388 117" text=""/>
<Static id="sta_WFDA_Label26" text="헌설담당자" class="sta_WFDA_LabelP" position="absolute 387 91 492 117"/>
<Static id="sta_WFDA_Label27" class="sta_WFDA_Data" position="absolute 491 91 759 117" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label28" text="헌설장소" class="sta_WFDA_LabelP" position="absolute 4 116 109 142"/>
<Static id="sta_WFDA_Label35" class="sta_WFDA_Data" position="absolute 108 116 388 142" text=""/>
<Static id="sta_WFDA_Label36" text="입찰담당자" class="sta_WFDA_LabelP" position="absolute 387 116 492 142"/>
<Static id="sta_WFDA_Label37" class="sta_WFDA_Data" position="absolute 491 116 759 142" text="" anchor="left top right"/>
<Static id="sta_WFDA_Label38" text="공사개요" class="sta_WFDA_Label" position="absolute 4 141 109 433" anchor="left top bottom"/>
<Static id="sta_WFDA_Label39" class="sta_WFDA_Data" position="absolute 108 141 388 433" text="" anchor="left top bottom"/>
<Static id="sta_WFDA_Label40" text="특기사항" class="sta_WFDA_Label" position="absolute 387 141 492 432" anchor="left top bottom"/>
<Static id="sta_WFDA_Label41" class="sta_WFDA_Data" position="absolute 491 141 759 432" text="" anchor="all"/>
<Calendar id="Calendar01" taborder="14" value="20110615" text="2011-06-15" dateformat="yyyy-MM-dd" class="input_point" position="absolute 112 44 202 64"/>
<Calendar id="Calendar02" taborder="15" value="20110615" text="2011-06-15" dateformat="yyyy-MM-dd" class="input_point" position="absolute 220 44 310 64"/>
<Radio id="Radio00" taborder="16" columncount="2" innerdataset="ds_radio_00" codecolumn="Column0" datacolumn="Column1" position="absolute 112 69 252 89"/>
<Radio id="Radio01" taborder="17" columncount="2" index="1" innerdataset="ds_radio_01" codecolumn="Column0" datacolumn="Column1" value="1" position="absolute 112 97 252 117"/>
<Edit id="Edit02" taborder="18" class="input_point" position="absolute 112 119 372 139"/>
<Edit id="Edit05" taborder="19" class="input_point" position="absolute 494 44 564 64"/>
<Calendar id="Calendar03" taborder="20" value="20110615" text="2011-06-15" dateformat="yyyy-MM-dd" class="input_point" position="absolute 494 69 584 89"/>
<Combo id="Combo00" taborder="21" position="absolute 588 69 628 89"/>
<Combo id="Combo02" taborder="22" position="absolute 651 69 691 89"/>
<Edit id="Edit06" taborder="23" class="input_point" position="absolute 494 94 584 114"/>
<Edit id="Edit03" taborder="24" class="input_point" position="absolute 494 119 584 139"/>
<Button id="btn_WFSA_Search01" taborder="25" class="btn_WFSA_Search" position="absolute 586 94 606 114" style="image:URL('theme://images/ico_Search.png'); "/>
<Button id="btn_WFSA_Search03" taborder="26" class="btn_WFSA_Search" position="absolute 586 119 606 139" style="image:URL('theme://images/ico_Search.png'); "/>
<TextArea id="TextArea00" taborder="27" position="absolute 112 144 372 429" anchor="left top bottom"/>
<TextArea id="TextArea01" taborder="28" position="absolute 494 144 754 428" anchor="all"/>
<Static id="Static04" text="시" position="absolute 630 69 645 89"/>
<Static id="Static05" text="분" position="absolute 694 69 709 89"/>
<Static id="Static06" text="~" position="absolute 206 44 221 64"/>
</Layout>
</Layouts>
</Tabpage>
<Tabpage id="tabpage2" text="텝페이지02">
<Layouts>
<Layout>
<Grid id="Grid00" taborder="1" binddataset="ds_grid" useinputpanel="false" position="absolute 5 41 759 420">
<Formats>
<Format id="default">
<Columns>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
</Columns>
<Rows>
<Row size="24" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell text="Column0"/>
<Cell col="1" text="Column1"/>
<Cell col="2" text="Column2"/>
<Cell col="3" text="Column3"/>
<Cell col="4" text="Column4"/>
<Cell col="5" text="Column5"/>
<Cell col="6" text="Column6"/>
<Cell col="7" text="Column7"/>
<Cell col="8" text="Column8"/>
<Cell col="9" text="Column9"/>
</Band>
<Band id="body">
<Cell text="bind:Column0"/>
<Cell col="1" text="bind:Column1"/>
<Cell col="2" text="bind:Column2"/>
<Cell col="3" text="bind:Column3"/>
<Cell col="4" text="bind:Column4"/>
<Cell col="5" text="bind:Column5"/>
<Cell col="6" text="bind:Column6"/>
<Cell col="7" text="bind:Column7"/>
<Cell col="8" text="bind:Column8"/>
<Cell col="9" text="bind:Column9"/>
</Band>
</Format>
</Formats>
</Grid>
<Button id="btn_WF_crud" taborder="2" text="저장" class="btn_WF_crud" position="absolute 710 16 760 36"/>
<Button id="btn_WF_crud00" taborder="3" text="삭제" class="btn_WF_crud" position="absolute 658 16 708 36"/>
<Button id="btn_WF_crud01" taborder="4" text="수정" class="btn_WF_crud" position="absolute 606 16 656 36"/>
<Button id="btn_WF_crud02" taborder="5" text="추가" class="btn_WF_crud" position="absolute 554 16 604 36"/>
</Layout>
</Layouts>
</Tabpage>
<Tabpage id="tabpage3" text="텝페이지03"/>
</Tabpages>
</Tab>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_grid" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
<Column id="Column2" type="STRING" size="256"/>
<Column id="Column3" type="STRING" size="256"/>
<Column id="Column4" type="STRING" size="256"/>
<Column id="Column5" type="STRING" size="256"/>
<Column id="Column6" type="STRING" size="256"/>
<Column id="Column7" type="STRING" size="256"/>
<Column id="Column8" type="STRING" size="256"/>
<Column id="Column9" type="STRING" size="256"/>
<Column id="Column10" type="STRING" size="256"/>
<Column id="Column11" type="STRING" size="256"/>
<Column id="Column12" type="STRING" size="256"/>
<Column id="Column13" type="STRING" size="256"/>
<Column id="Column14" type="STRING" size="256"/>
<Column id="Column15" type="STRING" size="256"/>
<Column id="Column16" type="STRING" size="256"/>
<Column id="Column17" type="STRING" size="256"/>
<Column id="Column18" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column9">가나다라</Col>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column18">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column10">가나다라</Col>
</Row>
<Row>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
</Row>
<Row>
<Col id="Column18">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column0">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
<Row>
<Col id="Column0">가나다라</Col>
<Col id="Column1">가나다라</Col>
<Col id="Column2">가나다라</Col>
<Col id="Column3">가나다라</Col>
<Col id="Column4">가나다라</Col>
<Col id="Column5">가나다라</Col>
<Col id="Column6">가나다라</Col>
<Col id="Column7">가나다라</Col>
<Col id="Column8">가나다라</Col>
<Col id="Column9">가나다라</Col>
<Col id="Column10">가나다라</Col>
<Col id="Column11">가나다라</Col>
<Col id="Column12">가나다라</Col>
<Col id="Column13">가나다라</Col>
<Col id="Column14">가나다라</Col>
<Col id="Column15">가나다라</Col>
<Col id="Column16">가나다라</Col>
<Col id="Column17">가나다라</Col>
<Col id="Column18">가나다라</Col>
</Row>
</Rows>
</Dataset>
<Dataset id="ds_radio_01" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="Column0">0</Col>
<Col id="Column1">온라인</Col>
</Row>
<Row>
<Col id="Column0">1</Col>
<Col id="Column1">오프라인</Col>
</Row>
</Rows>
</Dataset>
<Dataset id="ds_radio_00" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="Column0">0</Col>
<Col id="Column1">예</Col>
</Row>
<Row>
<Col id="Column0">1</Col>
<Col id="Column1">아니오</Col>
</Row>
</Rows>
</Dataset>
</Objects>
</Form>
</FDL>

View File

@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<FDL version="1.4">
<TypeDefinition url="..\default_typedef.xml"/>
<Form id="Work" classname="Work" inheritanceid="" position="absolute 0 0 765 540" titletext="Shuttle">
<Layouts>
<Layout>
<Static id="sta_WF_SearchBox" class="sta_WF_SearchBox" position="absolute 0 0 765 41" text="" anchor="left top right"/>
<Static id="sta_WFSA_PointLabel" class="sta_WFSA_Label" position="absolute 17 10 107 30" text="원본프로젝트"/>
<Button id="btn_WFSA_Search" taborder="1" text="조회" class="btn_WFSA_Search" position="absolute 700 10 750 32" anchor="top right"/>
<Button id="btn_WFSA_Search02" taborder="2" class="btn_WFSA_Search" position="absolute 164 10 184 30" style="image:URL('theme://images/ico_Search.png'); "/>
<Edit id="Edit00" taborder="3" position="absolute 99 10 162 30"/>
<Edit id="Edit01" taborder="4" enable="false" position="absolute 186 10 334 30"/>
<Static id="sta_WFSA_PointLabel00" text="대상프로젝트" class="sta_WFSA_Label" position="absolute 363 10 453 30"/>
<Button id="btn_WFSA_Search00" taborder="5" class="btn_WFSA_Search" position="absolute 510 10 530 30" style="image:URL('theme://images/ico_Search.png'); "/>
<Edit id="Edit02" taborder="6" position="absolute 445 10 508 30"/>
<Edit id="Edit03" taborder="7" enable="false" position="absolute 532 10 680 30"/>
<Static id="sta_WF_TitleLev1" text="원본프로젝트" class="sta_WF_TitleLev1" position="absolute 0 55 134 69"/>
<Static id="sta_WF_TitleLev00" text="대상프로젝트" class="sta_WF_TitleLev1" position="absolute 400 55 534 69"/>
<Grid id="Grid00" taborder="8" useinputpanel="false" position="absolute 0 71 365 540" binddataset="ds_grid" formats="&lt;Formats&gt;&#10; &lt;Format id=&quot;default&quot;&gt;&#10; &lt;Columns&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;Col size=&quot;80&quot;/&gt;&#10; &lt;/Columns&gt;&#10; &lt;Rows&gt;&#10; &lt;Row band=&quot;head&quot; size=&quot;24&quot;/&gt;&#10; &lt;Row band=&quot;body&quot; size=&quot;24&quot;/&gt;&#10; &lt;/Rows&gt;&#10; &lt;Band id=&quot;head&quot;&gt;&#10; &lt;Cell col=&quot;0&quot; disptype=&quot;normal&quot; text=&quot;Column0&quot;/&gt;&#10; &lt;Cell col=&quot;1&quot; disptype=&quot;normal&quot; text=&quot;Column1&quot;/&gt;&#10; &lt;Cell col=&quot;2&quot; disptype=&quot;normal&quot; text=&quot;Column2&quot;/&gt;&#10; &lt;Cell col=&quot;3&quot; disptype=&quot;normal&quot; text=&quot;Column3&quot;/&gt;&#10; &lt;Cell col=&quot;4&quot; disptype=&quot;normal&quot; text=&quot;Column4&quot;/&gt;&#10; &lt;Cell col=&quot;5&quot; disptype=&quot;normal&quot; text=&quot;Column5&quot;/&gt;&#10; &lt;Cell col=&quot;6&quot; disptype=&quot;normal&quot; text=&quot;Column6&quot;/&gt;&#10; &lt;/Band&gt;&#10; &lt;Band id=&quot;body&quot;&gt;&#10; &lt;Cell col=&quot;0&quot; disptype=&quot;normal&quot; text=&quot;bind:Column0&quot;/&gt;&#10; &lt;Cell col=&quot;1&quot; disptype=&quot;normal&quot; text=&quot;bind:Column1&quot;/&gt;&#10; &lt;Cell col=&quot;2&quot; disptype=&quot;normal&quot; text=&quot;bind:Column2&quot;/&gt;&#10; &lt;Cell col=&quot;3&quot; disptype=&quot;normal&quot; text=&quot;bind:Column3&quot;/&gt;&#10; &lt;Cell col=&quot;4&quot; disptype=&quot;normal&quot; text=&quot;bind:Column4&quot;/&gt;&#10; &lt;Cell col=&quot;5&quot; disptype=&quot;normal&quot; text=&quot;bind:Column5&quot;/&gt;&#10; &lt;Cell col=&quot;6&quot; disptype=&quot;normal&quot; text=&quot;bind:Column6&quot;/&gt;&#10; &lt;/Band&gt;&#10; &lt;/Format&gt;&#10;&lt;/Formats&gt;&#10;" autofittype="col" fillareatype="linerow" anchor="left top bottom">
<Formats>
<Format id="default">
<Columns>
<Column size="35"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
</Columns>
<Rows>
<Row size="18" band="head"/>
<Row size="18" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell rowspan="2" displaytype="checkbox" edittype="checkbox" text="Column0"/>
<Cell col="1" rowspan="2" text="품명"/>
<Cell col="2" rowspan="2" text="규격"/>
<Cell col="3" rowspan="2" text="단위"/>
<Cell col="4" colspan="3" text="실행"/>
<Cell row="1" col="4" text="수량"/>
<Cell row="1" col="5" text="단가"/>
<Cell row="1" col="6" text="금액"/>
</Band>
<Band id="body">
<Cell displaytype="checkbox" edittype="checkbox" text="bind:Column0"/>
<Cell col="1" text="bind:Column1"/>
<Cell col="2" text="bind:Column2"/>
<Cell col="3" text="bind:Column3"/>
<Cell col="4" text="bind:Column4"/>
<Cell col="5" text="bind:Column5"/>
<Cell col="6" text="bind:Column6"/>
</Band>
</Format>
</Formats>
</Grid>
<Grid id="Grid01" taborder="9" binddataset="ds_grid" useinputpanel="false" autofittype="col" fillareatype="linerow" position="absolute 400 71 765 540" anchor="all">
<Formats>
<Format id="default">
<Columns>
<Column size="35"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
</Columns>
<Rows>
<Row size="18" band="head"/>
<Row size="18" band="head"/>
<Row size="20"/>
</Rows>
<Band id="head">
<Cell rowspan="2" displaytype="checkbox" edittype="checkbox" text="Column0"/>
<Cell col="1" rowspan="2" text="품명"/>
<Cell col="2" rowspan="2" text="규격"/>
<Cell col="3" rowspan="2" text="단위"/>
<Cell col="4" colspan="3" text="실행"/>
<Cell row="1" col="4" text="수량"/>
<Cell row="1" col="5" text="단가"/>
<Cell row="1" col="6" text="금액"/>
</Band>
<Band id="body">
<Cell displaytype="checkbox" edittype="checkbox" text="bind:Column0"/>
<Cell col="1" text="bind:Column1"/>
<Cell col="2" text="bind:Column2"/>
<Cell col="3" text="bind:Column3"/>
<Cell col="4" text="bind:Column4"/>
<Cell col="5" text="bind:Column5"/>
<Cell col="6" text="bind:Column6"/>
</Band>
</Format>
</Formats>
</Grid>
<Button id="Button00" taborder="10" position="absolute 373 269 392 289" style="image:URL('theme://images/btn_move_right_N.png'); :disabled {image:URL('theme://images/btn_move_right_D.png');} :mouseover {image:URL('theme://images/btn_move_right_O.png');}"/>
<Button id="Button01" taborder="11" position="absolute 373 293 392 313" style="image:URL('theme://images/btn_move_left_N.png'); :disabled {image:URL('theme://images/btn_move_left_D.png');} :mouseover {image:URL('theme://images/btn_move_left_O.png');}"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="ds_grid" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
<ColumnInfo>
<Column id="Column0" type="STRING" size="256"/>
<Column id="Column1" type="STRING" size="256"/>
<Column id="Column2" type="STRING" size="256"/>
<Column id="Column3" type="STRING" size="256"/>
<Column id="Column4" type="STRING" size="256"/>
<Column id="Column5" type="STRING" size="256"/>
<Column id="Column6" type="STRING" size="256"/>
</ColumnInfo>
<Rows>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
<Row/>
</Rows>
</Dataset>
</Objects>
</Form>
</FDL>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="com.terry.xplatform">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- Root Logger -->
<root>
<priority value="info" />
<appender-ref ref="console" />
</root>
</log4j:configuration>