mirror of
https://github.com/processing/processing4.git
synced 2026-02-04 06:09:17 +01:00
other removals, clean up todo items
This commit is contained in:
@@ -1,370 +0,0 @@
|
||||
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
|
||||
/*
|
||||
Part of the Processing project - http://processing.org
|
||||
Copyright (c) 2012-15 The Processing Foundation
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
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, write to the Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package processing.mode.java.pdex;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Frame;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.ComponentListener;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.WindowConstants;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
import processing.app.Toolkit;
|
||||
import processing.mode.java.JavaEditor;
|
||||
|
||||
|
||||
/**
|
||||
* Error Window that displays a tablular list of errors. Clicking on an error
|
||||
* scrolls to its location in the code.
|
||||
*
|
||||
* @author Manindra Moharana <me@mkmoharana.com>
|
||||
*
|
||||
*/
|
||||
public class ErrorWindow extends JFrame {
|
||||
|
||||
private JPanel contentPane;
|
||||
/**
|
||||
* The table displaying the errors
|
||||
*/
|
||||
protected XQErrorTable errorTable;
|
||||
/**
|
||||
* Scroll pane that contains the Error Table
|
||||
*/
|
||||
protected JScrollPane scrollPane;
|
||||
|
||||
//protected JavaEditor thisEditor;
|
||||
protected JavaEditor editor;
|
||||
private JFrame thisErrorWindow;
|
||||
|
||||
/**
|
||||
* Handles the sticky Problem window
|
||||
*/
|
||||
private DockTool2Base Docker;
|
||||
|
||||
protected ErrorCheckerService errorCheckerService;
|
||||
|
||||
/**
|
||||
* Preps up ErrorWindow
|
||||
*
|
||||
* @param editor
|
||||
* - Editor
|
||||
* @param ecs - ErrorCheckerService
|
||||
*/
|
||||
public ErrorWindow(JavaEditor editor, ErrorCheckerService ecs) {
|
||||
thisErrorWindow = this;
|
||||
errorCheckerService = ecs;
|
||||
this.editor = editor;
|
||||
setTitle("Problems");
|
||||
prepareFrame();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets up ErrorWindow
|
||||
*/
|
||||
protected void prepareFrame() {
|
||||
Toolkit.setIcon(this);
|
||||
setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
|
||||
// Default size: setBounds(100, 100, 458, 160);
|
||||
setBounds(100, 100, 458, 160); // Yeah, I hardcode such things sometimes. Hate me.
|
||||
|
||||
contentPane = new JPanel();
|
||||
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
setContentPane(contentPane);
|
||||
contentPane.setLayout(new BorderLayout(0, 0));
|
||||
|
||||
scrollPane = new JScrollPane();
|
||||
contentPane.add(scrollPane);
|
||||
|
||||
errorTable = new XQErrorTable(editor);
|
||||
scrollPane.setViewportView(errorTable);
|
||||
|
||||
try {
|
||||
Docker = new DockTool2Base();
|
||||
addListeners();
|
||||
} catch (Exception e) {
|
||||
System.out.println("addListeners() acted silly.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (editor != null) {
|
||||
setLocation(editor.getLocation().x + editor.getWidth(),
|
||||
editor.getLocation().y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Updates the error table with new data(Table Model). Called from Error
|
||||
* Checker Service.
|
||||
*
|
||||
* @param tableModel
|
||||
* - Table Model
|
||||
* @return True - If error table was updated successfully.
|
||||
*/
|
||||
synchronized public boolean updateTable(final TableModel tableModel) {
|
||||
// XQErrorTable handles evrything now
|
||||
return errorTable.updateTable(tableModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds various listeners to components of EditorWindow and to the Editor
|
||||
* window
|
||||
*/
|
||||
protected void addListeners() {
|
||||
|
||||
if (thisErrorWindow == null)
|
||||
System.out.println("ERW null");
|
||||
|
||||
thisErrorWindow.addComponentListener(new ComponentListener() {
|
||||
|
||||
@Override
|
||||
public void componentShown(ComponentEvent e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
Docker.tryDocking();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentMoved(ComponentEvent e) {
|
||||
Docker.tryDocking();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentHidden(ComponentEvent e) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
thisErrorWindow.addWindowListener(new WindowAdapter() {
|
||||
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e) {
|
||||
// removing b/c this was the only use of problemWindowMenuCB [fry 150125]
|
||||
// thisEditor.problemWindowMenuCB.setSelected(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void windowDeiconified(WindowEvent e) {
|
||||
editor.setExtendedState(Frame.NORMAL);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if (editor == null) {
|
||||
System.out.println("Editor null");
|
||||
return;
|
||||
}
|
||||
|
||||
/*thisEditor.addWindowListener(new WindowAdapter() {
|
||||
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void windowClosed(WindowEvent e) {
|
||||
errorCheckerService.pauseThread();
|
||||
errorCheckerService.stopThread(); // Bye bye thread.
|
||||
thisErrorWindow.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void windowIconified(WindowEvent e) {
|
||||
thisErrorWindow.setExtendedState(Frame.ICONIFIED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void windowDeiconified(WindowEvent e) {
|
||||
thisErrorWindow.setExtendedState(Frame.NORMAL);
|
||||
}
|
||||
|
||||
});*/
|
||||
|
||||
editor.addComponentListener(new ComponentListener() {
|
||||
|
||||
@Override
|
||||
public void componentShown(ComponentEvent e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
if (Docker.isDocked()) {
|
||||
Docker.dock();
|
||||
} else {
|
||||
Docker.tryDocking();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentMoved(ComponentEvent e) {
|
||||
|
||||
if (Docker.isDocked()) {
|
||||
Docker.dock();
|
||||
} else {
|
||||
Docker.tryDocking();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentHidden(ComponentEvent e) {
|
||||
// System.out.println("ed hidden");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implements the docking feature of the tool - The frame sticks to the
|
||||
* editor and once docked, moves along with it as the editor is resized,
|
||||
* moved, or closed.
|
||||
*
|
||||
* This class has been borrowed from Tab Manager tool by Thomas Diewald. It
|
||||
* has been slightly modified and used here.
|
||||
*
|
||||
* @author Thomas Diewald , http://thomasdiewald.com
|
||||
*/
|
||||
private class DockTool2Base {
|
||||
|
||||
private int docking_border = 0;
|
||||
private int dock_on_editor_y_offset_ = 0;
|
||||
private int dock_on_editor_x_offset_ = 0;
|
||||
|
||||
// ///////////////////////////////
|
||||
// ____2____
|
||||
// | |
|
||||
// | |
|
||||
// 0 | editor | 1
|
||||
// | |
|
||||
// |_________|
|
||||
// 3
|
||||
// ///////////////////////////////
|
||||
|
||||
// public void reset() {
|
||||
// dock_on_editor_y_offset_ = 0;
|
||||
// dock_on_editor_x_offset_ = 0;
|
||||
// docking_border = 0;
|
||||
// }
|
||||
|
||||
public boolean isDocked() {
|
||||
return (docking_border >= 0);
|
||||
}
|
||||
|
||||
private final int MAX_GAP_ = 20;
|
||||
|
||||
//
|
||||
public void tryDocking() {
|
||||
if (editor == null) return;
|
||||
Frame frame = thisErrorWindow;
|
||||
|
||||
int ex = editor.getX();
|
||||
int ey = editor.getY();
|
||||
int ew = editor.getWidth();
|
||||
int eh = editor.getHeight();
|
||||
|
||||
int fx = frame.getX();
|
||||
int fy = frame.getY();
|
||||
int fw = frame.getWidth();
|
||||
int fh = frame.getHeight();
|
||||
|
||||
if (((fy > ey) && (fy < ey + eh))
|
||||
|| ((fy + fh > ey) && (fy + fh < ey + eh))) {
|
||||
int dis_border_left = Math.abs(ex - (fx + fw));
|
||||
int dis_border_right = Math.abs((ex + ew) - (fx));
|
||||
|
||||
if (dis_border_left < MAX_GAP_ || dis_border_right < MAX_GAP_) {
|
||||
docking_border = (dis_border_left < dis_border_right) ? 0
|
||||
: 1;
|
||||
dock_on_editor_y_offset_ = fy - ey;
|
||||
dock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (((fx > ex) && (fx < ex + ew))
|
||||
|| ((fx + fw > ey) && (fx + fw < ex + ew))) {
|
||||
int dis_border_top = Math.abs(ey - (fy + fh));
|
||||
int dis_border_bot = Math.abs((ey + eh) - (fy));
|
||||
|
||||
if (dis_border_top < MAX_GAP_ || dis_border_bot < MAX_GAP_) {
|
||||
docking_border = (dis_border_top < dis_border_bot) ? 2 : 3;
|
||||
dock_on_editor_x_offset_ = fx - ex;
|
||||
dock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
docking_border = -1;
|
||||
}
|
||||
|
||||
public void dock() {
|
||||
if (editor == null) return;
|
||||
Frame frame = thisErrorWindow;
|
||||
|
||||
int ex = editor.getX();
|
||||
int ey = editor.getY();
|
||||
int ew = editor.getWidth();
|
||||
int eh = editor.getHeight();
|
||||
|
||||
// int fx = frame.getX();
|
||||
// int fy = frame.getY();
|
||||
int fw = frame.getWidth();
|
||||
int fh = frame.getHeight();
|
||||
|
||||
int x = 0, y = 0;
|
||||
if (docking_border == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (docking_border == 0) {
|
||||
x = ex - fw;
|
||||
y = ey + dock_on_editor_y_offset_;
|
||||
}
|
||||
if (docking_border == 1) {
|
||||
x = ex + ew;
|
||||
y = ey + dock_on_editor_y_offset_;
|
||||
}
|
||||
|
||||
if (docking_border == 2) {
|
||||
x = ex + dock_on_editor_x_offset_;
|
||||
y = ey - fh;
|
||||
}
|
||||
if (docking_border == 3) {
|
||||
x = ex + dock_on_editor_x_offset_;
|
||||
y = ey + eh;
|
||||
}
|
||||
frame.setLocation(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user