diff --git a/processing/app/PdeEditor.java b/processing/app/PdeEditor.java index e2793c92f..26da24a83 100644 --- a/processing/app/PdeEditor.java +++ b/processing/app/PdeEditor.java @@ -76,9 +76,13 @@ public class PdeEditor extends JFrame JSplitPane splitPane; JPanel consolePanel; + JLabel lineNumberComponent; + // currently opened program public PdeSketch sketch; + PdeEditorLineStatus lineStatus; + public JEditTextArea textarea; PdeEditorListener listener; @@ -171,23 +175,35 @@ public class PdeEditor extends JFrame Container pain = getContentPane(); pain.setLayout(new BorderLayout()); - buttons = new PdeEditorButtons(this); - pain.add("West", buttons); + Box box = Box.createVerticalBox(); - JPanel rightPanel = new JPanel(); - rightPanel.setLayout(new BorderLayout()); + Box upper = Box.createVerticalBox(); + //JPanel box = new JPanel(); + //box.setLayout(new FlowLayout(FlowLayout.VERTICAL)); + + buttons = new PdeEditorButtons(this); + //pain.add("West", buttons); + //box.add(buttons); + upper.add(buttons); + + //JPanel rightPanel = new JPanel(); + //rightPanel.setLayout(new BorderLayout()); header = new PdeEditorHeader(this); - rightPanel.add(header, BorderLayout.NORTH); + //rightPanel.add(header, BorderLayout.NORTH); + //box.add(header); + upper.add(header); textarea = new JEditTextArea(new PdeTextAreaDefaults()); textarea.setRightClickPopup(new TextAreaPopup()); textarea.setTokenMarker(new PdeKeywords()); - textarea.setHorizontalOffset(5); + textarea.setHorizontalOffset(6); //textarea.setBorder(new EmptyBorder(0, 20, 0, 0)); //textarea.setBackground(Color.white); + //textarea.setMaximumSize(new Dimension(3000, 3000)); + // assemble console panel, consisting of status area and the console itself consolePanel = new JPanel(); //System.out.println(consolePanel.getInsets()); @@ -199,13 +215,27 @@ public class PdeEditor extends JFrame console = new PdeEditorConsole(this); consolePanel.add(console, BorderLayout.CENTER); + /* + lineNumberComponent = new JLabel(" 1234"); //, JLabel.LEFT); + lineNumberComponent.setBackground(Color.BLACK); + lineNumberComponent.setForeground(Color.WHITE); + lineNumberComponent.setFont(new Font("SansSerif", Font.PLAIN, 10)); + box.add(lineNumberComponent); + */ + lineStatus = new PdeEditorLineStatus(textarea); + consolePanel.add(lineStatus, BorderLayout.SOUTH); + //box.add(lineStatus); + + upper.add(textarea); splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, - textarea, consolePanel); + upper, consolePanel); + //textarea, consolePanel); splitPane.setOneTouchExpandable(true); // repaint child panes while resizing splitPane.setContinuousLayout(true); - // if window increases in size, give all of increase to textarea (top pane) + // if window increases in size, give all of increase to + // the textarea in the uppper pane splitPane.setResizeWeight(1D); // to fix ugliness.. normally macosx java 1.3 puts an @@ -220,14 +250,25 @@ public class PdeEditor extends JFrame splitPane.setDividerSize(dividerSize); } - rightPanel.add(splitPane, BorderLayout.CENTER); + splitPane.setMinimumSize(new Dimension(600, 600)); + //splitPane.setBackground(Color.RED); + //splitPane.setMaximumSize(new Dimension(3000, 3000)); + ///rightPanel.add(splitPane, BorderLayout.CENTER); + box.add(splitPane); - pain.add("Center", rightPanel); + //setBackground(Color.green); + //box.add(textarea); + //box.add(consolePanel); + + //pain.add("Center", rightPanel); // hopefully these are no longer needed w/ swing // (har har har.. that was wishful thinking) listener = new PdeEditorListener(this, textarea); - textarea.pdeEditorListener = listener; + //textarea.editorListener = listener; + + //pain.add("West", box); + pain.add(box); // set the undo stuff for this feller Document document = textarea.getDocument(); diff --git a/processing/app/PdeEditorButtons.java b/processing/app/PdeEditorButtons.java index a5b4fe927..e80c2bfa8 100644 --- a/processing/app/PdeEditorButtons.java +++ b/processing/app/PdeEditorButtons.java @@ -35,21 +35,22 @@ import javax.swing.event.*; public class PdeEditorButtons extends JComponent implements MouseInputListener { static final String title[] = { - "", "run", "stop", "new", "open", "save", "export" + "Run", "Stop", "New", "Open", "Save", "Export" + //"run", "stop", "new", "open", "save", "export" }; static final int BUTTON_COUNT = title.length; - static final int BUTTON_WIDTH = PdePreferences.GRID_SIZE; - static final int BUTTON_HEIGHT = PdePreferences.GRID_SIZE; + static final int BUTTON_WIDTH = 27; //PdePreferences.GRID_SIZE; + static final int BUTTON_HEIGHT = 32; //PdePreferences.GRID_SIZE; + static final int BUTTON_GAP = 15; //BUTTON_WIDTH / 2; - static final int NOTHING = 0; - static final int RUN = 1; - static final int STOP = 2; + static final int RUN = 0; + static final int STOP = 1; - static final int NEW = 3; - static final int OPEN = 4; - static final int SAVE = 5; - static final int EXPORT = 6; + static final int NEW = 2; + static final int OPEN = 3; + static final int SAVE = 4; + static final int EXPORT = 5; static final int INACTIVE = 0; static final int ROLLOVER = 1; @@ -78,13 +79,13 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { Image stateImage[]; int which[]; // mapping indices to implementation - int x1, x2; - int y1[], y2[]; + int x1[], x2[]; + int y1, y2; String status; Font statusFont; Color statusColor; - int statusY; + //int statusY; public PdeEditorButtons(PdeEditor editor) { @@ -94,7 +95,7 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { buttonCount = 0; which = new int[BUTTON_COUNT]; - which[buttonCount++] = NOTHING; + //which[buttonCount++] = NOTHING; which[buttonCount++] = RUN; which[buttonCount++] = STOP; which[buttonCount++] = NEW; @@ -108,57 +109,36 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { status = ""; - //setLayout(null); - //status = new JLabel(); statusFont = PdePreferences.getFont("buttons.status.font"); statusColor = PdePreferences.getColor("buttons.status.color"); - //add(status); - //status.setBounds(-5, BUTTON_COUNT * BUTTON_HEIGHT, - // BUTTON_WIDTH + 15, BUTTON_HEIGHT); - //status.setAlignment(Label.CENTER); - statusY = (BUTTON_COUNT + 1) * BUTTON_HEIGHT; + //statusY = (BUTTON_COUNT + 1) * BUTTON_HEIGHT; addMouseListener(this); addMouseMotionListener(this); } - /* - public void update() { - paint(this.getGraphics()); - } - - public void update(Graphics g) { - paint(g); - } - */ - - //public void paintComponent(Graphics g) { - //super.paintComponent(g); - //} - - public void paintComponent(Graphics screen) { if (inactive == null) { inactive = new Image[BUTTON_COUNT]; rollover = new Image[BUTTON_COUNT]; active = new Image[BUTTON_COUNT]; - //state = new int[BUTTON_COUNT]; + int IMAGE_SIZE = 33; for (int i = 0; i < BUTTON_COUNT; i++) { inactive[i] = createImage(BUTTON_WIDTH, BUTTON_HEIGHT); Graphics g = inactive[i].getGraphics(); - g.drawImage(buttons, -(i*BUTTON_WIDTH), -2*BUTTON_HEIGHT, null); + g.drawImage(buttons, -(i*IMAGE_SIZE) - 3, -2*IMAGE_SIZE, null); rollover[i] = createImage(BUTTON_WIDTH, BUTTON_HEIGHT); g = rollover[i].getGraphics(); - g.drawImage(buttons, -(i*BUTTON_WIDTH), -1*BUTTON_HEIGHT, null); + g.drawImage(buttons, -(i*IMAGE_SIZE) - 3, -1*IMAGE_SIZE, null); active[i] = createImage(BUTTON_WIDTH, BUTTON_HEIGHT); g = active[i].getGraphics(); - g.drawImage(buttons, -(i*BUTTON_WIDTH), -0*BUTTON_HEIGHT, null); + g.drawImage(buttons, -(i*IMAGE_SIZE) - 3, -0*IMAGE_SIZE, null); } state = new int[buttonCount]; @@ -174,17 +154,18 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { width = size.width; height = size.height; - x1 = 0; - x2 = BUTTON_WIDTH; + y1 = 0; + y2 = BUTTON_HEIGHT; - y1 = new int[buttonCount]; - y2 = new int[buttonCount]; + x1 = new int[buttonCount]; + x2 = new int[buttonCount]; - int offsetY = 0; + int offsetX = 3; for (int i = 0; i < buttonCount; i++) { - y1[i] = offsetY; - y2[i] = offsetY + BUTTON_HEIGHT; - offsetY = y2[i]; + x1[i] = offsetX; + if (i == 2) x1[i] += BUTTON_GAP; + x2[i] = x1[i] + BUTTON_WIDTH; + offsetX = x2[i]; } } Graphics g = offscreen.getGraphics(); @@ -192,24 +173,24 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { g.fillRect(0, 0, width, height); for (int i = 0; i < buttonCount; i++) { - //g.drawImage(stateImage[i], x1[i], y1, null); - g.drawImage(stateImage[i], x1, y1[i], null); + g.drawImage(stateImage[i], x1[i], y1, null); } g.setColor(statusColor); g.setFont(statusFont); - // if i ever find the guy who wrote the java2d api, - // i will hurt him. or just laugh in his face. or pity him. + /* + // if i ever find the guy who wrote the java2d api, i will hurt him. Graphics2D g2 = (Graphics2D) g; FontRenderContext frc = g2.getFontRenderContext(); float statusW = (float) statusFont.getStringBounds(status, frc).getWidth(); float statusX = (getSize().width - statusW) / 2; - - //int statusWidth = g.getFontMetrics().stringWidth(status); - //int statusX = (getSize().width - statusWidth) / 2; - g2.drawString(status, statusX, statusY); + */ + //int statusY = (BUTTON_HEIGHT + statusFont.getAscent()) / 2; + int statusY = (BUTTON_HEIGHT + g.getFontMetrics().getAscent()) / 2; + g.drawString(status, buttonCount * BUTTON_WIDTH + 2 * BUTTON_GAP, statusY); + screen.drawImage(offscreen, 0, 0, null); } @@ -233,8 +214,8 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { public void handleMouse(int x, int y) { if (currentRollover != -1) { - if ((y > y1[currentRollover]) && (x > x1) && - (y < y2[currentRollover]) && (x < x2)) { + if ((x > x1[currentRollover]) && (y > y1) && + (x < x2[currentRollover]) && (y < y2)) { return; } else { @@ -258,13 +239,12 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { private int findSelection(int x, int y) { // if app loads slowly and cursor is near the buttons // when it comes up, the app may not have time to load - if ((y1 == null) || (y2 == null)) return -1; + if ((x1 == null) || (x2 == null)) return -1; for (int i = 0; i < buttonCount; i++) { - if ((x > x1) && (y > y1[i]) && - (x < x2) && (y < y2[i])) { - //if ((x > x1[i]) && (y > y1) && - //(x < x2[i]) && (y < y2)) { + if ((y > y1) && (x > x1[i]) && + (y < y2) && (x < x2[i])) { + //System.out.println("sel is " + i); return i; } } @@ -301,13 +281,7 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { if (state[OPEN] != INACTIVE) { setState(OPEN, INACTIVE, true); } - - // kludge - //for (int i = 0; i < BUTTON_COUNT; i++) { - //messageClear(title[i]); - //} status = ""; - //mouseMove(e); handleMouse(e.getX(), e.getY()); } @@ -405,6 +379,7 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { status = msg; } + public void messageClear(String msg) { //if (status.getText().equals(msg + " ")) status.setText(PdeEditor.EMPTY); if (status.equals(msg)) status = ""; @@ -412,6 +387,17 @@ public class PdeEditorButtons extends JComponent implements MouseInputListener { public Dimension getPreferredSize() { - return new Dimension(BUTTON_WIDTH, (BUTTON_COUNT + 1)*BUTTON_HEIGHT); + return new Dimension((BUTTON_COUNT + 1)*BUTTON_WIDTH, BUTTON_HEIGHT); + //return new Dimension(BUTTON_WIDTH, (BUTTON_COUNT + 1)*BUTTON_HEIGHT); + } + + + public Dimension getMinimumSize() { + return getPreferredSize(); + } + + + public Dimension getMaximumSize() { + return new Dimension(3000, BUTTON_HEIGHT); } } diff --git a/processing/app/PdeEditorHeader.java b/processing/app/PdeEditorHeader.java index 59d2e52be..ab63667f2 100644 --- a/processing/app/PdeEditorHeader.java +++ b/processing/app/PdeEditorHeader.java @@ -172,7 +172,8 @@ public class PdeEditorHeader extends JComponent { hideItem.setEnabled(sketch.current != sketch.code[0]); //int x = 0; //PdePreferences.GUI_SMALL; - int x = (PdeBase.platform == PdeBase.MACOSX) ? 0 : 1; + //int x = (PdeBase.platform == PdeBase.MACOSX) ? 0 : 1; + int x = 6; // offset from left edge of the component for (int i = 0; i < sketch.codeCount; i++) { PdeCode code = sketch.code[i]; diff --git a/processing/app/PdeSketchbook.java b/processing/app/PdeSketchbook.java index 953014969..2e4313a43 100644 --- a/processing/app/PdeSketchbook.java +++ b/processing/app/PdeSketchbook.java @@ -343,7 +343,8 @@ public class PdeSketchbook { // rebuild the popup menu menu.removeAll(); - item = new JMenuItem("Open..."); + //item = new JMenuItem("Open..."); + item = PdeEditor.newJMenuItem("Open...", 'O', false); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { editor.handleOpen(null); diff --git a/processing/build/shared/lib/buttons.gif b/processing/build/shared/lib/buttons.gif index f03ec8f90..2771340b9 100644 Binary files a/processing/build/shared/lib/buttons.gif and b/processing/build/shared/lib/buttons.gif differ diff --git a/processing/build/shared/lib/preferences.txt b/processing/build/shared/lib/preferences.txt index beff19655..c8c693f84 100755 --- a/processing/build/shared/lib/preferences.txt +++ b/processing/build/shared/lib/preferences.txt @@ -116,15 +116,15 @@ editor.eolmarkers.color=#99991A editor.invalid=false editor.invalid.style=#7E7E00,bold -buttons.bgcolor = #999988 -buttons.status.font = SansSerif,plain,10 -buttons.status.color = #333322 +buttons.bgcolor = #66665A +buttons.status.font = SansSerif,plain,12 +buttons.status.color = #FFFFFF # settings for the tabs at the top # actual tab images are stored in the lib/ folder -header.bgcolor = #4C4C3E -header.text.selected.color = #ffffff -header.text.unselected.color = #999988 +header.bgcolor = #999988 +header.text.selected.color = #1A1A00 +header.text.unselected.color = #ffffff header.text.font = SansSerif,plain,12 console = true @@ -146,7 +146,7 @@ console.auto_clear = true console.length = 500 status.notice.fgcolor = #ffffff -status.notice.bgcolor = #666666 +status.notice.bgcolor = #bbbbaa status.error.fgcolor = #ffffff status.error.bgcolor = #662000 status.prompt.fgcolor = #000000 @@ -239,3 +239,9 @@ preproc.imports.jdk14 = javax.xml.parsers,javax.xml.transform,javax.xml.transfor # set the browser to be used on linux browser.linux = mozilla + +# coloring for the editor line number status bar at the bottom of the screen +linestatus.bgcolor = #66665a +linestatus.font = SansSerif,plain,10 +linestatus.color = #ffffff +linestatus.height = 20 diff --git a/processing/build/shared/lib/tab-sel-left.gif b/processing/build/shared/lib/tab-sel-left.gif index 38b1f1e33..55afc0c5b 100644 Binary files a/processing/build/shared/lib/tab-sel-left.gif and b/processing/build/shared/lib/tab-sel-left.gif differ diff --git a/processing/build/shared/lib/tab-sel-menu.gif b/processing/build/shared/lib/tab-sel-menu.gif index e07c1ed61..47041280a 100644 Binary files a/processing/build/shared/lib/tab-sel-menu.gif and b/processing/build/shared/lib/tab-sel-menu.gif differ diff --git a/processing/build/shared/lib/tab-sel-mid.gif b/processing/build/shared/lib/tab-sel-mid.gif index e4c667734..3b2a9b674 100644 Binary files a/processing/build/shared/lib/tab-sel-mid.gif and b/processing/build/shared/lib/tab-sel-mid.gif differ diff --git a/processing/build/shared/lib/tab-sel-right.gif b/processing/build/shared/lib/tab-sel-right.gif index c5143be72..a6093c19d 100644 Binary files a/processing/build/shared/lib/tab-sel-right.gif and b/processing/build/shared/lib/tab-sel-right.gif differ diff --git a/processing/build/shared/lib/tab-unsel-left.gif b/processing/build/shared/lib/tab-unsel-left.gif index 988425f5d..a65d0a4b7 100644 Binary files a/processing/build/shared/lib/tab-unsel-left.gif and b/processing/build/shared/lib/tab-unsel-left.gif differ diff --git a/processing/build/shared/lib/tab-unsel-menu.gif b/processing/build/shared/lib/tab-unsel-menu.gif index 3c7015b57..14191969c 100644 Binary files a/processing/build/shared/lib/tab-unsel-menu.gif and b/processing/build/shared/lib/tab-unsel-menu.gif differ diff --git a/processing/build/shared/lib/tab-unsel-mid.gif b/processing/build/shared/lib/tab-unsel-mid.gif index 45ad47091..0590bf7e1 100644 Binary files a/processing/build/shared/lib/tab-unsel-mid.gif and b/processing/build/shared/lib/tab-unsel-mid.gif differ diff --git a/processing/build/shared/lib/tab-unsel-right.gif b/processing/build/shared/lib/tab-unsel-right.gif index 118023ae4..31b683eb0 100644 Binary files a/processing/build/shared/lib/tab-unsel-right.gif and b/processing/build/shared/lib/tab-unsel-right.gif differ diff --git a/processing/core/PApplet.java b/processing/core/PApplet.java index 7db0999be..70a84e645 100644 --- a/processing/core/PApplet.java +++ b/processing/core/PApplet.java @@ -532,9 +532,9 @@ public class PApplet extends Applet setBounds((winW - width)/2, insets.top + ((winH - insets.top - insets.bottom) - height)/2, winW, winH); - } else { + //} else { //System.out.println("frame was null"); - setBounds(0, 0, width, height); + //setBounds(0, 0, width, height); } } diff --git a/processing/core/todo.txt b/processing/core/todo.txt index e2c0e09c6..eed152892 100644 --- a/processing/core/todo.txt +++ b/processing/core/todo.txt @@ -1,8 +1,15 @@ 0079 core +_ size() doing a setBounds() is really bad +_ because it means things can't be embedded properly + _ printarr() of null array crashes without an error _ actually, errors from many crashes not coming through on the mac? +_ proper full screen code for present mode +_ why do mouse motion events go away in full screen mode +_ or with a Window object + createGraphics and placement issues _ make pappletgl work back inside papplet _ and then size(300, 300, DEPTH) etc diff --git a/processing/todo.txt b/processing/todo.txt index ad4d0b397..ffb541ca7 100644 --- a/processing/todo.txt +++ b/processing/todo.txt @@ -1,6 +1,10 @@ 0079 pde -_ implement horizontal version of PdeEditorButtons +X add ctrl-o to the open menu +X implement horizontal version of PdeEditorButtons _ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1076707944 +X add line numbers +X add extra space to bottom on osx + ...