powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Sub-Sub-Window в vaadin
18 сообщений из 18, страница 1 из 1
Sub-Sub-Window в vaadin
    #38549858
Skif Swarogich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый всем!
Вопрос следующего характера. Как сделать sub window у sub window?
Классически делаем из главного окна:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
// Тут начало кода
		final Window window = new Window();

		setMainWindow(window);

// Тут продолжение кода

		Button open2SubWindow = new Button("New Win");
		open2SubWindow.addListener(new Button.ClickListener() {
			
			@Override
			public void buttonClick(ClickEvent event) {
				// TODO Auto-generated method stub
				Window sub2window = new Window("My Sub Window");
				window.addWindow(sub2window);
				sub2window.setModal(true);
			}
		});
		window.addComponent(open2SubWindow);


Делаем аналогично в под окне вызванного из window:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
		// Тут начало кода
		mywindow = new Window(windowcaption);
		mywindow.center();
		mywindow.setWidth("700px");
		mywindow.setHeight("500px");
		//mywindow.setModal(true);
		window.addWindow(mywindow);
		// Тут продолжение кода

		Button openSubWindow = new Button("New Win");
		openSubWindow.addListener(new Button.ClickListener() {
			
			@Override
			public void buttonClick(ClickEvent event) {
				// TODO Auto-generated method stub
				Window subwindow = new Window("My Sub Window");
				mywindow.addWindow(subwindow);
				subwindow.setModal(true);
			}
		});
		mywindow.addComponent(openSubWindow);


Подскажите, как правильно вызвать несколько вложенных окон?
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550236
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Skif Swarogich,

я так понимаю vaadin6?
можно сделать окно как в сделано в аддоне ConfirmDialog, посмотрите на код аддона и вызывать из модального.

ConfirmDialog
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550259
Skif Swarogich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fercSkif Swarogich,

я так понимаю vaadin6?
можно сделать окно как в сделано в аддоне ConfirmDialog, посмотрите на код аддона и вызывать из модального.

ConfirmDialog
Да, vaadin 6. Мне, правда, уже на форуме vaadin сказали что сие не возможно, но всё равно гляну. Спасибо!
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550271
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Skif SwarogichfercSkif Swarogich,

я так понимаю vaadin6?
можно сделать окно как в сделано в аддоне ConfirmDialog, посмотрите на код аддона и вызывать из модального.

ConfirmDialog
Да, vaadin 6. Мне, правда, уже на форуме vaadin сказали что сие не возможно, но всё равно гляну. Спасибо!

Как бы как раз и выглядит как несколько модальных окон...
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550322
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вообщем ща быстренько попробовал, все можно так делать, только addWindow надо делать MainWindow

из вашего кода
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Button openSubWindow = new Button("New Win");
		openSubWindow.addListener(new Button.ClickListener() {
			
			@Override
			public void buttonClick(ClickEvent event) {
				// TODO Auto-generated method stub
				Window subwindow = new Window("My Sub Window");
				subwindow.setModal(true);
                                YourApp.getInstance().getMainWindow().addWindow(subwindow);
			}
		});



все отлично получается
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550348
Skif Swarogich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferc,

А можете полный код привести, а то у меня что-то не получается :(
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550356
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Skif Swarogichferc,

А можете полный код привести, а то у меня что-то не получается :(

выкладывайте ваш код, я просто в действующем проекте кусок накидал
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550374
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
public class YourApp extends Application implements Button.ClickListener, ApplicationContext.TransactionListener, HttpServletRequestListener {
private final Button btnTest = new Button("test");
...
public HorizontalLayout createToolbar(){
...
        HorizontalLayout lo = new HorizontalLayout();
        HorizontalLayout logoutLayout = new HorizontalLayout();
        lo.addComponent(btnTest);
...
btnTest.addListener(this);
}

public void buttonClick(Button.ClickEvent event) {
        final Button source = event.getButton();
        if(source == btnTest){
           LoginWindow loginWindow = new LoginWindow();
            loginWindow.setModal(true);
           getMainWindow().addWindow(loginWindow);
        }
}

}

LoginWindow.java

public class LoginWindow extends Window {
private final Button btnExit = new Button("Выход");

btnExit.addListener(new Button.ClickListener() {

            private static final long serialVersionUID = 537197428247982562L;

            @Override
            public void buttonClick(Button.ClickEvent event) {
                LoginWindow loginWindow = new LoginWindow();
                loginWindow.setModal(true);
                YourApp.getInstance().getMainWindow().addWindow(loginWindow);
            }
        });
}
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550546
Skif Swarogich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferc,

увы...
Код: plaintext
1.
The method getInstance() is undefined for the type SpravochnikiIASKApplication
видимо я что-то не импортировал.


Код почищен и перенесён в другой проект, что бы не захламливать
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
package testSubWindowPortlet;

import com.sun.java.swing.plaf.windows.resources.windows;
import com.vaadin.Application;
import com.vaadin.ui.*;
import com.vaadin.*;
import com.vaadin.data.*;
import com.vaadin.ui.CustomComponent;
import com.vaadin.annotations.*;
import com.vaadin.data.Container.Filter;
import com.vaadin.data.Item;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.*;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.event.FieldEvents.TextChangeEvent;
import com.vaadin.event.FieldEvents.TextChangeListener;
import com.vaadin.ui.AbstractTextField.TextChangeEventMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.*;
import com.vaadin.service.*;
import com.vaadin.terminal.gwt.server.*;
import com.vaadin.portal.gwt.*;

import java.io.Serializable;

import com.vaadin.data.util.*;

@SuppressWarnings("serial")
public class TestSubWindowPortletApplication extends Application {

	@AutoGenerated
	private AbsoluteLayout mainLayout;
	@AutoGenerated
	private Panel panel_1;
	@AutoGenerated
	private VerticalLayout verticalLayout_1;
	@AutoGenerated
	private TabSheet tabSheet_1;
	@AutoGenerated
	private RichTextArea richTextArea_1;
	@AutoGenerated
	private Table table_1;
	@AutoGenerated
	private MenuBar menuBar_1;

	// Переменная для отладки - внутренний номер партии
	public Integer vnutNomerPart = new Integer(0);
	
	public void init() {
		final Window window = new Window();

		setMainWindow(window);


		window.addComponent(new spravochnikIASKpart("Добавить партию",vnutNomerPart, window));



		
	
	}

}



Второй класс, в котором как раз и рисуется всё остальное:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
package testSubWindowPortlet;

import java.util.*;

//import spravochnikiIASK.SpravochnikiIASKApplication.parametClassTransfer;

import com.vaadin.Application;
import com.vaadin.ui.*;
import com.vaadin.data.*;
import com.vaadin.data.util.*;
import com.vaadin.ui.Button.*;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Window.*;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import java.io.PrintStream;
import java.util.Iterator;
import com.vaadin.service.*;
import com.vaadin.terminal.gwt.server.*;
import com.vaadin.portal.gwt.*;


/** Component contains a button that allows opening a window. */
public class spravochnikIASKpart extends CustomComponent
	implements Window.CloseListener {
	Window mainwindow; // Reference to main window
	Window mywindow; // The window to be opened
	Button openbutton; // Button for opening the window
	Button closebutton; // A button in the window
	Label explanation; // A descriptive text
	String windowcaption; //zagolovok okna
	public Integer vnutNomerPartAdd = new Integer(0); 
	public spravochnikIASKpart(String label, Integer vNumPartAdd, Window main) {
		mainwindow = main;
		windowcaption = label;
		vnutNomerPartAdd = vNumPartAdd;
		final VerticalLayout layout = new VerticalLayout();
		openbutton = new Button(windowcaption, this,"openButtonClick");
		layout.addComponent(openbutton);
		setCompositionRoot(layout);
	}
	/** Handle the clicks for the two buttons. */
	public void openButtonClick(Button.ClickEvent event) {
		/* Create a new window. */
		mywindow = new Window(windowcaption);
		mywindow.center();
		mywindow.setWidth("700px");
		mywindow.setHeight("500px");
		mainwindow.addWindow(mywindow);
		mywindow.addListener(this);
		closebutton = new Button("Close", this, "closeButtonClick");
		//добавляем свои элементы
		addpartsdetails();
		mywindow.addComponent(closebutton);
		openbutton.setEnabled(false);
	}
	/** Handle Close button click and close the window. */
	public void closeButtonClick(Button.ClickEvent event) {
		mainwindow.removeWindow(mywindow);
		openbutton.setEnabled(true);
	}
	/** In case the window is closed otherwise. */
	public void windowClose(CloseEvent e) {
		openbutton.setEnabled(true);
	}
	
	public void addpartsdetails(){
				
		//mywindow.addComponent(new WindowOpener("My sub-window", mywindow));
		Button openSubWindow = new Button("New Win");
		openSubWindow.addListener(new Button.ClickListener() {
			
			@Override
			public void buttonClick(ClickEvent event) {
				// TODO Auto-generated method stub
				Window subwindow = new Window("My Sub Window");
				mywindow.addWindow(subwindow);
				subwindow.setModal(true);
				//spravochnikIASKApplication.getInstance().getMainWindow().addWindow(subwindow);
				
			}
		});
		mywindow.addComponent(openSubWindow);
		
		
		
		
		
	}
	

}
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550574
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
честно говоря не понял причем тут SpravochnikiIASKApplication

если так?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public void addpartsdetails(){
				
		//mywindow.addComponent(new WindowOpener("My sub-window", mywindow));
		Button openSubWindow = new Button("New Win");
		openSubWindow.addListener(new Button.ClickListener() {
			
			@Override
			public void buttonClick(ClickEvent event) {
				// TODO Auto-generated method stub
				Window subwindow = new Window("My Sub Window");
				mywindow.addWindow(subwindow);
				subwindow.setModal(true);
				TestSubWindowPortletApplication.getInstance().getMainWindow().addWindow(subwindow);
// или так -->             mainwindow.addWindow(subwindow);
				
			}
		});
		mywindow.addComponent(openSubWindow);
		
		
		
		
		
	}
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550581
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смысл в том что окно вы добавляете к вашему главному окну в приложении.
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550617
Skif Swarogich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fercчестно говоря не понял причем тут SpravochnikiIASKApplication

[/src]
Это основной проект из которого и выдран кусок для чистоты экспериментов.

TestSubWindowPortletApplication.getInstance().getMainWindow().addWindow(subwindow);
не собирается в виду ошибки
Код: plaintext
The method getInstance() is undefined for the type TestSubWindowPortletApplication

mainwindow.addWindow(subwindow);
Вылетает Exception
Код: plaintext
You can only add windows inside application-level windows
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550648
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Skif Swarogichfercчестно говоря не понял причем тут SpravochnikiIASKApplication

[/src]
Это основной проект из которого и выдран кусок для чистоты экспериментов.

TestSubWindowPortletApplication.getInstance().getMainWindow().addWindow(subwindow);
не собирается в виду ошибки
Код: plaintext
The method getInstance() is undefined for the type TestSubWindowPortletApplication

mainwindow.addWindow(subwindow);
Вылетает Exception
Код: plaintext
You can only add windows inside application-level windows


да с getInstance это моя вина, а меня там ThreadLocal сделан и получение текущего инстанса приложения....

ну на вскидку
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
TestSubWindowPortletApplication
public void init() {
window.addComponent(new spravochnikIASKpart("Добавить партию",vnutNomerPart, window, this));
}

spravochnikIASKpart

TestSubWindowPortletApplication app;
 public spravochnikIASKpart(String label, Integer vNumPartAdd, Window main, TestSubWindowPortletApplication app) {
        this.app = app;
}

public void addpartsdetails(){

        //mywindow.addComponent(new WindowOpener("My sub-window", mywindow));
        Button openSubWindow = new Button("New Win");
        openSubWindow.addListener(new Button.ClickListener() {

            private static final long serialVersionUID = 632020338808011929L;

            @Override
            public void buttonClick(Button.ClickEvent event) {
                // TODO Auto-generated method stub
                Window subwindow = new Window("My Sub Window");
                
                subwindow.setModal(true);
                app.getMainWindow().addWindow(subwindow);
               

            }
        });
        mywindow.addComponent(openSubWindow);





    }
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550872
Skif Swarogich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Увы, тоже исключение, что и при mainwindow.addWindow(subwindow);
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550953
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Skif SwarogichУвы, тоже исключение, что и при mainwindow.addWindow(subwindow);

бред какой-то, завтра посмотрю
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38550962
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fercSkif SwarogichУвы, тоже исключение, что и при mainwindow.addWindow(subwindow);

бред какой-то, завтра посмотрю

Может вот что сделать, а не Window добовлять, попробуйте пока.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public class SubWindow extends Window {
public SubWindow(String title){
setTiltle(title);
}
----

}

public void addpartsdetails(){

        //mywindow.addComponent(new WindowOpener("My sub-window", mywindow));
        Button openSubWindow = new Button("New Win");
        openSubWindow.addListener(new Button.ClickListener() {

            private static final long serialVersionUID = 632020338808011929L;

            @Override
            public void buttonClick(Button.ClickEvent event) {
                // TODO Auto-generated method stub
                SubWindow subwindow = new SubWindow("My Sub Window");
                
                subwindow.setModal(true);
                app.getMainWindow().addWindow(subwindow);
               

            }
        });
        mywindow.addComponent(openSubWindow);


    }
...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38551368
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TestSubWindowPortletApplication.java

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
package com;

import com.vaadin.Application;
import com.vaadin.ui.Window;

public class TestSubWindowPortletApplication extends Application {

    private static final long serialVersionUID = -6273658164373910733L;

    // Переменная для отладки - внутренний номер партии
    public Integer vnutNomerPart = new Integer(0);

    @Override
    public void init() {
        final Window window = new Window();

        setMainWindow(window);

        window.addComponent(new spravochnikIASKpart("Добавить партию", vnutNomerPart, window, this));
    }

}




spravochnikIASKpart.java

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
package com;

import com.vaadin.ui.*;

public class spravochnikIASKpart extends CustomComponent implements Window.CloseListener{
    private static final long serialVersionUID = 8546777624663953992L;
    Window mainwindow; // Reference to main window
    Window mywindow; // The window to be opened
    Button openbutton; // Button for opening the window
    Button closebutton; // A button in the window
    Label explanation; // A descriptive text
    String windowcaption; //zagolovok okna
    public Integer vnutNomerPartAdd = new Integer(0);
    TestSubWindowPortletApplication app;

    public spravochnikIASKpart(String label, Integer vNumPartAdd, Window main, TestSubWindowPortletApplication app) {
        this.app = app;
        mainwindow = main;
        windowcaption = label;
        vnutNomerPartAdd = vNumPartAdd;
        final VerticalLayout layout = new VerticalLayout();
        openbutton = new Button(windowcaption, this,"openButtonClick");
        layout.addComponent(openbutton);
        setCompositionRoot(layout);
    }
    /** Handle the clicks for the two buttons. */
    public void openButtonClick(Button.ClickEvent event) {
        /* Create a new window. */
        mywindow = new Window(windowcaption);
        mywindow.center();
        mywindow.setWidth("700px");
        mywindow.setHeight("500px");
        mainwindow.addWindow(mywindow);
        mywindow.addListener(this);
        closebutton = new Button("Close", this, "closeButtonClick");
        //добавляем свои элементы
        addpartsdetails();
        mywindow.addComponent(closebutton);
        openbutton.setEnabled(false);
    }
    /** Handle Close button click and close the window. */
    public void closeButtonClick(Button.ClickEvent event) {
        mainwindow.removeWindow(mywindow);
        openbutton.setEnabled(true);
    }
    /** In case the window is closed otherwise. */
    public void windowClose(Window.CloseEvent e) {
        openbutton.setEnabled(true);
    }

    public void addpartsdetails(){

        //mywindow.addComponent(new WindowOpener("My sub-window", mywindow));
        Button openSubWindow = new Button("New Win");
        openSubWindow.addListener(new Button.ClickListener() {

            private static final long serialVersionUID = 632020338808011929L;

            @Override
            public void buttonClick(Button.ClickEvent event) {
                // TODO Auto-generated method stub
                Window subwindow = new Window("My Sub Window");
                subwindow.setModal(true);
                app.getMainWindow().addWindow(subwindow); // и так работает
//                mainwindow.addWindow(subwindow); // и так тоже работает
                //spravochnikIASKApplication.getInstance().getMainWindow().addWindow(subwindow);

            }
        });
        mywindow.addComponent(openSubWindow);


    }

}


...
Рейтинг: 0 / 0
Sub-Sub-Window в vaadin
    #38551374
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вообще как-то все очень ужасно написано, надеюсь это просто проба vaadin.
почитайте внимательнее

vaadin6

если только предполагается что-то делать, то советую сразу на vaadin 7 делать

vaadin7
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Sub-Sub-Window в vaadin
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]