Arquivo de maio, 2014

Em interface gráfica do usuário (GUI), uma interface de documentos múltiplos, ou MDI, acrônimo para Multiple Document Interface é um método de organização de aplicações gráficas em janelas que residem em uma única janela, a janela principal da aplicação. A única exceção são possíveis janelas modais da aplicação.

Com múltiplas interfaces de documentos, uma única barra de menu e / ou barra de ferramentas é compartilhado entre todas as janelas filho, reduzindo a desordem e uma utilização mais eficiente do espaço na tela. As janelas filho de um aplicativo pode ser ocultada / mostrada / minimizada / maximizada como um todo. Os autores de aplicações multi-plataforma podem fornecer a seus usuários um comportamento consistente da aplicação entre plataformas.

Interface de Múltiplos Documentos

Interface de Múltiplos Documentos

MdiClient

Representa o recipiente para uma interface de documentos múltiplos (MDI) formulários filho. Você definir se um formulário será um container para múltiplos documentos através da propriedade Form.IsMdiContainer.

Form Child

Você pode definir um formulário como filho o atribuindo a um formulário pai através da propriedade MdiParent, que 0btém ou define uma interface de documentos múltiplos.

Exemplo:

Neste exemplo criamos um formulário MDI básico e um menu. Ressaltando que usamos o Design Time do Visual Studio somente para criar os formulários por opção, o código é inserido parte no construtor da classe do formulário e parte no evento OnShown do Form. Você pode criar tudo dinamicamente ou tudo em Design Time. Vale brincar com o construtor e os eventos dos formulários, porque apesar de alguns eventos possuírem funcionalidades parecidas, não são iguais e existem diferenças peculiares entre eles.

Para criar o segundo formulário, clique com o botão direito em cima do seu projeto na janela Solution Explorer e clique em Add e em Windows Form.

C#

Formulario – Pai

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace formularioMdi
{
    public partial class Form1 : Form
    {
        // Declara componentes
        MenuStrip menu;

        public Form1()
        {
            // Inicializa formulario       
            
            // Define formulario como pai.
            this.IsMdiContainer = true;
                        
            // Cria painel para formularios filhos
            ToolStripPanel painel = new ToolStripPanel();

            // Define tamanho do painel
            painel.Dock = DockStyle.Fill;

            // Cria barra do menu
            menu = new MenuStrip();

            // Cria menu
            ToolStripMenuItem itens1 = new ToolStripMenuItem("Formularios");

            // Cria itens do menu
            ToolStripMenuItem m1item1 = new ToolStripMenuItem("Novo", null, new EventHandler(clique1_m1));
            ToolStripMenuItem m1item2 = new ToolStripMenuItem("Sair", null, new EventHandler(clique2_m1));

            // Adiciona itens ao menu e menu a barra de menu
            itens1.DropDownItems.Add(m1item1);
            itens1.DropDownItems.Add(m1item2);
            menu.Items.Add(itens1);            

            InitializeComponent();
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            // Define texto 
            this.Text = "Desenvolvimento Aberto - Formulario - Main Form / Child Form";

            // Define tamanho e posição do formulario principal            
            this.Top = 0;
            this.Left = 0;
            this.Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 50;
            this.Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height - 50;
           
            // Adiciona menu ao formulario
            this.Controls.Add(menu);

        }

        private void clique1_m1(object sender, EventArgs e)
        {
            // Chama instancia do formulario filho
            FormularioFilho formularioFilho = new FormularioFilho();
            formularioFilho.MdiParent = this;
            
            // Usa metodo estatico para exibir numero da instancia
            formularioFilho.Text = "Formulario Filho - Instancia:" + this.MdiChildren.Length.ToString();

            // Chama formulario
            formularioFilho.Show();
        }

        private void clique2_m1(object sender, EventArgs e)
        {
            // Fecha formulario
            this.Close();
        }

    }
}

Formulario – Filho

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace formularioMdi
{
    public partial class FormularioFilho : Form
    {
        // Declara componentes
        Label rotulo;
        TextBox campo;
        Button botao;

        public FormularioFilho()
        {
            InitializeComponent();
        }

        private void FormularioChild_Shown(object sender, EventArgs e)
        {
            // Define tamanho do formulario
            this.Size = new Size(360, 150);

            // Cria componentes
            rotulo = new Label();
            campo = new TextBox();
            botao = new Button();

            // Defie tamanho
            rotulo.Size = new Size(200, 20);
            campo.Size = new Size(300, 20);

            // Define posição
            rotulo.Location = new Point(12, 20);
            campo.Location = new Point(12, 40);
            botao.Location = new Point(12, 70);

            // Define texto
            rotulo.Text = "Digite seu nome:";
            botao.Text = "Ok";

            // Adiciona componentes ao fomrulario
            this.Controls.Add(rotulo);
            this.Controls.Add(campo);
            this.Controls.Add(botao);

        }
    }
}

 

 

Em interface gráfica do usuário (GUI), uma interface de documentos múltiplos, ou MDI, acrônimo para Multiple Document Interface é um método de organização de aplicações gráficas em janelas que residem em uma única janela, a janela principal da aplicação. A única exceção são possíveis janelas modais da aplicação.

Com múltiplas interfaces de documentos, uma única barra de menu e / ou barra de ferramentas é compartilhado entre todas as janelas filho, reduzindo a desordem e uma utilização mais eficiente do espaço na tela. As janelas filho de um aplicativo pode ser ocultada / mostrada / minimizada / maximizada como um todo. Os autores de aplicações multi-plataforma podem fornecer a seus usuários um comportamento consistente da aplicação entre plataformas.

Interface de Múltiplos Documentos

Interface de Múltiplos Documentos

JDesktopPane

É um recipiente utilizado para criar uma interface de documentos múltiplos ou uma área de trabalho virtual. Você cria objetos JInternalFrame e adicioná-los ao JDesktopPane. A classe JDesktopPane estende o  JLayeredPane para gerenciar os quadros internos potencialmente sobrepostos. Ele também mantém uma referência a uma instância de DesktopManager que é definido pela classe UI para o Look and Feel da aplicação.

JInternalFrame

Um objeto leve que fornece muitas das características de uma estrutura nativa, incluindo arrastar, fechar, mostrar um ícone, redimensionar, exibir títulos, e também possui suporte para uma barra de menus.

Exemplo:

Neste exemplo criamos um formulário MDI básico e um menu.

Java

Classe – Janela Pai


import javax.swing.JDesktopPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JFrame;
import javax.swing.KeyStroke;

import java.awt.event.*;
import java.awt.*;


public class FormularioMdi extends JFrame implements ActionListener
{
	// Declara componetes
    JDesktopPane painel;

    public FormularioMdi() 
    {
    	// herda classe
    	super("Java - Formularios - MDI - JFrame / JDesktopPane / JInternalFrame");
        
    	// Define tamanho da janela principal
        int bordas = 50;
        Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(bordas, bordas, tela.width  - bordas *2 , tela.height - bordas *2);
        
        // Cria painel principal
        painel = new JDesktopPane(); 
        painel.setBackground(Color.LIGHT_GRAY);
                
        setContentPane(painel);
        setJMenuBar(createMenuBar());        
    }

    protected JMenuBar createMenuBar()
    {
    	// Cria barra de menu
        JMenuBar barra = new JMenuBar();
        
        // Cria menu
        JMenu menu = new JMenu("Formularios");        
        barra.add(menu);

        // Cria itens dos menus
        JMenuItem item = new JMenuItem("Novo");
        item.setActionCommand("novo");
        item.addActionListener(this);
        menu.add(item);

        //Cria segundo item
        item = new JMenuItem("Sair");
        item.setActionCommand("sair");
        item.addActionListener(this);
        menu.add(item);

        return barra;
    }

    
    public void actionPerformed(ActionEvent e) 
    {
    	// Cria eventos do menu
        if (e.getActionCommand() == "novo")
        { 
            criaFormulario();
        } 
        else 
        {
            sair();
        }
    }

    protected void sair() 
    {
    	// Fecha sistema
        System.exit(0);
    }
    
    protected void criaFormulario()
    {
    	// Cria formulario filho
    	FormularioFilho frame = new FormularioFilho();
        frame.setVisible(true); 
        
        // Adiciona janela filho na janela pai
        painel.add(frame);
        try 
        {
        	// Seta foco
            frame.setSelected(true);
        }
        catch (java.beans.PropertyVetoException e)        
        {
        	
        }
    }
       
    
    private static void criaGUI() 
    {     
    	// Decora barra da janela
    	JFrame.setDefaultLookAndFeelDecorated(true);

    	// Cria formulario filho     
        FormularioMdi formulario = new FormularioMdi();
        formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
        // Exibe formulario
        formulario.setVisible(true);
    }

    public static void main(String[] args)
    {
        javax.swing.SwingUtilities.invokeLater(new Runnable()
        {
            public void run() 
            {
            	// Chama GUI
                criaGUI();
            }
        });
    }
}

Classe – Janela Filho

import java.awt.Container;
import java.awt.Dimension;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class FormularioFilho extends JInternalFrame
{   
	// Declara componentes
	JLabel rotulo;
	JTextField campo;
	JButton botao;
	
	// Declara variaveis
	static int formulario = 0;
    static int posicao = 30;
    
    public FormularioFilho()
    {    	
    	// Herda da classe filho
    	super("Formulario Filho - Instancia :" + (++formulario), true, true, true, true);

    	// Cria painel
        setContentPane(criaPainel());
    	pack();
        
    	// Define posição do formulario
        setLocation(posicao * formulario, posicao * formulario);        
        
    }
    
    public Container criaPainel()
    {
    	// Cria painel
    	JPanel painel = new JPanel(); 
    	
    	// Define layout
    	painel.setLayout(new BoxLayout(painel, BoxLayout.PAGE_AXIS));
		painel.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
		
		// Cria componentes
		rotulo = new JLabel("Digite Seu nome:");
		campo = new JTextField();
		botao = new JButton("Ok");
		
		// define tamanho do campo
		campo.setPreferredSize(new Dimension(300,20));
		
		// Adiciona componentes ao painel	
		painel.add(rotulo);		
		painel.add(Box.createVerticalStrut(10));
		painel.add(campo);
		painel.add(Box.createVerticalStrut(20));
		painel.add(botao);
    	
    	return painel;
    }
    
    private static void criaGUI() 
    {
    	// Cria GUI (Janela Filho)
        JFrame.setDefaultLookAndFeelDecorated(true);
     
        FormularioMdi formulario = new FormularioMdi();
        formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
        // Exibe formulario
        formulario.setVisible(true);
    }

    public static void main(String[] args)
    {
        javax.swing.SwingUtilities.invokeLater(new Runnable()
        {
            public void run() 
            {
            	// Chama GUI
                criaGUI();
            }
        });
    }
}

O primeiro passo para uma boa gestão objetos JavaScript está em ter um espaço de nomes, ou um objeto JavaScript que contém o nosso código, que você sabe que não vai entrar em conflito com o código do Firefox ou outras extensões. Declaração de namespace é melhor localizado em um arquivo próprio.

Por convenção, o nome de um módulo deve corresponder a seu namespace. O módulo desenvolvimentoaberto deve ser armazenado num ficheiro chamado desenvolvimentoaberto.js.

namespace-js

Namespace – Javascript

 

Exemplo:

Neste exemplo criamos um namespace que pode conter uma coleção de objetos.

Html / JavaScript

<!DOCTYPE html>
<html>

<head>
   <title>Desenvolvimento Aberto</title>
</head>

<body>

<h2>Desenvolvimento Aberto</h2>
<h3>Javascript Orientado a Objeto - Namespace</h3>
<h4>JavaScript</h4>
<br>

<pre>
<script>

// Declara namespace
var desenvolvimento; 

// Iniacializa namespace
if (!desenvolvimento) desenvolvimento = {};

//   Cria namespace
desenvolvimento.aberto = {};

//  Adiciona metodos
desenvolvimento.aberto.soma = function (x, y) { return x + y };
desenvolvimento.aberto.subt = function (x, y) { return x - y };

//  Cria Alias
var das = desenvolvimento.aberto.soma;
var dat = desenvolvimento.aberto.subt;

// Escreve no documento html    

document.writeln("O Namespace desenvolvimento.aberto contem:") 

document.writeln("\nSoma: 30 + 20 = " +  desenvolvimento.aberto.soma(30, 20));

document.writeln("Alias - Soma = " + das(30, 20));

document.writeln("\nSubtrai: 30 - 20 = " +  desenvolvimento.aberto.subt(30, 20));

document.writeln("Alias - Subtrai = " + dat(30, 20));

</script>
</pre>

</body>

</html>