49
49
import org .broad .igv .track .RegionScoreType ;
50
50
import org .broad .igv .track .Track ;
51
51
import org .broad .igv .ui .IGV ;
52
+ import org .broad .igv .ui .color .ColorUtilities ;
52
53
import org .broad .igv .ui .panel .FrameManager ;
53
54
import org .broad .igv .ui .util .MessageUtils ;
54
55
import org .broad .igv .ui .util .SnapshotUtilities ;
@@ -166,6 +167,10 @@ public String execute(String command) {
166
167
result = this .setDataRange (param1 , param2 );
167
168
} else if (cmd .equalsIgnoreCase ("setLogScale" )) {
168
169
result = this .setLogScale (param1 , param2 );
170
+ } else if (cmd .equalsIgnoreCase ("setColor" )) {
171
+ result = this .setColor (param1 , param2 , false );
172
+ } else if (cmd .equalsIgnoreCase ("setAltColor" )) {
173
+ result = this .setColor (param1 , param2 , true );
169
174
} else if (cmd .equalsIgnoreCase ("maxpanelheight" ) && param1 != null ) {
170
175
return setMaxPanelHeight (param1 );
171
176
} else if (cmd .equalsIgnoreCase ("tofront" )) {
@@ -299,7 +304,7 @@ private String setDataRange(String dataRangeString, String trackName) {
299
304
(dataRangeString .trim ().equalsIgnoreCase ("auto" ) ||
300
305
dataRangeString .trim ().equalsIgnoreCase ("autoscale" ));
301
306
302
- if (!autoscale ) {
307
+ if (!autoscale ) {
303
308
try {
304
309
if (tokens .length == 2 ) {
305
310
range = new DataRange (Float .parseFloat (tokens [0 ]), Float .parseFloat (tokens [1 ]));
@@ -318,7 +323,7 @@ private String setDataRange(String dataRangeString, String trackName) {
318
323
319
324
for (Track track : tracks ) {
320
325
if (trackName == null || trackName .equalsIgnoreCase (track .getName ())) {
321
- if (!autoscale ) track .setDataRange (range );
326
+ if (!autoscale ) track .setDataRange (range );
322
327
track .setAutoScale (autoscale );
323
328
}
324
329
}
@@ -352,6 +357,32 @@ private String setLogScale(String logScaleString, String trackName) {
352
357
return "OK" ;
353
358
}
354
359
360
+ private String setColor (String colorString , String trackName , boolean alt ) {
361
+
362
+ try {
363
+ Color color = ColorUtilities .stringToColorNoDefault (colorString );
364
+ if (color == null ) {
365
+ return "Error: unrecognized color value " + colorString ;
366
+ }
367
+ List <Track > tracks = igv .getAllTracks ();
368
+ List <Track > affectedTracks = new ArrayList <>();
369
+ for (Track track : tracks ) {
370
+ if (trackName == null || trackName .equalsIgnoreCase (track .getName ())) {
371
+ if (alt ) track .setAltColor (color );
372
+ } else {
373
+ track .setColor (color );
374
+ }
375
+ affectedTracks .add (track );
376
+ }
377
+ igv .repaint (affectedTracks );
378
+ return "OK" ;
379
+ } catch (Exception e ) {
380
+ return "Error setting track color: " + e .getMessage ();
381
+ }
382
+
383
+
384
+ }
385
+
355
386
private String setViewAsPairs (String vAPString , String trackName ) {
356
387
List <Track > tracks = igv .getAllTracks ();
357
388
boolean vAP = "false" .equalsIgnoreCase (vAPString ) ? false : true ;
@@ -687,7 +718,7 @@ String loadFiles(final String fileString,
687
718
688
719
if (names != null ) {
689
720
rl .setName (names .get (fi ));
690
- } else if (isDataURL ) {
721
+ } else if (isDataURL ) {
691
722
rl .setName ("Data" );
692
723
}
693
724
if (indexFiles != null ) {
@@ -1016,20 +1047,19 @@ private String createSnapshot(String filename, String region) {
1016
1047
1017
1048
private String saveSession (String filename ) {
1018
1049
Session currentSession = igv .getSession ();
1019
- if (!filename .endsWith (".xml" )) {
1050
+ if (!filename .endsWith (".xml" )) {
1020
1051
filename = filename + ".xml" ;
1021
1052
}
1022
1053
File targetFile = new File (filename );
1023
- if (targetFile .getParentFile ().exists ()) {
1054
+ if (targetFile .getParentFile ().exists ()) {
1024
1055
currentSession .setPath (targetFile .getAbsolutePath ());
1025
1056
try {
1026
1057
(new SessionWriter ()).saveSession (currentSession , targetFile );
1027
1058
return "OK" ;
1028
1059
} catch (Exception e ) {
1029
1060
return "Error writingin sesssion: " + e .getMessage ();
1030
1061
}
1031
- }
1032
- else {
1062
+ } else {
1033
1063
return "Error: directory not found: " + targetFile .getParentFile ().getAbsolutePath ();
1034
1064
}
1035
1065
}
0 commit comments