1338 ! |
1338 ! |
1339 |
1339 |
1340 drawSnapAt:anIndex |
1340 drawSnapAt:anIndex |
1341 "draw the snap for a handle at an index |
1341 "draw the snap for a handle at an index |
1342 " |
1342 " |
1343 |layout icon level paint canChangeExtent |
1343 |layout icon level offLevel paint canChangeExtent |
1344 left "{ Class:SmallInteger }" |
1344 left "{ Class:SmallInteger }" |
1345 top "{ Class:SmallInteger }" |
1345 top "{ Class:SmallInteger }" |
1346 width "{ Class:SmallInteger }" |
1346 width "{ Class:SmallInteger }" |
1347 height "{ Class:SmallInteger }" |
1347 height "{ Class:SmallInteger }" |
1348 snapMode leftEdge wEdge topEdge hEdge part |
1348 snapMode leftEdge wEdge topEdge hEdge part wPart hPart |
1349 | |
1349 | |
1350 |
1350 |
1351 (layout := self snapLayoutAt:anIndex) isNil ifTrue:[ |
1351 (layout := self snapLayoutAt:anIndex) isNil ifTrue:[ |
1352 "snap disabled" |
1352 "snap disabled" |
1353 ^ self |
1353 ^ self |
1356 left := layout left. |
1356 left := layout left. |
1357 top := layout top. |
1357 top := layout top. |
1358 width := layout width. |
1358 width := layout width. |
1359 height := layout height. |
1359 height := layout height. |
1360 snapMode := self snapMode. |
1360 snapMode := self snapMode. |
|
1361 |
|
1362 offLevel := level := snapAdornment at:#level ifAbsent:0. |
1361 |
1363 |
1362 canChangeExtent := self canChangeExtentOfViewAt:anIndex. |
1364 canChangeExtent := self canChangeExtentOfViewAt:anIndex. |
1363 canChangeExtent ifTrue:[ |
1365 canChangeExtent ifTrue:[ |
1364 (controller isSnapEntered:anIndex) ifTrue:[ |
1366 (controller isSnapEntered:anIndex) ifTrue:[ |
1365 controller isSnapPressed ifTrue:[ |
1367 controller isSnapPressed ifTrue:[ |
1366 level := #selectedLevel. |
1368 level := #selectedLevel. |
1367 paint := #selectedBgColor. |
1369 paint := #selectedBgColor. |
1368 ] ifFalse:[ |
1370 ] ifFalse:[ |
1369 level := #enterLevel. |
1371 level := #enterLevel. |
1370 paint := #enterBgColor. |
1372 paint := #enterBgColor. |
1371 ] |
1373 ]. |
|
1374 level := snapAdornment at:level ifAbsent:0. |
1372 ] |
1375 ] |
1373 ]. |
1376 ]. |
1374 paint notNil ifTrue:[ |
1377 paint notNil ifTrue:[ |
1375 paint := snapAdornment at:paint ifAbsent:viewBackground |
1378 paint := snapAdornment at:paint ifAbsent:viewBackground |
1376 ] ifFalse:[ |
1379 ] ifFalse:[ |
1377 paint := viewBackground |
1380 paint := viewBackground |
1378 ]. |
1381 ]. |
1379 self paint:paint. |
1382 self paint:paint. |
|
1383 |
|
1384 level == 0 ifTrue:[ |
|
1385 ]. |
|
1386 |
1380 self fillRectangleX:left+1 y:top+1 width:width-2 height:height-2. |
1387 self fillRectangleX:left+1 y:top+1 width:width-2 height:height-2. |
1381 |
|
1382 level := snapAdornment at:(level ? #level) ifAbsent:0. |
|
1383 |
1388 |
1384 level ~~ 0 ifTrue:[ |
1389 level ~~ 0 ifTrue:[ |
1385 leftEdge := left + 1. |
1390 leftEdge := left + 1. |
1386 wEdge := width - 2. |
1391 wEdge := width - 2. |
1387 topEdge := top + 1. |
1392 topEdge := top + 1. |
1388 hEdge := height - 2. |
1393 hEdge := height - 2. |
1389 |
1394 |
|
1395 orientation == #vertical ifTrue:[ |
|
1396 wPart := width // 3. |
|
1397 ] ifFalse:[ |
|
1398 hPart := height // 3. |
|
1399 ]. |
|
1400 |
1390 level < 0 ifTrue:[ |
1401 level < 0 ifTrue:[ |
1391 part := (self subViews at:anIndex) objectAttributeAt:#snapPart. |
1402 part := (self subViews at:anIndex) objectAttributeAt:#snapPart. |
1392 part == #left ifTrue:[ |
1403 part == #left ifTrue:[ |
1393 self drawEdgesForX:leftEdge y:topEdge width:wEdge height:hEdge level:level negated. |
1404 self drawEdgesForX:leftEdge y:topEdge width:wEdge height:hEdge level:offLevel. |
1394 wEdge := width // 3. |
1405 wEdge := wPart. |
1395 ] ifFalse:[ |
1406 ] ifFalse:[ |
1396 part == #middle ifTrue:[ |
1407 part == #middle ifTrue:[ |
1397 self drawEdgesForX:leftEdge y:topEdge width:wEdge height:hEdge level:level negated. |
1408 self drawEdgesForX:leftEdge y:topEdge width:wEdge height:hEdge level:offLevel. |
1398 wEdge := width // 3. |
1409 leftEdge := leftEdge + wPart. |
1399 leftEdge := leftEdge + wEdge. |
1410 wEdge := wPart. |
1400 ] ifFalse:[ |
1411 ] ifFalse:[ |
1401 part == #right ifTrue:[ |
1412 part == #right ifTrue:[ |
1402 self drawEdgesForX:leftEdge y:topEdge width:wEdge height:hEdge level:level negated. |
1413 self drawEdgesForX:leftEdge y:topEdge width:wEdge height:hEdge level:offLevel. |
1403 wEdge := width // 3. |
1414 leftEdge := leftEdge + (width - wPart). |
1404 leftEdge := leftEdge + (width - wEdge). |
1415 wEdge := wPart. |
1405 ] |
1416 ] |
1406 ] |
1417 ] |
1407 ]. |
1418 ]. |
1408 ]. |
1419 ]. |
1409 self drawEdgesForX:leftEdge y:topEdge width:wEdge height:hEdge level:level. |
1420 self drawEdgesForX:leftEdge y:topEdge width:wEdge height:hEdge level:level. |