具有不同语法高亮的编辑器实例

源代码在线查看: beveldividerborder.java

软件大小: 4021 K
上传用户: johni
关键词: 编辑器
下载地址: 免注册下载 普通下载 VIP

相关代码

				/*
				 * 09/08/2004
				 *
				 * BevelDividerBorder.java - A border that is really just a bevel "divider" on
				 *                           one of the component's sides.
				 * Copyright (C) 2004 Robert Futrell
				 * email@address.com
				 * www.website.com
				 *
				 * 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 2
				 * of the License, or 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, write to the Free Software
				 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
				 */
				package org.fife.ui;
				
				import java.awt.Color;
				import java.awt.Component;
				import java.awt.Graphics;
				import java.awt.Insets;
				import javax.swing.SwingConstants;
				import javax.swing.border.Border;
				
				
				/**
				 * A "border" that is actually just a bevel "divider" like those found in many
				 * Microsoft Windows applications.  The border can be placed on any of the four
				 * sides of a component.
				 *
				 * @author Robert Futrell
				 * @version 0.8
				 */
				public class BevelDividerBorder implements Border, SwingConstants {
					
					private int location;
					private int slack;
					private Color light;
					private Color dark;
					private Insets insets;
				
				
				/*****************************************************************************/
				
				
					/**
					 * Creates a bevel divider border on the specified side of the panel.
					 *
					 * @param location One of SwingConstants.TOP,
					 *                 LEFT, BOTTOM,
					 *                 or RIGHT.
					 */
					public BevelDividerBorder(int location) {
						this(location, 0);
					}
				
				
				/*****************************************************************************/
				
				
					/**
					 * Creates a bevel divider border on the specified side of the panel with
					 * the specified "slack" on either side.
					 *
					 * @param location One of SwingConstants.TOP,
					 *                 LEFT, BOTTOM,
					 *                 or RIGHT.
					 * @param slack How much empty space to leave on either side of the
					 *              divider.
					 */
					public BevelDividerBorder(int location, int slack) {
						this(location, slack, null, null);
					}
				
				
				/*****************************************************************************/
				
				
					/**
					 * Creates a bevel divider border on the specified side of the panel with
					 * the specified "slack" on either side.
					 *
					 * @param location One of SwingConstants.TOP,
					 *                 LEFT, BOTTOM,
					 *                 or RIGHT.
					 * @param slack How much empty space to leave on either side of the
					 *              divider.
					 * @param light The lighter color to use in the bevel.
					 * @param dark The darker color to use in the bevel.
					 */
					public BevelDividerBorder(int location, int slack, Color light,
											Color dark) {
				
						if (locationRIGHT)
							location = BOTTOM;
				
						this.location = location;
						this.slack = slack;
						this.light = light;
						this.dark = dark;
				
						insets = new Insets(0,0,0,0);
						switch (location) {
							case TOP:
								insets.top = 2;
								break;
							case LEFT:
								insets.left = 2;
								break;
							case BOTTOM:
								insets.bottom = 2;
								break;
							case RIGHT:
								insets.right = 2;
						}
				
					}
				
				
				/*****************************************************************************/
				
				
					/**
					 * Returns the insets of the border.
					 *
					 * @param c Not used.
					 */
					public Insets getBorderInsets(Component c) {
						return insets;
					}
				
				
				/*****************************************************************************/
				
				
					/**
					 * Returns whether or not the border is opaque.
					 *
					 * @return This method always returns true.
					 */
					public boolean isBorderOpaque() {
						return true;
					}
				
				
				/*****************************************************************************/
				
				
					/**
					 * Paints the border for the specified component with the specified
					 * position and size.
					 *
					 * @param c The component that has this border.
					 * @param g The graphics context with which to paint.
					 * @param x The x-coordinate of the border.
					 * @param y The y-coordinate of the border.
					 * @param width The width of the component.
					 * @param height The height of the component.
					 */
					public void paintBorder(Component c, Graphics g, int x, int y, int width,
										int height) {
				
						// If the divider would be "inverted" or not show up, just don't
						// bother painting.
						if (width 							return;
				
						int x1, y1, x2, y2;
						int xinc, yinc;
				
						switch (location) {
				
							case TOP:
								x1 = x + slack;
								y1 = y;
								x2 = (x+width-slack) - 2;
								y2 = y;
								xinc = 0;
								yinc = 1;
								break;
				
							case LEFT:
								x1 = x;
								y1 = y + slack;
								x2 = x;
								y2 = (y+height-slack) - 2;
								xinc = 1;
								yinc = 0;
								break;
				
							case BOTTOM:
								x1 = x + slack;
								y1 = y + height - 2;
								x2 = (x+width-slack) - 2;
								y2 = y1;
								xinc = 0;
								yinc = 1;
								break;
				
							default: // case RIGHT:
								x1 = x + width - 2;
								y1 = y + slack;
								x2 = x1;
								y2 = (y+height-slack) - 2;
								xinc = 1;
								yinc = 0;
								break;
				
						}
				
						g.setColor(dark==null ? c.getBackground().darker() : dark);
						g.drawLine(x1,y1, x2,y2);
						g.setColor(light==null ? c.getBackground().brighter() : light);
						g.drawLine(x1+xinc,y1+yinc, x2+xinc,y2+yinc);
						
					}
				
				
				/*****************************************************************************/
				
				}			

相关资源