Технология и средства разработки Java-приложений с использованием XML-описаний экранных форм

Разработка технологии и средств реализации Java-приложения, сокращающих трудоемкость создания и гибкость модификации интерфейса пользователя. Использование XML-документов для описания внешнего представления, элементов управления и событий экранных форм.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 19.08.2011
Размер файла 2,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

<parameter name='request.delete.name' value='requestDelete'/>

</actioncontroller>

<internalframecontroller name='closingEvent' object='internalFrame'

type='closing' synchronize='false'

handler='com.nic.client.ui.swing.handlers.form.ClosingFormHandler'/>

<actioncontroller name='updateWindowMenuEvent'

handler='com.nic.client.ui.swing.handlers.UpdateWindowMenuHandler'/>

<actioncontroller name='updateToolBarEvent'

handler='com.nic.client.ui.swing.handlers.UpdateToolBarHandler'/>

<actioncontroller name='cancelEvent'

handler='com.nic.client.ui.swing.handlers.form.CloseFormHandler'/>

<actioncontroller name='closeEvent'

handler='com.nic.client.ui.swing.handlers.form.CloseFormHandler'/>

<actioncontroller name='saveEvent'

handler='com.nic.client.ui.swing.handlers.form.view.SaveFormViewHandler

'>

<depends name='storeEvent' type='before'/>

<depends name='cancelEvent' type='after'/>

<parameter name='data.model.list' value='mRecord'/>

</actioncontroller>

<actioncontroller name='storeEvent'

handler='com.nic.client.server.handlers.StoreDataRequestHandler'>

<parameter name='data.model.name' value='mRecord'/>

<parameter name='entity.name' value='recpts'/>

</actioncontroller>

<buttoncontroller name='unloadEvent' object='bUnload'

handler='com.nic.poeso.client.handlers.comings.UnloadPTSHandler'>

<parameter name='data.model.name' value='mRecord'/>

</buttoncontroller>

<buttoncontroller name='loadEvent' object='bLoad'

handler='com.nic.poeso.client.handlers.comings.LoadPTSHandler'>

<depends name='saveRowEvent' type='after'/>

<depends name='initListEvent' type='after'/>

</buttoncontroller>

<buttoncontroller name='loadEvent2' object='bLoadPrice'

handler='com.nic.poeso.client.handlers.comings.LoadPriceHandler'>

<depends name='saveRowEvent' type='after'/>

<depends name='initListEvent' type='after'/>

</buttoncontroller>

<actioncontroller name='saveRowEvent'

handler='com.nic.client.ui.swing.handlers.form.view.SaveFormViewHandler

'>

<parameter name='data.model.list' value='mRecord'/>

</actioncontroller>

<actioncontroller name='printEvent'

handler='com.nic.client.ui.swing.handlers.form.PrintFormHandler'>

<parameter name='document.name' value='Карточка прихода новых

ПТС'/>

<parameter name='start.point' value='A3'/>

</actioncontroller>

<actioncontroller name='addPopup' handler='com.nic.client.ui.swing.handlers.GeneratePopUpMenuHandler'>

<parameter name='object.names' value='root;scrollPane;tbList'/>

<parameter name='popupmenu.names'

value='popUnload;popLoad;popLoadPrice'/>

</actioncontroller>

<!-- Выбор организации -->

<mousecontroller name='selectOrgEvent' object='tfPost' clickcount='2'

type='clicked'>

<depends name='openTreeEvent' type='before'/>

<depends name='updateAttributesEvent' type='after'/>

</mousecontroller>

<actioncontroller name='updateAttributesEvent'

handler='com.nic.client.ui.swing.handlers.form.UpdateAttributesHandler'>

<parameter name='data.model.list' value='mRecord'/>

</actioncontroller>

<actioncontroller name='openTreeEvent'

handler='com.nic.client.ui.swing.handlers.form.OpenFormHandler'>

<parameter name='form.name' value='FormCompanyList'/>

<parameter name='init.saveConditionEvent' value='true'/>

<parameter name='is.unique' value='false'/>

</actioncontroller>

<actioncontroller name='filterEvent'

handler='com.nic.client.ui.swing.handlers.table.FilterFormHandler'>

<parameter name='table.name' value='tbList'/>

</actioncontroller>

</controller>

</settings>

ПРИЛОЖЕНИЕ Б.1

Внешний вид экранной формы

Рис.

ПРИЛОЖЕНИЕ В

Пример файла конфигурации редактора XML-описаний экранных форм

<?xml version='1.0' encoding='windows-1251'?>

<config>

<attributes name='Элементы управления'>

<item name='jbutton' extname='Кнопка'>

<property id='name' name='Наименование' type='text' uniq='true'/>

<property id='bounds' name='Границы' type='formulas'/>

<property id='font' name='Шрифт' type='font'/>

<property id='forecolor' name='Цвет шрифта' type='color'/>

<property id='backcolor' name='Цвет фона' type='color'/>

<property id='enable' name='Наличие' type='boolean'/>

<property id='text' name='Текст' type='text'/>

<property id='tooltip' name='Подсказка' type='text'/>

</item>

<!--все остальные элементы управления-->

</attributes>

<attributes_extending name='Производные элементы управления'>

<item name='jtree' extends='jtextarea' extname='Дерево' modeltype='xmldata'>

<property id='id' name='id' type='text' uniq='true'/>

<property id='bounds' name='Границы' type='formulas'/>

<property id='selection' name='Тип выделения' type='text'/></item>

</attributes_extending >

<modelsupported name='Модели элементов управления'>

<item id='xmldata' name='mRecord'>

<property id='xmldateboxmodel' prefix='dbm'/>

<property id='xmltextfieldmodel' prefix='tfm'/>

<property id='xmlcheckboxmodel' prefix='chbm'/>

</item>

<item id='xmldata' name='mCombo' separate='true'>

<property id='xmlcomboboxmodel' prefix='cbm'/>

</item>

</modelsupported>

<controllers name='Типы обработчиколв событий'>

<property id='mousecontroller'/>

<property id='internalframecontroller'/>

<property id='keycontroller'/>

<!--все остальные типы обработчиков событий-->

</controllers>

<parameteroperations name='Типы отношений'>

<property id='e' name='равно'/>

<property id='l' name='больше'/>

<property id='s' name='меньше'/>

<!--все остальные типы отношений-->

</parameteroperations>

</config>

ПРИЛОЖЕНИЕ Г

Фрагменты исходного текста программы ядра Java-приложения

//MainApplication.java

package com.nic.client.ui;

import java.awt.*;

import java.io.*;

import java.util.*;

import javax.swing.*;

import com.nic.client.util.*;

import com.nic.client.ui.swing.components.*;

public class MainApplication

{

static final int ALL_PROPERTIES = -1;

public static final int CLIENT_PROPERTY = 0;

public static final int ARGUMENT_PROPERTY = 1;

public static final int SESSION_PROPERTY = 2;

public static final int USER_PROPERTY = 3;

private static MainProperties props = new MainProperties();

private static String propsFile;

public MainApplication()

{

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

JWindow dialog = getStartupWindow(screenSize);

executeStartupPreparation();

initMainFrame(screenSize);

if(dialog != null)

dialog.dispose();

}

public static Object getProperty(String key, int type)

{

if(props.containsKey(key, type))

return props.getProperty(key, type);

return null;

}

public static Object getProperty(String key)

{

if(props.containsKey(key, SESSION_PROPERTY))

return props.getProperty(key, SESSION_PROPERTY);

return null;

}

public static void setProperty(String key, int type, Object value)

{

props.setProperty(key, type, value);

}

public static void setProperty(String key, Object value)

{

props.setProperty(key, SESSION_PROPERTY, value);

}

public static void saveProperties()

{

try

{

props.store(new FileOutputStream(propsFile), null);

}

catch(Exception e)

{

e.printStackTrace();

}

}

public static MainProperties getProperties()

{

return props;

}

public static void main(String[] arg) throws Exception

{

if(arg.length == 0)

System.exit(-1);

propsFile = arg[0];

props.load(new FileInputStream(propsFile));

for(int i = 1; i < arg.length; i++)

setProperty(String.valueOf(i), ARGUMENT_PROPERTY, arg[i]);

Logger.createLog4jInstance(props.getProperties(MainApplication.CLIENT_PROPERTY, true));

Logger.log("Application started");

setLookAndFeel();

new LogStream(true);

new MainApplication();

}

private static void setLookAndFeel()

{

try

{

ResourceBundleImpl.initResourceBundle((String)getProperty("reference.properties.name", MainApplication.CLIENT_PROPERTY));

UIManager.LookAndFeelInfo[] lnf =

UIManager.getInstalledLookAndFeels();

String lnfClass =

(String)MainApplication.getProperty("look.and.feel.class",

CLIENT_PROPERTY);

if(!Strings.isEmpty(lnfClass))

{

for(int i = 0; i < lnf.length; i++)

{

if(lnf[i].getClassName().equals(lnfClass))

{

UIManager.setLookAndFeel(lnfClass);

break;

}

}

}

else

lnfClass = UIManager.getSystemLookAndFeelClassName();

UIManager.setLookAndFeel(lnfClass);

String version = System.getProperty("java.version");

float ver = Strings.parseFloat(System.getProperty("java.specification.version"), -1);

String winlafStatus = (String)MainApplication.getProperty("winlaf.status", CLIENT_PROPERTY);

if (!"off".equalsIgnoreCase(winlafStatus))

if(lnfClass.indexOf("Windows") != -1 && (version.startsWith("1.4.2") || ver > 1.4))

{

net.java.plaf.LookAndFeelPatchManager.initialize();

UIManager.put("TextField.patchReadOnlyBackground", Boolean.FALSE);

UIManager.put("PasswordField.patchReadOnlyBackground", Boolean.FALSE);

UIManager.put("FormattedTextField.patchReadOnlyBackground", Boolean.FALSE);

UIManager.put("TextArea.patchReadOnlyBackground", Boolean.FALSE);

}

}

catch(Throwable th)

{

th.printStackTrace();

}

}

private JWindow getStartupWindow(Dimension screenSize)

{

JWindow dialog = null;

String image = (String)MainApplication.getProperty("startup.window.image.file", CLIENT_PROPERTY);

ImageIcon icon = null;

if(!Strings.isEmpty(image))

icon = new ImageIcon(image);

if(icon != null && (icon.getIconWidth() > 0 || icon.getIconHeight() > 0))

{

dialog = new JWindow();

dialog.getContentPane().add(new JImagePanel(icon));

Dimension dialogSize = new Dimension(icon.getIconWidth(), icon.getIconHeight());

dialog.setSize(dialogSize);

dialog.setLocation((int)(screenSize.width/2 - dialogSize.getWidth()/2), (int)(screenSize.height/2 - dialogSize.getHeight()/2));

final JWindow iconDialog = dialog;

new Thread()

{

public void run()

{

iconDialog.show();

}

}.start();

}

return dialog;

}

private void executeStartupPreparation()

{

String slink = (String)MainApplication.getProperty("startup.preparation.link", MainApplication.CLIENT_PROPERTY);

if(!Strings.isEmpty(slink))

{

String clss = Strings.byLastIndexOf(slink, "@");

String mthd = Strings.fromLastIndexOf(slink, "@");

new Execute(clss, mthd, new Object[0]).run();

}

}

private void initMainFrame(Dimension screenSize)

{

if(Strings.parseBoolean((String)MainApplication.getProperty("hide.mode", MainApplication.CLIENT_PROPERTY), false))

return;

MainFrame frame = MainFrame.newInstance();

frame.pack();

Dimension frameSize = frame.getSize();

frameSize.height = screenSize.height - (int)(3 * Toolkit.getDefaultToolkit().getScreenResolution() / 10);

frameSize.width = screenSize.width;

frame.setSize(frameSize);

if (Strings.parseBoolean((String)MainApplication.getProperty("main.frame.maximized", MainApplication.CLIENT_PROPERTY), false))

frame.setExtendedState(Frame.MAXIMIZED_BOTH);

frame.setVisible(true);

}

public static class MainProperties extends Properties

{

public MainProperties()

{

super();

}

public synchronized Object setProperty(String key, int type, Object value)

{

return put(type + "." + key, value);

}

public Object getProperty(String key, int type)

{

return get(type + "." + key);

}

public synchronized void setProperties(int type, Properties tempProperties)

{

for(Enumeration e = tempProperties.keys(); e.hasMoreElements(); )

{

String key = (String)e.nextElement();

String val = tempProperties.getProperty(key);

setProperty(key, type, val);

}

}

public Properties getProperties(int type, boolean convertKey)

{

Properties tempProperties = new Properties();

for(Enumeration e = keys(); e.hasMoreElements(); )

{

String key = (String)e.nextElement();

if(type != MainApplication.ALL_PROPERTIES && !key.startsWith(type + "."))

continue;

Object val = get(key);

if(!(val instanceof String))

continue;

if(convertKey)

key = key.substring((type + ".").length());

tempProperties.put(key, val);

}

return tempProperties;

}

public boolean containsKey(String key, int type)

{

return containsKey(type + "." + key);

}

public synchronized void store(OutputStream outStream, String header) throws IOException

{

store(outStream, header, MainApplication.CLIENT_PROPERTY);

}

public synchronized void store(OutputStream outStream, String header, int type) throws IOException

{

getProperties(type, true).store(outStream, header);

}

public synchronized void load(InputStream inStream, int type) throws IOException

{

Properties tempProperties = new Properties();

tempProperties.load(inStream);

setProperties(type, tempProperties);

}

public synchronized void load(InputStream inStream) throws IOException

{

load(inStream, MainApplication.CLIENT_PROPERTY);

}

}

}

//MainFrame.java

package com.nic.client.ui;

/**

* <p>Title: </p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2002</p>

* <p>Company: </p>

* @author unascribed

* @version 1.0

*/

import java.util.*;

import javax.swing.*;

import com.nic.client.ui.swing.*;

import com.nic.client.util.*;

public class MainFrame extends JFrame

{

private static MainFrame instance;

private static Form mainForm;

private List exitСheckers;

private ButtonGroup bgForms = new ButtonGroup();

public MainFrame()

{

exitСheckers = new ArrayList();

enableEvents(java.awt.AWTEvent.WINDOW_EVENT_MASK);

String image = (String)MainApplication.getProperty("logo.window.image.file", MainApplication.CLIENT_PROPERTY);

if(!Strings.isEmpty(image))

setIconImage(getToolkit().createImage(image));

setTitle((String)MainApplication.getProperty("application.title", MainApplication.CLIENT_PROPERTY));

}

private void init()

{

FormManager formManager = FormManager.getInstance();

mainForm = formManager.createForm(null, "FormMain", null, null);

mainForm.show(getContentPane());

}

public static MainFrame getInstance()

{

if(instance == null)

instance = new MainFrame();

return instance;

}

public static MainFrame newInstance()

{

getInstance();

instance.init();

return instance;

}

public static Form getFormInstance()

{

return mainForm;

}

public void processWindowEvent(java.awt.event.WindowEvent e)

{

if(e.getID() == java.awt.event.WindowEvent.WINDOW_CLOSING)

{

boolean can = true;

for(int i = 0; i < exitСheckers.size(); i++)

can = can && ((ExitChecker)exitСheckers.get(i)).canExit();

if(!can)

return;

super.processWindowEvent(e);

Logger.log("Application closed");

System.exit(0);

}

else

super.processWindowEvent(e);

}

public void addExitChecker(ExitChecker checker)

{

exitСheckers.add(checker);

}

public void removeExitChecker(ExitChecker checker)

{

exitСheckers.remove(checker);

}

public ButtonGroup getFormButtonGroup()

{

return bgForms;

}

public interface ExitChecker

{

public boolean canExit();

}

}

//FormManager.java

package com.nic.client.ui;

import java.awt.*;

import java.util.*;

import com.nic.client.util.*;

/**

* Предназначен для управления отображенными в окне приложения экранными формами

* <p>Copyright: Copyright (c) 2010

* <p>Company: ОАО НИЦ ЭТУ

* @author not attributable

* @version 1.0

*/

public class FormManager

{

/**Определяет идентификатор основного окна приложения */

public static final String MAIN_FORM = "0";

/**Определяет идентификатор родительской экранной формы */

public static final String PARENT_FORM = "PARENT";

/**Определяет идентификатор активной экранной формы */

public static final String ACTIVE_FORM = "ACTIVE";

/**Используемый по умолчанию загрузчик описаний экранных форм */

public FormSourceLoader defaultSourceLoader;

/**Список отображенных менеджером экранных форм */

ArrayList forms;

/**Объект менеджера экранных форм */

protected static FormManager instance;

/**

* Возвращает объект менеджера экранных форм

* @return объект менеджера экранных форм

*/

public static FormManager getInstance()

{

if(instance != null)

return instance;

instance = new FormManager();

instance.setFormSourceLoader(ApplicationFactory.getFactory().createFormSourceLoader());

return instance;

}

/**

* Создает франгмент экранной формы

* @param parent родительская экранная форма

* @param nameForm имя экранной формы

* @param nameFragment имя фрагмента экранной формы

* @param sourceLoader загрузчик описания экранной формы

* @return созданный фрагмент экранной формы

*/

public Fragment createFragment(Form parent, String nameForm, String nameFragment, FormSourceLoader sourceLoader)

{

if(sourceLoader == null)

sourceLoader = defaultSourceLoader;

Fragment fragment = ApplicationFactory.getFactory().createFragment(nameFragment);

fragment.build(parent, sourceLoader.getSource(nameForm), parent.getContext());

return fragment;

}

/**

* Создает экранную форму

* @param parent родительская экранная форма

* @param name имя экранной формы

* @param sourceLoader загрузчик описания экранной формы

* @param context контекст экранной формы

* @return созданная экранная форма

*/

public Form createForm(Form parent, String name, FormSourceLoader sourceLoader, AbstractContext context)

{

if(sourceLoader == null)

sourceLoader = defaultSourceLoader;

Form form = ApplicationFactory.getFactory().createForm(name);

form.build(parent, sourceLoader.getSource(name), context);

if(forms != null)

forms.add(form);

return form;

}

/**

* Модифицирует экранную форму

* @param экранная форма для модификации

* @param container контейнер для модификации

* @param sourceLoader загрузчик описания экранной формы

* @return модифицированная экранная форма

*/

public Form updateForm(Form form, Container container, FormSourceLoader sourceLoader)

{

if(sourceLoader == null)

sourceLoader = defaultSourceLoader;

form.rebuild(container, sourceLoader.getSource(form.getName()));

return form;

}

/**

* Возвращает объект экранной формы по идентификатору

* @param id идентификатор

* @return экранная форма с заданным идентификатором

*/

public Form getForm(String id)

{

if(id == null)

return null;

if(id.equals(PARENT_FORM))

return getParentForm();

if(id.equals(ACTIVE_FORM))

return getActiveForm();

for(int i = 0; i < forms.size(); i++)

{

Form form = (Form)forms.get(i);

if(id.equals(form.getID()))

return form;

}

return null;

}

/**

* Возвращает объект экранной формы по имени

* @param name имя экранной формы

* @return экранная форма с заданным именем

*/

public Form getFormByName(String name)

{

if(name == null)

return null;

for(int i = 0; i < forms.size(); i++)

{

Form form = (Form)forms.get(i);

if(name.equals(form.getName()))

return form;

}

return null;

}

/**

* Возвращает массив отображенных экранных форм с заданным именем

* @param name имя для отбора экранных форм

* @return массив отображенных экранных форм с заданным именем

*/

public Form[] getForms(String name)

{

Form[] array = new Form[forms.size()];

int j = 0;

for(int i = 0; i < forms.size(); i++)

{

Form form = (Form)forms.get(i);

if(name == null || name.equals(form.getName()))

{

array[j] = form;

j++;

}

}

Form[] temp = new Form[j];

System.arraycopy(array, 0, temp, 0, j);

return temp;

}

/**

* Удаляет экранную форму

* @param form удаляемая экранная форма

*/

public void removeForm(Form form)

{

forms.remove(form);

}

/**

* Активизирует экранную форму по заданному идентификатору

* @param id идентификатор активизируемой экранной формы

*/

public void setActiveForm(String id)

{

for(int i = 0; i < (forms.size() - 1); i++)

{

Form form = (Form)forms.get(i);

if(id.equals(form.getID()))

{

forms.remove(i);

forms.add(form);

return;

}

}

}

/**

* Возвращает активную экранную форму

* @return активная экранная форма

*/

public Form getActiveForm()

{

int size = forms.size();

return (size > 1) ? (Form)forms.get(size - 1): null;

}

/**

* Проверяет активность экранной формы <code>form</code>

* @param form проверяемая экранная форма

* @return true если экранная форма <code>form</code> активна

*/

public boolean isActiveForm(Form form)

{

int size = forms.size();

if(size > 0 && form != null)

{

Form activeForm = (Form)forms.get(0);

return form.getID().equals(activeForm.getID());

}

return false;

}

private Form getParentForm()

{

Form activeForm = getActiveForm();

if(activeForm == null)

return null;

String id = Strings.byLastIndexOf(activeForm.getID(), ".");

Form parent = FormManager.getInstance().getForm(id);

return parent;

}

/**

* Устанавливает используемый по умолчанию загрузчик экранных форм

* @param sourceLoader новый используемый по умолчанию загрузчик описаний экранных форм

*/

public void setFormSourceLoader(FormSourceLoader sourceLoader)

{

defaultSourceLoader = sourceLoader;

forms = new ArrayList();

}

}

//ComponentProducer.java

package com.nic.client.ui.producers;

/**

* <p>Title: </p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2002</p>

* <p>Company: </p>

* @author unascribed

* @version 1.0

*/

import java.awt.*;

import java.util.*;

import javax.swing.*;

import org.w3c.dom.*;

import com.nic.client.ui.*;

import com.nic.client.ui.basic.*;

import com.nic.client.ui.swing.*;

import com.nic.client.ui.swing.models.*;

import com.nic.client.ui.swing.models.XmlCheckBoxModel;

import com.nic.client.util.Strings;

public class ComponentProducer extends Producer

{

private String[] producedTypes = {"JLabel", "JButton", "JTextField", "JCheckBox", "JList", "JProgressBar", "JScrollBar", "JSlider", "JComboBox", "JMenuItem", "JCheckBoxMenuItem", "JSeparator", "JTable", "JTree", "JToolTip", "JPasswordField", "JEditorPane", "JTextArea", "JTextPane", "JFormattedTextField", "JSpinner", "JToggleButton", "JRadioButton"};

public boolean processed(String key)

{

return processedIndex(key) != -1;

}

private int processedIndex(String key)

{

for(int i = 0; i < producedTypes.length; i++)

{

if(producedTypes[i].equalsIgnoreCase(key))

return i;

}

return -1;

}

public Object createItem(Element item, Fragment fragment)

{

String name = item.getAttribute("name");

JComponent component = (JComponent)fragment.getObject(name);

if(component != null)

{

component.setVisible(true);

}

else

{

component = (JComponent)createObject("javax.swing." + producedTypes[processedIndex(item.getNodeName())], item, fragment, true);

processItem(component, item, fragment);

fragment.addObject(name, component);

}

return component;

}

public void hideItem(Object objectItem, Fragment fragment)

{

if(objectItem == null)

{

Object[] objectItems = processedItems(fragment);

for(int i = 0; i < objectItems.length; i++)

hideItem(objectItems[i], fragment);

return;

}

Object object = objectItem;

if(object instanceof JComponent)

{

JComponent component = (JComponent)object;

component.setVisible(false);

}

}

public void removeItem(Object objectItem, Fragment fragment)

{

if(objectItem == null)

{

Object[] objectItems = processedItems(fragment);

for(int i = 0; i < objectItems.length; i++)

removeItem(objectItems[i], fragment);

return;

}

Object object = objectItem;

if(object instanceof JComponent)

{

JComponent component = (JComponent)object;

component.setVisible(false);

Container container = component.getParent();

if(container != null)

container.remove(component);

fragment.removeObject(objectItem);

component = null;

objectItem = null;

}

}

public Object[] processedItems(Fragment fragment)

{

Map objects = ((BasicFragment)fragment).getObjects();

Object[] array = new Object[objects.size()];

Iterator iterator = objects.values().iterator();

int i = 0;

while(iterator.hasNext())

{

Object item = iterator.next();

String className = item.getClass().getName();

String packageName = item.getClass().getPackage().getName();

className = className.substring(packageName.length() + 1);

if(processed(className))

{

array[i] = item;

i++;

}

}

Object[] temp = new Object[i];

System.arraycopy(array, 0, temp, 0, i);

return temp;

}

protected void processItem(Object objectItem, Element item, Fragment fragment)

{

super.processItem(objectItem, item, fragment);

JComponent component = (JComponent)objectItem;

Object parent = fragment.getObject(((Element)item.getParentNode()).getAttribute("name"));

Object parentObject = (parent != null) ? parent: null;

if(parentObject != null && parentObject instanceof Container)

{

if(parentObject instanceof JScrollPane)

((JScrollPane)parentObject).setViewportView(component);

else

((Container)parentObject).add(component);

LayoutManager layout = ((Container)parentObject).getLayout();

if(layout instanceof ComponentLayout)

((ComponentLayout)layout).setBounds(component.getName(), item.getAttribute("bounds"));

else if(layout instanceof ComponentScrollPaneLayout)

((ComponentScrollPaneLayout)layout).setPreferredSize(component.getName(), item.getAttribute("preferredsize"));

}

if(component instanceof javax.swing.text.JTextComponent)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((XmlTextFieldModel)model).setTextComponent((javax.swing.text.JTextComponent)component);

}

else if(component instanceof javax.swing.JSpinner)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((SpinnerModelItem)model).setSpinnerComponent((javax.swing.JSpinner)component);

}

else if(component instanceof com.nic.client.ui.swing.components.calendar.JDateBox)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((XmlDateBoxModel)model).setDateBoxComponent((com.nic.client.ui.swing.components.calendar.JDateBox)component);

}

else if(component instanceof com.nic.client.ui.swing.components.calendar.JFullDateBox)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((XmlFullDateBoxModel)model).setFullDateBoxComponent((com.nic.client.ui.swing.components.calendar.JFullDateBox)component);

}

else if(component instanceof com.nic.client.ui.swing.components.calendar.JApplyDateBox)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((XmlDateBoxModel)model).setApplyDateBoxComponent((com.nic.client.ui.swing.components.calendar.JApplyDateBox)component);

}

else if(component instanceof com.nic.client.ui.swing.components.calendar.JApplyFullDateBox)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((XmlFullDateBoxModel)model).setApplyFullDateBoxComponent((com.nic.client.ui.swing.components.calendar.JApplyFullDateBox)component);

}

else if(component instanceof javax.swing.JCheckBox)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((XmlCheckBoxModel)model).setCheckBoxComponent((javax.swing.JCheckBox)component);

}

else if(component instanceof javax.swing.JComboBox)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((XmlComboBoxModel)model).setComboBoxComponent((javax.swing.JComboBox)component);

}

else if(component instanceof javax.swing.JTable)

{

Object modelItem = fragment.getObject(item.getAttribute("model"));

Object model = (modelItem != null) ? modelItem: null;

if(model != null)

((XmlTableModel)model).setTableComponent((javax.swing.JTable)component);

}

else if(component instanceof javax.swing.JTree)

{

((JTree)component).getSelectionModel().setSelectionMode(Strings.parseInteger(item.getAttribute("selection.mode"), 0));

}

}

}

//ShowInfoHandler.java

package com.nic.client.ui.swing.handlers;

import com.nic.client.ui.*;

import com.nic.client.ui.swing.*;

import com.nic.client.ui.swing.controllers.*;

import com.nic.client.util.*;

import javax.swing.*;

import java.awt.*;

/*

Данный обработчик выдает информационное окно

@param type тип сообщения

@param header заголовок

@param message текст сообщения

@param options опции через;

@param need.return надо ли возвращать результат(иначе вернется null)

*/

/**

* <p>Заголовок: Класс выдачи информационного окна.</p>

* <p>Copyright: Copyright (c) 2010</p>

* <p>Компания: NIC</p>

* @author

* @version 1.0

*/

public class ShowInfoHandler implements HandlerItem

{

/**

* Выдает на экран информационное окно.

* @param event событие обработчика

* @param context@type тип сообщения. Возможные варианты ().

* @param context@header заголовок сообщения

* @param context@options заголовки кнопок перечисленные через <code>

*;</code>

* @param context@nead.return надо ли возвращать результат (в противном случае )

* @return <code>null</code>, если возникла исключительная ситуация или

* <code>"controller.changed"</code>, если все прошло успешно

*/

public Object handle(ControllerItem event)

{

Form form = (Form)event.getOwnerFragment();

ControllerContext context = event.getContext();

String type = (String)context.getParameter("type");

String message = (String)context.getParameter("message");

String options = (String)context.getParameter("options");

String header = "";

int typ = JOptionPane.ERROR_MESSAGE;

if("warning".equalsIgnoreCase(type))

{

typ = JOptionPane.WARNING_MESSAGE;

header = "Внимание!";

}

else if("error".equalsIgnoreCase(type))

{

typ = JOptionPane.ERROR_MESSAGE;

header = "Ошибка!";

}

else if("information".equalsIgnoreCase(type))

{

typ = JOptionPane.INFORMATION_MESSAGE;

header = "Информация";

}

else if("question".equalsIgnoreCase(type))

{

typ = JOptionPane.QUESTION_MESSAGE;

}

if(!Strings.isEmpty((String)context.getParameter("header")))

header = (String)context.getParameter("header");

Object[] opt = Strings.isEmpty(options) ? InformationDialog._CLOSE: Strings.parseStrings(options);

Component root = form.getRoot();

InformationDialog id = new InformationDialog(InformationDialog.getOwnerFrame(root), root, header, ResourceBundleImpl.getPropertyValue(null, "Message", new String[]{message}), null, null, typ, opt);

id.showDialog();

return "true".equals(context.getParameter("need.return", true)) ? id.getResult(): null;

}

}

//ServerManager.java

package com.nic.client.server;

/**

* <p>Title: </p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2002</p>

* <p>Company: </p>

* @author

* @version 1.0

*/

import java.io.*;

import java.net.*;

import java.lang.reflect.*;

import java.util.*;

import javax.swing.*;

import org.w3c.dom.*;

import com.nic.client.ui.swing.*;

import com.nic.client.util.*;

import com.nic.client.ui.MainFrame;

import com.nic.client.ui.MainApplication;

public class ServerManager

{

public final static String EMPTY_RESPONSE = "<response/>";

public final static String ENCODING_1251 = "windows-1251";

public final static String ENCODING_KOI8 = "KOI8-R";

public final static int MIN_PORT = 3030;

public final static int MAX_PORT = 3080;

private static ServerManager instance;

private String host;

private String port;

private String encoding = ENCODING_1251;

private static RequestProcessor[] requestProcessor = {new DefaultRequestProcessor()};

private static ResultProcessor[] resultProcessor = {new DefaultResultProcessor()};

private String localIP = null;

public void setHost(String host)

{

this.host = host;

}

public void setPort(String port)

{

this.port = port;

}

public String getHost()

{

return host;

}

public String getPort()

{

return port;

}

public void setEncoding(String encoding)

{

this.encoding = encoding;

}

public String getEncodingString()

{

return "<?xml version='1.0' encoding='" + encoding + "'?>";

}

public static void setRequestProcessor(RequestProcessor[] processors)

{

requestProcessor = processors;

}

public static RequestProcessor[] getRequestProcessor()

{

return requestProcessor;

}

public static void addRequestProcessor(RequestProcessor processor)

{

RequestProcessor[] tmp = new RequestProcessor[requestProcessor.length + 1];

System.arraycopy(requestProcessor, 0, tmp, 0, requestProcessor.length);

tmp[requestProcessor.length] = processor;

requestProcessor = tmp;

}

public static void setResultProcessor(ResultProcessor[] processors)

{

resultProcessor = processors;

}

public static ResultProcessor[] getResultProcessor()

{

return resultProcessor;

}

public static void addResultProcessor(ResultProcessor processor)

{

ResultProcessor[] tmp = new ResultProcessor[resultProcessor.length + 1];

System.arraycopy(resultProcessor, 0, tmp, 0, resultProcessor.length);

tmp[resultProcessor.length] = processor;

resultProcessor = tmp;

}

public static ServerManager getInstance()

{

if (instance == null)

instance = new ServerManager();

return instance;

}

public static Element request(Element request)

{

return request(request, ResultProcessor.DEFAULT_PROCESS);

}

public static Element request(Element request, int type)

{

Element result = null;

try

{

for(int i = 0; i < requestProcessor.length; i++)

request = requestProcessor[i].process(request, type);

result = ServerManager.getInstance().requestImpl(request);

for(int i = 0; (i < resultProcessor.length && result != null); i++)

result = resultProcessor[i].process(request, result, type);

}

catch (Exception e)

{

e.printStackTrace();

if(type != ResultProcessor.NOT_WARNING_PROCESS)

{

InformationDialog message = new InformationDialog(MainFrame.getInstance(), "Ошибка", ResourceBundleImpl.getPropertyValue("request.error.message", "Request Error"), null, e.getMessage(), JOptionPane.ERROR_MESSAGE, InformationDialog._CANCEL_VIEW);

message.showDialog();

}

}

return result;

}

public Element requestImpl(Element request) throws Exception

{

Logger.log(Xmls.toString(request));

String response = post(Xmls.toString(request, null));

Logger.log(response);

return Xmls.parse("<?xml version='1.0' encoding='windows-1251'?>" +

response);

}

public String getFile(String name) throws Exception

{

String request = "<request name='file' type='java' object='supply'

operation='getFile'>" +

"<parameter name='filename' e='" + name + "'/>" +

"</request>";

String result = post(request);

result = result.substring(result.indexOf(">")+1);

result = result.substring(0, result.lastIndexOf("</"));

return result;

}

private String post(String request) throws Exception

{

byte[] bRequest;

byte[] buffer;

int len;

URL servlet;

StringBuffer headerbuf;

Socket socket;

BufferedOutputStream outBuffer;

bRequest = (getEncodingString() + request).getBytes(encoding);

servlet = new URL("http://" + host + ":" + port +

"/jboss/servlet/POESOServlet");

headerbuf = new StringBuffer();

headerbuf.append("POST ").append(servlet.getFile())

.append(" HTTP/1.0\r\n")

.append("Host: ").append(servlet.getHost()).append("\r\n")

.append("Content-Type: text/xml; charset=").append(encoding).append("\r\n")

.append("Content-Length: ").append(bRequest.length).append("\r\n\r\n");

socket = new Socket(servlet.getHost(), servlet.getPort());

outBuffer = new BufferedOutputStream(socket.getOutputStream());

outBuffer.write(headerbuf.toString().getBytes(encoding));

outBuffer.write(bRequest);

outBuffer.flush();

socket.getOutputStream().flush();

OutputStream os = socket.getOutputStream();

InputStream is = socket.getInputStream();

ByteArrayOutputStream resultBuf = new ByteArrayOutputStream();

buffer = new byte[1024];

while((len = socket.getInputStream().read(buffer)) > 0)

resultBuf.write(buffer, 0, len);

os.close();

is.close();

resultBuf.close();

String temp = resultBuf.toString();

int pos = temp.indexOf("\r\n\r\n");

return temp.substring(pos+4);

}

public static boolean checkPort()

{

String newPort = findOpenPort(instance.host, MIN_PORT, MAX_PORT, instance.port);

if(newPort == null)

return false;

instance.port = newPort;

return true;

}

public static boolean checkPort(int port)

{

String newPort = findOpenPort(instance.host, port, port, instance.port);

if(newPort == null)

return false;

instance.port = newPort;

return true;

}

private static String findOpenPort(String host, int begin, int end, String defaultValue)

{

Socket socket = null;

int port;

try

{

port = Integer.parseInt(defaultValue);

socket = new Socket(host, port);

socket.close();

return String.valueOf(port);

}

catch(Exception e)

{

}

for(port = begin; port <= end; port++)

{

try

{

socket = new Socket(host, port);

socket.close();

return String.valueOf(port);

}

catch(Exception e)

{

continue;

}

}

return null;

}

public String getLocalIP()

{

String host = this.host;

String port = this.port;

if(localIP != null)

return localIP;

try

{

if(host == null)

host = (String)MainApplication.getProperty("server.host", MainApplication.CLIENT_PROPERTY);

if(port == null)

port = (String)MainApplication.getProperty("server.port", MainApplication.CLIENT_PROPERTY);

if(host == null || port == null)

throw new IllegalStateException("ServerManager: host or port not initialized");

URL servlet = new URL("http://" + host + ":" + port + "/jboss/servlet/POESOServlet");

Socket socket = new Socket(servlet.getHost(), servlet.getPort());

localIP = socket.getLocalAddress().getHostAddress();

System.out.println("Local IP is " + localIP);

socket.close();

return localIP;

}

catch(Exception ex)

{

ex.printStackTrace();

return null;

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Разработка и использование классов при создании приложений. Использование odbc-технологии для создания внешних представлений. Определение источника данных. Создание удаленного и независимого внешнего представления данных. Управление объектами Excel.

    лабораторная работа [413,9 K], добавлен 14.05.2011

  • Java Runtime Environment - минимальная реализация виртуальной машины, необходимая для исполнения приложений, без компилятора и других средств разработки. Компиляция исходного кода через командную строку. Основные моменты создания игрового 2d-приложения.

    курсовая работа [2,1 M], добавлен 26.04.2014

  • Диаграмма консольного приложения табулирования функции. Отличие консольного приложения и приложения и GUI. Диаграмма классов для JFrameи JPanel. Создание простейшего фрейма в Java. Компоновка элементов интерфейса внутри фрейма. Цикл обработки событий.

    лекция [693,8 K], добавлен 01.05.2014

  • Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.

    курсовая работа [197,5 K], добавлен 19.11.2009

  • Особенности архитектуры Java. Технология Java Database Connectivity. Кроссплатформенность Java-приложений. Преимущества языка программирования. Логическая структура базы данных. Структура программного комплекса. Верификация программных средств.

    курсовая работа [962,8 K], добавлен 13.01.2016

  • Трансляция как процесс перевода программного кода из текстовой формы в машинные коды. Основные категории программ Java. Основные управляющие операторы. Объявление и инициализация переменных. Основные средства разработки приложений, написанных на Java.

    презентация [938,2 K], добавлен 26.10.2013

  • Преимущество использования программ, написанных на Java, требования к ним и настройки на клиентском ПК. Развертывание и последующее "автоматическое" обновление версий GUI клиента с помощью использования технологии Java Web Start в среде Windows.

    реферат [33,2 K], добавлен 16.05.2011

  • Разработка программы-модели в среде "Adamview" для имитации стратегии и наглядной иллюстрации работы программы. Настройка сети; описание эмулятора стратегии и экранных форм интерфейса оператора. Структурная схема распределённой системы управления.

    курсовая работа [2,6 M], добавлен 21.01.2013

  • Кратка историческая справка развития языка Java. Анализ предметной области. Java platform, enterprise and standart edition. Апплеты, сервлеты, gui-приложения. Розработка программного кода, консольное приложение. Результаты работы апплета, сервлета.

    курсовая работа [549,2 K], добавлен 23.12.2015

  • Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.

    курсовая работа [508,1 K], добавлен 10.11.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.