Package org.renjin.studio

Source Code of org.renjin.studio.MainFrame

/*
* R : A Computer Language for Statistical Data Analysis
* Copyright (C) 1995, 1996  Robert Gentleman and Ross Ihaka
* Copyright (C) 1997--2008  The R Development Core Team
* Copyright (C) 2003, 2004  The R Foundation
* Copyright (C) 2010 bedatadriven
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package org.renjin.studio;


import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.io.PrintWriter;

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSplitPane;
import javax.swing.UIManager;

import org.apache.commons.vfs2.FileSystemException;
import org.renjin.eval.Context;
import org.renjin.eval.Session;
import org.renjin.studio.console.Console;
import org.renjin.studio.console.ConsoleFrame;
import org.renjin.studio.console.Repl;


public class MainFrame extends JFrame {

  private ConsoleFrame console;
  private DocumentPane documentTab;
  private WorkspacePane workspaceTab;
  private FilesPane filesTab;
  private StudioSession session;
 
  public MainFrame(StudioSession session) {
    super("Renjin Studio");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.session = new StudioSession();
   
    console = new ConsoleFrame();
    session.setStdOut(new PrintWriter(console.getOut()));
   
    documentTab = new DocumentPane(session);
    workspaceTab = new WorkspacePane();
    filesTab = new FilesPane();
   
//    JSplitPane westVertPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
//        documentTab, console);
//    westVertPane.setResizeWeight(0.50);
//
//    JSplitPane eastVertPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
//        workspaceTab, filesTab);
//    eastVertPane.setResizeWeight(0.50);
//
//    JSplitPane horizPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
//        westVertPane, eastVertPane);
//    horizPane.setResizeWeight(0.50);
//
//    add(horizPane, BorderLayout.CENTER);
   
    add(console, BorderLayout.CENTER);
   
    //setupMenu();
   
    setSize(650, 450);
    setVisible(true);
  }

  private Console getConsole() {
    return console;
  }

  public static void main(String[] args) throws FileSystemException {

    loadNativeLookAndFeel();

    StudioSession session = new StudioSession();
   
    MainFrame mainFrame = new MainFrame(session);
   

    Repl interpreter = new Repl( mainFrame.getConsole(), session );
    new Thread ( interpreter ).start();

 
  }

  private static void loadNativeLookAndFeel() {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  private void setupMenu() {
    //Create the menu bar.
    JMenuBar menuBar = new JMenuBar();

    //Build the first menu.
    JMenu fileMenu = new JMenu("File");
    fileMenu.setMnemonic(KeyEvent.VK_A);
    menuBar.add(fileMenu);
   
    JMenu newMenu = new JMenu("New");
    newMenu.setMnemonic(KeyEvent.VK_N);
   
    JMenuItem newScriptItem = new JMenuItem("R Script");
    newMenu.add(newScriptItem);
   
    fileMenu.add(newMenu);
   
    setJMenuBar(menuBar);
  }
}
TOP

Related Classes of org.renjin.studio.MainFrame

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.