view src/remoteeditor/action/RemoteEditorAction.java @ 213:bea1625524fe default tip

when you put and join to SessionManager, this plugin open a window for inputting address and port of SessionManager
author kazz
date Mon, 20 Dec 2010 14:14:41 +0900
parents f3a608f17a39
children
line wrap: on
line source

package remoteeditor.action;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.editors.text.UntitledTextFileWizard;
import org.eclipse.ui.texteditor.ITextEditor;

import remoteeditor.editors.REPEditor;
import remoteeditor.editors.REPTextImpl2;

@SuppressWarnings("restriction")
public class RemoteEditorAction implements IWorkbenchWindowActionDelegate {
	
	private IDocument document;
	private Shell shell;
	private Text hostname;
	private Text port;
	private IAction action;
	
	public RemoteEditorAction(){
		Display display = Display.getDefault();
		this.shell = new Shell(display);
		this.shell.setText("Connection To SessionManager");
		this.shell.setLayout(new FillLayout());
		this.hostname = new Text(shell, SWT.SINGLE|SWT.BORDER);
		hostname.setText("localhost");
		this.port = new Text(shell, SWT.SINGLE|SWT.BORDER);
		port.setText("8766");
		Button button = new Button(shell, SWT.NULL);
		button.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				connect();
				shell.dispose();
			}
		});
		button.setText("connect");
	}

	public void dispose() {

	}

	public void init(IWorkbenchWindow window) {

	}

	public void connect() {
		if(action.getId().equals("EclipseRemoteEditor.action1")){
			IWorkbench workbench = PlatformUI.getWorkbench();
			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
			IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
			IEditorPart editorPart = workbenchPage.getActiveEditor();
			IEditorInput editorinput = editorPart.getEditorInput();
			Display display = workbench.getDisplay();
			
//			TextEditor 外部から IDocument を取得する方法
			ITextEditor editor = (ITextEditor) editorPart;
			document = editor.getDocumentProvider().getDocument(editorinput);
			REPEditor repEditor = new REPEditor(new REPTextImpl2(document, display), true, hostname.getText(), new Integer(port.getText()));
			repEditor.start();
		}else if(action.getId().equals("EclipseRemoteEditor.action2")){
			IWorkbench workbench = PlatformUI.getWorkbench();
		
			UntitledTextFileWizard wizard = new UntitledTextFileWizard();
			wizard.init(workbench, null);
			wizard.performFinish();
			
			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
			IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
			IEditorPart editorPart = workbenchPage.getActiveEditor();
			IEditorInput editorinput = editorPart.getEditorInput();
			Display display = workbench.getDisplay();
			
			ITextEditor editor = (ITextEditor) editorPart;
			document = editor.getDocumentProvider().getDocument(editorinput);
			REPEditor repEditor = new REPEditor(new REPTextImpl2(document, display), false);
			repEditor.start();
		}
	
	}	
	
	public void run(IAction action) {
		System.out.println(action.getId());
		this.action = action;
		shell.pack();
		shell.open();
		/*
		IWorkbench workbench = PlatformUI.getWorkbench();
		//Display display = workbench.getDisplay();
		IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
		IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
		IEditorPart editorPart = workbenchPage.getActiveEditor();
		
		//System.out.println(editorPart.getEditorInput().toString());
		IEditorInput editorinput = editorPart.getEditorInput();
		
		workbenchPage.closeEditor(editorPart, true);
		
		System.out.println("ActionID: " + action.getId());
		*/
		
		/*** 危険 ***/
//		IWorkspace workspace = ResourcesPlugin.getWorkspace();
//		IWorkspaceRoot root = workspace.getRoot();
//		IProject project = root.getProject("Pin");
//		//IProject[] project = root.getProjects();
//		IContainer container = project;
//		System.out.println(project.getFullPath().toOSString());
//		IFile file = container.getFile(new Path("hoge.txt"));
//		String string = "hugo";
//		InputStream is = new ByteArrayInputStream(string.getBytes());
//		try {
//			file.create(is, false, null);
//		} catch (CoreException e1) {
//			e1.printStackTrace();
//		}
//		if(!project.exists()) {
//			try {
//				System.out.println("afro");
//				project.create(null);
//			} catch (CoreException e) {
//				e.printStackTrace();
//			}
//		}
		
		//org.eclipse.ui.part.FileEditorInput();
		
		//File file = new File("/Users/j02054/Desktop/SessionManager/sessionmanager.sh");
		
		//System.out.println(editorinput.getName());
		
		//ComboSample1 combo = new ComboSample1(display);
		//combo.addText();
		//combo.open();
		
		//IWorkbenchPage page = workbenchWindow.getActivePage();
		//editorPart = IDE.openEditor(workbenchPage,null);
		/*
		try {
			editorPart = workbenchPage.openEditor(editorinput, "remoteeditor.editors.RemoteEditor");
			//editorPart = workbenchPage.openEditor(null, "remoteeditor.editors.RemoteEditor");
			System.out.println("test");
		} catch (PartInitException e) {
			e.printStackTrace();
		}*/

	}

	public void selectionChanged(IAction action, ISelection selection) {

	}

}