# RAP + SWT/RWT: Skala erstellen



## sutcha (27. Mai 2009)

Hallo,

ich suche eine Möglichkeit, eine Skala mit SWT zu zeichnen, die aus unterschiedlichen, farbigen Rechtecken besteht. Innerhalb dieser Skala soll dann ein Punkt gezeichnet werden, der den genauen Wert darstellt.
z.B: Skala von 1-10, aktueller wert ist 5. Es werden 5 Rechtecke gezeichnet und in dem mittleren Rechteck (evtl. Grenze zwischen mittleren Rechteck und dem Rechteck links davon) befindet sich der Punkt (Markierung). 

Ich habe ein AWT-Beispiel:

```
for( int i=0; i<levels; i++){ // levels = Anzahl an Intervallwerten
	  			
	  				g.setColor(Color.WHITE);
	  				g.fillRect(24*i,0,24,24);
	  				
	  				if (i%2 == 0) {  // da jedes Rechteck 2 Intervallwerte darstellt
	  				g.setColor(colorXY);
	  		  		g.fillRect(24*i+1,1,22,22);
                                        }
	  		  		if(i==(level-1)){ // level ist der genaue Wert innerhalb des Intervalls 
	  		  			g.setColor(Color.BLUE); 
	  		 			g.fillOval(24*i+6,6,12,12);  		  		
	  		  		}
	  		}
```

Hoffe ihr habt mein Problem verstanden und könnt mir helfen.

Vielen Dank im Voraus!

PS: hat sich wahrscheinlich erledigt... Introduction to SWT Graphics


----------



## Gast2 (27. Mai 2009)

Könntest dir mal SWTChart oder JFreeChart anschauen... Oder wenn du selber zeichnen willst oder nimm das draw2D für eclipse  plugin...
hier hats paar Snippet für alles mögliche kannst ja mal durchstöbern
SWT Draw2D Example : 2DSWT JFace EclipseJava


----------



## sutcha (27. Mai 2009)

Ich hab irgendwie meine Bedenken, ob das auch mit RWT geht... ich habe mal ein paar Beispiele ausprobiert, aber es fehlen immer wieder ein paar Abhängigkeiten aus dem Graphics-Package. Da ich aber einige aus dem Package habe, vermute ich, dass das mit RWT also RAP-Anwendung nicht geht.


----------



## Gast2 (27. Mai 2009)

Von was redest du genau?


----------



## sutcha (27. Mai 2009)

naja, in Eclipse findet er z.B. den PaintListener nicht.


----------



## Gast2 (27. Mai 2009)

was benutzt du den??? draw2D??? Dann musst du natürlich das plugin(jar) herunterladen und auch miteinbinden... glaub mir draw2D ist viel viel einfacher...


----------



## Wildcard (27. Mai 2009)

In RAP kannst du keine PaintListener verwenden (ist auch irgendwie schwierig wahlfrei in eine Webapplication zu zeichnen).


----------



## sutcha (29. Mai 2009)

jetzt noch eine ganz dumme Frage: 

über PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_GREEN) bekomme ich ein grün. Was muss ich machen, damit ich einen Hex-Wert als Farbe angezeigt bekomme....


```
String hex = interval.getColor();
int colorValue = Integer.parseInt(hex,16);
```

Darüber bekomme ich zwar einen int, aber der hilft mir nicht weiter (SWT.COLOR_GEEN = 5, meine colorValue liegt im 65k-Bereich)

Gibt es eine andere Möglichtkeit eine Farbe zu setzen, ohne über die SystemColor zu gehen? ich habe nichts vernünftiges gefunden.


----------



## Wildcard (29. Mai 2009)

sutcha hat gesagt.:


> über PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_GREEN) bekomme ich ein grün. Was muss ich machen, damit ich einen Hex-Wert als Farbe angezeigt bekomme....


Damit lässt sich einfacher arbeiten:
Color (Eclipse Platform API Specification)



sutcha hat gesagt.:


> Gibt es eine andere Möglichtkeit eine Farbe zu setzen, ohne über die SystemColor zu gehen? ich habe nichts vernünftiges gefunden.


einfach new Color!?


----------



## sutcha (2. Jun 2009)

ja, das dachte ich auch...


```
RGB rgb = new RGB(131,134,141);
Color color = new Color(PlatformUI.getWorkbench().getDisplay(), rgb);
```

hier unterringelt mir Eclipse den Color-Constructor mit "no suggestions available". Das gleiche geschieht, wenn ich die RGB-Werte als Parameter übergebe. Irgendwann kommt dann bei Eclipse der Vorschlag "Remove to match constructor Color(int)". 

Ich habe "org.eclipse.swt.graphics.Color" importiert.


----------



## Wildcard (2. Jun 2009)

Du hast wahrscheinlich ein falsches RGB importiert?


----------



## sutcha (3. Jun 2009)

import org.eclipse.swt.graphics.RGB;

ich denke, dass sollte so passen. Der sagt mir ja auch immer, dass es nur einen Color(int) Konstruktor gibt... das ist doch nicht normal. Oder gibt es für RWT auch eine abgespackte Color-Klasse?


----------



## Wildcard (3. Jun 2009)

Hier ist er doch:
Color (Eclipse Platform API Specification)


----------



## sutcha (8. Jun 2009)

ja, die API kenn ich auch. Mir geht es darum, dass Eclipse mir dort einen Fehler anzeigt: kein entsprechender Konstruktor vorhanden, nur Color(int). Eigentlich sollte es genau umgekehrt sein, da es kein Color(int) in der API gibt.


----------



## Wildcard (8. Jun 2009)

Mach mal STRG+ Linksklick, muss ja auf irgendeine andere Klasse verweisen.


----------



## sutcha (9. Jun 2009)

es verweist auf org.eclipse.swt.graphics.Color 


```
/*******************************************************************************
 * Copyright (c) 2002, 2008 Innoopract Informationssysteme GmbH.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Innoopract Informationssysteme GmbH - initial API and implementation
 ******************************************************************************/
package org.eclipse.swt.graphics;

import org.eclipse.swt.internal.graphics.IColor;
import org.eclipse.rwt.graphics.Graphics;

/**
 * Instances of this class manage resources that implement SWT's RGB color 
 * model. 
 * 
 * <p>To create a color, use one of the <code>getColor</code> methods in class 
 * <code>Graphics</code> and either specify the individual color components as 
 * integers in the range 0 to 255 or provide an instance of an <code>RGB</code>.
 * </p>
 * 
 * @see RGB
 * @see Device#getSystemColor
 * @see Graphics
 * 
 * @since 1.0
 */
public class Color extends Resource {

  /* (intentionally non-JavaDoc'ed)
   * Extension of class <code>Color</code> with an additional method that
   * returns a color id to pass to qooxdoo.
   * NOTE: Don't remove this class. Despite a possible warning that this class 
   * is never used locally - it IS. See ResourceFactory#createColorInstance.
   */
  private static class ColorExt extends Color implements IColor {

    private final String colorValue;

    private ColorExt( final int colorNr ) {
      super( colorNr );
      StringBuffer buffer = new StringBuffer();
      buffer.append( "#" );
      append( buffer, Integer.toHexString( getRed() ) );
      append( buffer, Integer.toHexString( getGreen() ) );
      append( buffer, Integer.toHexString( getBlue() ) );
      colorValue = buffer.toString();
    }

    private void append( final StringBuffer buffer, final String value ) {
      if( value.length() == 1  ) {
        buffer.append( "0" );
      }
      buffer.append( value );
    }

    public String toColorValue() {
      return colorValue;
    }
  }

  /**
   * Holds the color values within one integer.
   */
  private int colorNr;

  /**
   * Prevents uninitialized instances from being created outside the package.
   */
  private Color( final int colorNr ) {
    this.colorNr = colorNr;
  }

  /**
   * Returns the amount of blue in the color, from 0 to 255.
   *
   * @return the blue component of the color
   * @exception SWTException
   *              <ul>
   *              <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been
   *              disposed</li>
   *              </ul>
   */
  public int getBlue() {
    return ( colorNr & 0xFF0000 ) >> 16;
  }

  /**
   * Returns the amount of green in the color, from 0 to 255.
   *
   * @return the green component of the color
   * @exception SWTException
   *              <ul>
   *              <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been
   *              disposed</li>
   *              </ul>
   */
  public int getGreen() {
    return ( colorNr & 0xFF00 ) >> 8;
  }

  /**
   * Returns the amount of red in the color, from 0 to 255.
   *
   * @return the red component of the color
   * @exception SWTException
   *              <ul>
   *              <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been
   *              disposed</li>
   *              </ul>
   */
  public int getRed() {
    return colorNr & 0xFF;
  }

  /**
   * Returns an <code>RGB</code> representing the receiver.
   *
   * @return the RGB for the color
   * @exception SWTException
   *              <ul>
   *              <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been
   *              disposed</li>
   *              </ul>
   */
  public RGB getRGB() {
    return new RGB( getRed(), getGreen(), getBlue() );
  }

  /**
   * Compares the argument to the receiver, and returns true if they represent
   * the <em>same</em> object using a class specific comparison.
   *
   * @param object the object to compare with this object
   * @return <code>true</code> if the object is the same as this object and
   *         <code>false</code> otherwise
   * @see #hashCode
   */
  public boolean equals( final Object object ) {
    return object == this;
  }

  /**
   * Returns an integer hash code for the receiver. Any two objects that return
   * <code>true</code> when passed to <code>equals</code> must return the
   * same value for this method.
   *
   * @return the receiver's hash
   * @see #equals
   */
  public int hashCode() {
    return colorNr;
  }

  /**
   * Returns a string containing a concise, human-readable description of the
   * receiver.
   *
   * @return a string representation of the receiver
   */
  public String toString() {
    return "Color {" + getRed() + ", " + getGreen() + ", " + getBlue() + "}";
  }
}
```


----------



## Wildcard (9. Jun 2009)

ahhhhh


> Copyright (c) 2002, 2008 Innoopract Informationssysteme GmbH.


Da wird das ganze Color ausgetauscht... 
Dann ist's klar


----------

